IyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgTk1BS0UgRmlsZSwgQmFzZWQgb24gZGpwZWcuZHNwDQohSUYgIiQoQ0ZHKSIgPT0gIiINCkNGRz1kanBlZyAtIFdpbjMyDQohTUVTU0FHRSBLZWluZSBLb25maWd1cmF0aW9uIGFuZ2VnZWJlbi4gZGpwZWcgLSBXaW4zMiB3aXJkIGFscyBTdGFuZGFyZCB2ZXJ3ZW5kZXQuDQohRU5ESUYgDQoNCiFJRiAiJChDRkcpIiAhPSAiZGpwZWcgLSBXaW4zMiINCiFNRVNTQUdFIFVuZ/xsdGlnZSBLb25maWd1cmF0aW9uICIkKENGRykiIGFuZ2VnZWJlbi4NCiFNRVNTQUdFIFNpZSBr9m5uZW4gYmVpbSBBdXNm/GhyZW4gdm9uIE5NQUtFIGVpbmUgS29uZmlndXJhdGlvbiBhbmdlYmVuDQohTUVTU0FHRSBkdXJjaCBEZWZpbmllcmVuIGRlcyBNYWtyb3MgQ0ZHIGluIGRlciBCZWZlaGxzemVpbGUuIFp1bSBCZWlzcGllbDoNCiFNRVNTQUdFIA0KIU1FU1NBR0UgTk1BS0UgL2YgImRqcGVnLm1hayIgQ0ZHPSJkanBlZyAtIFdpbjMyIg0KIU1FU1NBR0UgDQohTUVTU0FHRSBG/HIgZGllIEtvbmZpZ3VyYXRpb24gc3RlaGVuIHp1ciBBdXN3YWhsOg0KIU1FU1NBR0UgDQohTUVTU0FHRSAiZGpwZWcgLSBXaW4zMiIgKGJhc2llcmVuZCBhdWYgICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCiFNRVNTQUdFIA0KIUVSUk9SIEVpbmUgdW5n/Gx0aWdlIEtvbmZpZ3VyYXRpb24gd3VyZGUgYW5nZWdlYmVuLg0KIUVORElGIA0KDQohSUYgIiQoT1MpIiA9PSAiV2luZG93c19OVCINCk5VTEw9DQohRUxTRSANCk5VTEw9bnVsDQohRU5ESUYgDQoNCkNQUD1jbC5leGUNClJTQz1yYy5leGUNCk9VVERJUj0uXGRqcGVnXFJlbGVhc2UNCklOVERJUj0uXGRqcGVnXFJlbGVhc2UNCiMgQmVnaW4gQ3VzdG9tIE1hY3Jvcw0KT3V0RGlyPS5cZGpwZWdcUmVsZWFzZQ0KIyBFbmQgQ3VzdG9tIE1hY3Jvcw0KDQpBTEwgOiAiJChPVVRESVIpXGRqcGVnLmV4ZSINCg0KDQpDTEVBTiA6DQoJLUBlcmFzZSAiJChJTlRESVIpXGNkanBlZy5vYmoiDQoJLUBlcmFzZSAiJChJTlRESVIpXGRqcGVnLm9iaiINCgktQGVyYXNlICIkKElOVERJUilccmRjb2xtYXAub2JqIg0KCS1AZXJhc2UgIiQoSU5URElSKVx2YzYwLmlkYiINCgktQGVyYXNlICIkKElOVERJUilcd3JibXAub2JqIg0KCS1AZXJhc2UgIiQoSU5URElSKVx3cmdpZi5vYmoiDQoJLUBlcmFzZSAiJChJTlRESVIpXHdycHBtLm9iaiINCgktQGVyYXNlICIkKElOVERJUilcd3JybGUub2JqIg0KCS1AZXJhc2UgIiQoSU5URElSKVx3cnRhcmdhLm9iaiINCgktQGVyYXNlICIkKE9VVERJUilcZGpwZWcuZXhlIg0KDQoiJChPVVRESVIpIiA6DQogICAgaWYgbm90IGV4aXN0ICIkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIiQoT1VURElSKSINCg0KQlNDMzI9YnNjbWFrZS5leGUNCkJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChPVVRESVIpXGRqcGVnLmJzYyIgDQpCU0MzMl9TQlJTPSBcDQoJDQpMSU5LMzI9bGluay5leGUNCkxJTkszMl9GTEFHUz1SZWxlYXNlXGpwZWcubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIkKE9VVERJUilcZGpwZWcucGRiIiAvbWFjaGluZTpJMzg2IC9vdXQ6IiQoT1VURElSKVxkanBlZy5leGUiIA0KTElOSzMyX09CSlM9IFwNCgkiJChJTlRESVIpXGNkanBlZy5vYmoiIFwNCgkiJChJTlRESVIpXGRqcGVnLm9iaiIgXA0KCSIkKElOVERJUilccmRjb2xtYXAub2JqIiBcDQoJIiQoSU5URElSKVx3cmJtcC5vYmoiIFwNCgkiJChJTlRESVIpXHdyZ2lmLm9iaiIgXA0KCSIkKElOVERJUilcd3JwcG0ub2JqIiBcDQoJIiQoSU5URElSKVx3cnJsZS5vYmoiIFwNCgkiJChJTlRESVIpXHdydGFyZ2Eub2JqIg0KDQoiJChPVVRESVIpXGRqcGVnLmV4ZSIgOiAiJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJTkszMl9PQkpTKQ0KICAgICQoTElOSzMyKSBAPDwNCiAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpDQo8PA0KDQpDUFBfUFJPSj0vbm9sb2dvIC9HNiAvTVQgL1czIC9HWCAvT3ggL09hIC9PYjIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GcCIkKElOVERJUilcZGpwZWcucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwiIC9GRCAvYyANCg0KLmN7JChJTlRESVIpfS5vYmo6Og0KICAgJChDUFApIEA8PA0KICAgJChDUFBfUFJPSikgJDwgDQo8PA0KDQouY3BweyQoSU5URElSKX0ub2JqOjoNCiAgICQoQ1BQKSBAPDwNCiAgICQoQ1BQX1BST0opICQ8IA0KPDwNCg0KLmN4eHskKElOVERJUil9Lm9iajo6DQogICAkKENQUCkgQDw8DQogICAkKENQUF9QUk9KKSAkPCANCjw8DQoNCi5jeyQoSU5URElSKX0uc2JyOjoNCiAgICQoQ1BQKSBAPDwNCiAgICQoQ1BQX1BST0opICQ8IA0KPDwNCg0KLmNwcHskKElOVERJUil9LnNicjo6DQogICAkKENQUCkgQDw8DQogICAkKENQUF9QUk9KKSAkPCANCjw8DQoNCi5jeHh7JChJTlRESVIpfS5zYnI6Og0KICAgJChDUFApIEA8PA0KICAgJChDUFBfUFJPSikgJDwgDQo8PA0KDQoNCiFJRiAiJChOT19FWFRFUk5BTF9ERVBTKSIgIT0gIjEiDQohSUYgRVhJU1RTKCJkanBlZy5kZXAiKQ0KIUlOQ0xVREUgImRqcGVnLmRlcCINCiFFTFNFIA0KIU1FU1NBR0UgV2FybmluZzogY2Fubm90IGZpbmQgImRqcGVnLmRlcCINCiFFTkRJRiANCiFFTkRJRiANCg0KDQohSUYgIiQoQ0ZHKSIgPT0gImRqcGVnIC0gV2luMzIiDQpTT1VSQ0U9LlxjZGpwZWcuYw0KDQoiJChJTlRESVIpXGNkanBlZy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiDQoNCg0KU09VUkNFPS5cZGpwZWcuYw0KDQoiJChJTlRESVIpXGRqcGVnLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSINCg0KDQpTT1VSQ0U9LlxyZGNvbG1hcC5jDQoNCiIkKElOVERJUilccmRjb2xtYXAub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIg0KDQoNClNPVVJDRT0uXHdyYm1wLmMNCg0KIiQoSU5URElSKVx3cmJtcC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiDQoNCg0KU09VUkNFPS5cd3JnaWYuYw0KDQoiJChJTlRESVIpXHdyZ2lmLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSINCg0KDQpTT1VSQ0U9Llx3cnBwbS5jDQoNCiIkKElOVERJUilcd3JwcG0ub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIg0KDQoNClNPVVJDRT0uXHdycmxlLmMNCg0KIiQoSU5URElSKVx3cnJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiDQoNCg0KU09VUkNFPS5cd3J0YXJnYS5jDQoNCiIkKElOVERJUilcd3J0YXJnYS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiDQoNCg0KDQohRU5ESUYgDQoNCg==