المهام والمتابعات الميدانية
تكليف بوقت وموقع، إثبات حضور وإنجاز، مرفقات وشير كامل للمسؤول.
إضافة مهمة
تحديث
KCgpPT57Cid1c2Ugc3RyaWN0JzsKY29uc3QgYXBwPXdpbmRvdy5MQVdBSV9BUFAscm9vdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF3YWlUYXNrc1Jvb3QnKTtpZighYXBwfHwhcm9vdClyZXR1cm47CmNvbnN0ICQ9aWQ9PnJvb3QucXVlcnlTZWxlY3RvcignIycraWQpLHFhPShzLHI9cm9vdCk9PlsuLi5yLnF1ZXJ5U2VsZWN0b3JBbGwocyldLGVzYz12PT5hcHAuZXNjYXBlSHRtbCh2Pz8nJyksc3RhdGU9KCk9PmFwcC5nZXRTdGF0ZSgpLG5vd0lzbz0oKT0+bmV3IERhdGUoKS50b0lTT1N0cmluZygpOwpsZXQgZmlsdGVyPSdvcGVuJyxzZWFyY2g9JycsYXR0YWNoU2VxPTAsdGltZXI9bnVsbDsKY29uc3QgTE9DQVRJT05TX0FQST0naHR0cHM6Ly9mbG93Lm9yZHJhdC5uZXQvd2ViaG9vay9sYXd5ZXItYWktbG9jYXRpb25zJzsKY29uc3QgTE9DQVRJT05TX0RFRkFVTFQ9W3siaWQiOiJHTE9CQUwtQ09VUlQtUEFMQUNFLUpVU1RJQ0UiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YLYtdixINin2YTYudiv2YQg4oCTINin2YTYudin2LXZhdipIiwiY2F0ZWdvcnkiOiLZhdit2KfZg9mFIiwiZ292ZXJub3JhdGUiOiLYp9mE2LnYp9i12YXYqSIsImFkZHJlc3MiOiLYp9mE2YPZiNmK2KrYjCDYp9mE2YLYqNmE2KnYjCDZgti32LnYqSAxNdiMINi02KfYsdi5INi52YTZiiDYp9mE2LPYp9mE2YXYjCDZgti12LEg2KfZhNi52K/ZhCIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6dHJ1ZX0seyJpZCI6IkdMT0JBTC1DT1VSVC1GQVJXQU5JWUEiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrNmF2Lkg2YXYrdin2YPZhSDYp9mE2YHYsdmI2KfZhtmK2KkiLCJjYXRlZ29yeSI6ItmF2K3Yp9mD2YUiLCJnb3Zlcm5vcmF0ZSI6Itin2YTZgdix2YjYp9mG2YrYqSIsImFkZHJlc3MiOiLYp9mE2LHZgti52YrYjCDZgti32LnYqSAy2Iwg2LTYp9ix2Lkg2LPYp9ix2Yog2YXZhtin2YjYsSDYp9mE2KvZiNmK2YXYsdiMINmC2LPZitmF2KkgOTAwMDMw2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6ItmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjp0cnVlfSx7ImlkIjoiR0xPQkFMLUNPVVJULUhBV0FMTEkiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrNmF2Lkg2YXYrdin2YPZhSDYrdmI2YTZiiDYp9mE2KzYr9mK2K/YqSIsImNhdGVnb3J5Ijoi2YXYrdin2YPZhSIsImdvdmVybm9yYXRlIjoi2K3ZiNmE2YoiLCJhZGRyZXNzIjoi2K3ZiNmE2YrYjCDZgti32LnYqSAz2Iwg2LTYp9ix2LkgNzbYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOnRydWV9LHsiaWQiOiJHTE9CQUwtQ09VUlQtSkFIUkEiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrNmF2Lkg2YXYrdin2YPZhSDYp9mE2KzZh9ix2KfYoSIsImNhdGVnb3J5Ijoi2YXYrdin2YPZhSIsImdvdmVybm9yYXRlIjoi2KfZhNis2YfYsdin2KEiLCJhZGRyZXNzIjoi2LTZhdin2YQg2LrYsdioINin2YTYrNmH2LHYp9ih2Iwg2YLYt9i52KkgMdiMINi02KfYsdi5INmF2LHYstmI2YIg2KfZhNmF2KrYudio2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6ItmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjp0cnVlfSx7ImlkIjoiR0xPQkFMLUNPVVJULUFITUFESSIsIm9mZmljZV9pZCI6IkdMT0JBTCIsIm5hbWUiOiLZhdis2YXYuSDZhdit2KfZg9mFINin2YTYo9it2YXYr9mKIiwiY2F0ZWdvcnkiOiLZhdit2KfZg9mFIiwiZ292ZXJub3JhdGUiOiLYp9mE2KPYrdmF2K/ZiiIsImFkZHJlc3MiOiLYrNmG2YjYqCDYp9mE2LXYqNin2K3Zitip2Iwg2YLYt9i52KkgMdiMINmF2KjZhtmJINmF2K3Yp9mD2YUg2KfZhNij2K3Zhdiv2YrYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOnRydWV9LHsiaWQiOiJHTE9CQUwtRkFNSUxZLUNBUElUQUwiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrdmD2YXYqSDYp9mE2KPYs9ix2Kkg4oCTINin2YTYudin2LXZhdipIiwiY2F0ZWdvcnkiOiLZhdit2KfZg9mFINin2YTYo9iz2LHYqSIsImdvdmVybm9yYXRlIjoi2KfZhNi52KfYtdmF2KkiLCJhZGRyZXNzIjoi2YXYrdmD2YXYqSDYp9mE2KPYs9ix2Kkg2KfZhNi52KfYtdmF2KnYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2K/ZhNmK2YQg2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLUZBTUlMWS1IQVdBTExJIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmF2K3Zg9mF2Kkg2KfZhNij2LPYsdipIOKAkyDYrdmI2YTZiiIsImNhdGVnb3J5Ijoi2YXYrdin2YPZhSDYp9mE2KPYs9ix2KkiLCJnb3Zlcm5vcmF0ZSI6Itit2YjZhNmKIiwiYWRkcmVzcyI6ItmF2K3Zg9mF2Kkg2KfZhNij2LPYsdipINit2YjZhNmK2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itiv2YTZitmEINmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1GQU1JTFktRkFSV0FOSVlBIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmF2K3Zg9mF2Kkg2KfZhNij2LPYsdipIOKAkyDYp9mE2YHYsdmI2KfZhtmK2KkiLCJjYXRlZ29yeSI6ItmF2K3Yp9mD2YUg2KfZhNij2LPYsdipIiwiZ292ZXJub3JhdGUiOiLYp9mE2YHYsdmI2KfZhtmK2KkiLCJhZGRyZXNzIjoi2YXYrdmD2YXYqSDYp9mE2KPYs9ix2Kkg2KfZhNmB2LHZiNin2YbZitip2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itiv2YTZitmEINmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1GQU1JTFktSkFIUkEiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrdmD2YXYqSDYp9mE2KPYs9ix2Kkg4oCTINin2YTYrNmH2LHYp9ihIiwiY2F0ZWdvcnkiOiLZhdit2KfZg9mFINin2YTYo9iz2LHYqSIsImdvdmVybm9yYXRlIjoi2KfZhNis2YfYsdin2KEiLCJhZGRyZXNzIjoi2YXYrdmD2YXYqSDYp9mE2KPYs9ix2Kkg2KfZhNis2YfYsdin2KHYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2K/ZhNmK2YQg2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLUZBTUlMWS1BSE1BREkiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrdmD2YXYqSDYp9mE2KPYs9ix2Kkg4oCTINin2YTYo9it2YXYr9mKIiwiY2F0ZWdvcnkiOiLZhdit2KfZg9mFINin2YTYo9iz2LHYqSIsImdvdmVybm9yYXRlIjoi2KfZhNij2K3Zhdiv2YoiLCJhZGRyZXNzIjoi2YXYrdmD2YXYqSDYp9mE2KPYs9ix2Kkg2KfZhNij2K3Zhdiv2YrYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2K/ZhNmK2YQg2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLUZBTUlMWS1NVUJBUkFLIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmF2K3Zg9mF2Kkg2KfZhNij2LPYsdipIOKAkyDZhdio2KfYsdmDINin2YTZg9io2YrYsSIsImNhdGVnb3J5Ijoi2YXYrdin2YPZhSDYp9mE2KPYs9ix2KkiLCJnb3Zlcm5vcmF0ZSI6ItmF2KjYp9ix2YMg2KfZhNmD2KjZitixIiwiYWRkcmVzcyI6ItmF2K3Zg9mF2Kkg2KfZhNij2LPYsdipINmF2KjYp9ix2YMg2KfZhNmD2KjZitix2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itiv2YTZitmEINmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1QUk9TRUNVVElPTi1IUSIsIm9mZmljZV9pZCI6IkdMT0JBTCIsIm5hbWUiOiLZhdio2YbZiSDYp9mE2YbZitin2KjYqSDYp9mE2LnYp9mF2Kkg4oCTINin2YTYtNmI2YrYriIsImNhdGVnb3J5Ijoi2KfZhNmG2YrYp9io2KfYqiIsImdvdmVybm9yYXRlIjoi2KfZhNi52KfYtdmF2KkiLCJhZGRyZXNzIjoi2KfZhNi02YjZitiuINin2YTYpdiv2KfYsdmK2KnYjCDZgti32LnYqSA22Iwg2YLYs9mK2YXYqSAxMiDYsdiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6dHJ1ZX0seyJpZCI6IkdMT0JBTC1BVFRPUk5FWS1HRU5FUkFMIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmF2YPYqtioINin2YTZhdit2KfZhdmKINin2YTYudin2YUg4oCTINin2YTYtNmI2YrYriIsImNhdGVnb3J5Ijoi2KfZhNmG2YrYp9io2KfYqiIsImdvdmVybm9yYXRlIjoi2KfZhNi52KfYtdmF2KkiLCJhZGRyZXNzIjoi2KfZhNi02YjZitiuINin2YTYpdiv2KfYsdmK2KnYjCDZgti32LnYqSA22Iwg2YLYs9mK2YXYqSA5MDAwMzHYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOnRydWV9LHsiaWQiOiJHTE9CQUwtSlVWRU5JTEUtUFJPU0VDVVRJT04iLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YbZitin2KjYqSDYp9mE2KPYrdiv2KfYqyIsImNhdGVnb3J5Ijoi2KfZhNmG2YrYp9io2KfYqiIsImdvdmVybm9yYXRlIjoi2KfZhNi52KfYtdmF2KkiLCJhZGRyZXNzIjoi2KfZhNmF2YbYt9mC2Kkg2KfZhNi12K3Zitip2Iwg2YLYt9i52KkgMdiMINiv2YjYp9ixINin2YTYo9mF2YUg2KfZhNmF2KrYrdiv2KnYjCDYt9ix2YrZgiDYutix2YbYp9i32Kkg2KfZhNi02LHZgtmK2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6ItmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjp0cnVlfSx7ImlkIjoiR0xPQkFMLUZBTUlMWS1QUk9TRUNVVElPTiIsIm9mZmljZV9pZCI6IkdMT0JBTCIsIm5hbWUiOiLZhtmK2KfYqNipINi02KTZiNmGINin2YTYo9iz2LHYqSIsImNhdGVnb3J5Ijoi2KfZhNmG2YrYp9io2KfYqiIsImdvdmVybm9yYXRlIjoi2KfZhNi52KfYtdmF2KkiLCJhZGRyZXNzIjoi2KfZhNmC2KjZhNip2Iwg2YLYt9i52KkgMTXYjCDYtNin2LHYuSDYudmE2Yog2KfZhNiz2KfZhNmF2Iwg2YLYtdixINin2YTYudiv2YTYjCDYp9mE2K/ZiNixINin2YTYo9ix2LbZitiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6dHJ1ZX0seyJpZCI6IkdMT0JBTC1QUk9TRUNVVElPTi1GQVJXQU5JWUEiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YbZitin2KjYqSDYp9mE2YHYsdmI2KfZhtmK2KkiLCJjYXRlZ29yeSI6Itin2YTZhtmK2KfYqNin2KoiLCJnb3Zlcm5vcmF0ZSI6Itin2YTZgdix2YjYp9mG2YrYqSIsImFkZHJlc3MiOiLYp9mE2LHZgti52YrYjCDZgti32LnYqSAy2Iwg2LTYp9ix2Lkg2LPYp9ix2Yog2YXZhtin2YjYsSDYp9mE2KvZiNmK2YXYsdiMINmF2KjZhtmJINmF2K3Yp9mD2YUg2KfZhNmB2LHZiNin2YbZitip2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6ItmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjp0cnVlfSx7ImlkIjoiR0xPQkFMLVBST1NFQ1VUSU9OLUhBV0FMTEkiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YbZitin2KjYqSDYrdmI2YTZiiIsImNhdGVnb3J5Ijoi2KfZhNmG2YrYp9io2KfYqiIsImdvdmVybm9yYXRlIjoi2K3ZiNmE2YoiLCJhZGRyZXNzIjoi2YXYrNmF2Lkg2YXYrdin2YPZhSDYrdmI2YTZiiDYp9mE2KzYr9mK2K/YqdiMINit2YjZhNmK2Iwg2YLYt9i52KkgM9iMINi02KfYsdi5IDc22Iwg2KfZhNiv2YjYsSAyNCDZiDI12Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6ItmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjp0cnVlfSx7ImlkIjoiR0xPQkFMLVBST1NFQ1VUSU9OLUpBSFJBIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmG2YrYp9io2Kkg2KfZhNis2YfYsdin2KEiLCJjYXRlZ29yeSI6Itin2YTZhtmK2KfYqNin2KoiLCJnb3Zlcm5vcmF0ZSI6Itin2YTYrNmH2LHYp9ihIiwiYWRkcmVzcyI6Iti02YXYp9mEINi62LHYqCDYp9mE2KzZh9ix2KfYodiMINmC2LfYudipIDHYjCDYtNin2LHYuSDZhdix2LLZiNmCINin2YTZhdiq2LnYqNiMINmF2KjZhtmJINmF2KzZhdi5INmF2K3Yp9mD2YUg2KfZhNis2YfYsdin2KHYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOnRydWV9LHsiaWQiOiJHTE9CQUwtUFJPU0VDVVRJT04tQUhNQURJIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmG2YrYp9io2Kkg2KfZhNij2K3Zhdiv2YoiLCJjYXRlZ29yeSI6Itin2YTZhtmK2KfYqNin2KoiLCJnb3Zlcm5vcmF0ZSI6Itin2YTYo9it2YXYr9mKIiwiYWRkcmVzcyI6Itis2YbZiNioINin2YTYtdio2KfYrdmK2KnYjCDZgti32LnYqSAx2Iwg2YXYqNmG2Ykg2YXYrdin2YPZhSDYp9mE2KPYrdmF2K/ZitiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6dHJ1ZX0seyJpZCI6IkdMT0JBTC1QUk9TRUNVVElPTi1NVUJBUkFLIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmG2YrYp9io2Kkg2YXYqNin2LHZgyDYp9mE2YPYqNmK2LEiLCJjYXRlZ29yeSI6Itin2YTZhtmK2KfYqNin2KoiLCJnb3Zlcm5vcmF0ZSI6ItmF2KjYp9ix2YMg2KfZhNmD2KjZitixIiwiYWRkcmVzcyI6Itis2YbZiNioINin2YTYtdio2KfYrdmK2KnYjCDZgti32LnYqSAx2Iwg2YXYqNmG2Ykg2YXYrdin2YPZhSDYp9mE2KPYrdmF2K/ZitiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6dHJ1ZX0seyJpZCI6IkdMT0JBTC1FWFBFUlRTLdin2YTYudin2LXZhdipIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6Itil2K/Yp9ix2Kkg2KfZhNiu2KjYsdin2KEg4oCTINin2YTYudin2LXZhdipIiwiY2F0ZWdvcnkiOiLYpdiv2KfYsdipINin2YTYrtio2LHYp9ihIiwiZ292ZXJub3JhdGUiOiLYp9mE2LnYp9i12YXYqSIsImFkZHJlc3MiOiLYpdiv2KfYsdipINin2YTYrtio2LHYp9ihINin2YTYudin2LXZhdip2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itiv2YTZitmEINmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1FWEVDVVRJT04t2KfZhNi52KfYtdmF2KkiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2KXYr9in2LHYqSDYp9mE2KrZhtmB2YrYsCDigJMg2KfZhNi52KfYtdmF2KkiLCJjYXRlZ29yeSI6Itil2K/Yp9ix2KfYqiDYp9mE2KrZhtmB2YrYsCIsImdvdmVybm9yYXRlIjoi2KfZhNi52KfYtdmF2KkiLCJhZGRyZXNzIjoi2KXYr9in2LHYqSDYp9mE2KrZhtmB2YrYsCDYp9mE2LnYp9i12YXYqdiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYr9mE2YrZhCDZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6ZmFsc2V9LHsiaWQiOiJHTE9CQUwtRVhQRVJUUy3YrdmI2YTZiiIsIm9mZmljZV9pZCI6IkdMT0JBTCIsIm5hbWUiOiLYpdiv2KfYsdipINin2YTYrtio2LHYp9ihIOKAkyDYrdmI2YTZiiIsImNhdGVnb3J5Ijoi2KXYr9in2LHYqSDYp9mE2K7YqNix2KfYoSIsImdvdmVybm9yYXRlIjoi2K3ZiNmE2YoiLCJhZGRyZXNzIjoi2KXYr9in2LHYqSDYp9mE2K7YqNix2KfYoSDYrdmI2YTZitiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYr9mE2YrZhCDZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6ZmFsc2V9LHsiaWQiOiJHTE9CQUwtRVhFQ1VUSU9OLdit2YjZhNmKIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6Itil2K/Yp9ix2Kkg2KfZhNiq2YbZgdmK2LAg4oCTINit2YjZhNmKIiwiY2F0ZWdvcnkiOiLYpdiv2KfYsdin2Kog2KfZhNiq2YbZgdmK2LAiLCJnb3Zlcm5vcmF0ZSI6Itit2YjZhNmKIiwiYWRkcmVzcyI6Itil2K/Yp9ix2Kkg2KfZhNiq2YbZgdmK2LAg2K3ZiNmE2YrYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2K/ZhNmK2YQg2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLUVYUEVSVFMt2KfZhNmB2LHZiNin2YbZitipIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6Itil2K/Yp9ix2Kkg2KfZhNiu2KjYsdin2KEg4oCTINin2YTZgdix2YjYp9mG2YrYqSIsImNhdGVnb3J5Ijoi2KXYr9in2LHYqSDYp9mE2K7YqNix2KfYoSIsImdvdmVybm9yYXRlIjoi2KfZhNmB2LHZiNin2YbZitipIiwiYWRkcmVzcyI6Itil2K/Yp9ix2Kkg2KfZhNiu2KjYsdin2KEg2KfZhNmB2LHZiNin2YbZitip2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itiv2YTZitmEINmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1FWEVDVVRJT04t2KfZhNmB2LHZiNin2YbZitipIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6Itil2K/Yp9ix2Kkg2KfZhNiq2YbZgdmK2LAg4oCTINin2YTZgdix2YjYp9mG2YrYqSIsImNhdGVnb3J5Ijoi2KXYr9in2LHYp9iqINin2YTYqtmG2YHZitiwIiwiZ292ZXJub3JhdGUiOiLYp9mE2YHYsdmI2KfZhtmK2KkiLCJhZGRyZXNzIjoi2KXYr9in2LHYqSDYp9mE2KrZhtmB2YrYsCDYp9mE2YHYsdmI2KfZhtmK2KnYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2K/ZhNmK2YQg2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLUVYUEVSVFMt2KfZhNis2YfYsdin2KEiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2KXYr9in2LHYqSDYp9mE2K7YqNix2KfYoSDigJMg2KfZhNis2YfYsdin2KEiLCJjYXRlZ29yeSI6Itil2K/Yp9ix2Kkg2KfZhNiu2KjYsdin2KEiLCJnb3Zlcm5vcmF0ZSI6Itin2YTYrNmH2LHYp9ihIiwiYWRkcmVzcyI6Itil2K/Yp9ix2Kkg2KfZhNiu2KjYsdin2KEg2KfZhNis2YfYsdin2KHYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2K/ZhNmK2YQg2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLUVYRUNVVElPTi3Yp9mE2KzZh9ix2KfYoSIsIm9mZmljZV9pZCI6IkdMT0JBTCIsIm5hbWUiOiLYpdiv2KfYsdipINin2YTYqtmG2YHZitiwIOKAkyDYp9mE2KzZh9ix2KfYoSIsImNhdGVnb3J5Ijoi2KXYr9in2LHYp9iqINin2YTYqtmG2YHZitiwIiwiZ292ZXJub3JhdGUiOiLYp9mE2KzZh9ix2KfYoSIsImFkZHJlc3MiOiLYpdiv2KfYsdipINin2YTYqtmG2YHZitiwINin2YTYrNmH2LHYp9ih2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itiv2YTZitmEINmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1FWFBFUlRTLdin2YTYo9it2YXYr9mKIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6Itil2K/Yp9ix2Kkg2KfZhNiu2KjYsdin2KEg4oCTINin2YTYo9it2YXYr9mKIiwiY2F0ZWdvcnkiOiLYpdiv2KfYsdipINin2YTYrtio2LHYp9ihIiwiZ292ZXJub3JhdGUiOiLYp9mE2KPYrdmF2K/ZiiIsImFkZHJlc3MiOiLYpdiv2KfYsdipINin2YTYrtio2LHYp9ihINin2YTYo9it2YXYr9mK2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjIwMCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itiv2YTZitmEINmI2LLYp9ix2Kkg2KfZhNi52K/ZhCIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1FWEVDVVRJT04t2KfZhNij2K3Zhdiv2YoiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2KXYr9in2LHYqSDYp9mE2KrZhtmB2YrYsCDigJMg2KfZhNij2K3Zhdiv2YoiLCJjYXRlZ29yeSI6Itil2K/Yp9ix2KfYqiDYp9mE2KrZhtmB2YrYsCIsImdvdmVybm9yYXRlIjoi2KfZhNij2K3Zhdiv2YoiLCJhZGRyZXNzIjoi2KXYr9in2LHYqSDYp9mE2KrZhtmB2YrYsCDYp9mE2KPYrdmF2K/ZitiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYr9mE2YrZhCDZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6ZmFsc2V9LHsiaWQiOiJHTE9CQUwtRVhQRVJUUy3Zhdio2KfYsdmDINin2YTZg9io2YrYsSIsIm9mZmljZV9pZCI6IkdMT0JBTCIsIm5hbWUiOiLYpdiv2KfYsdipINin2YTYrtio2LHYp9ihIOKAkyDZhdio2KfYsdmDINin2YTZg9io2YrYsSIsImNhdGVnb3J5Ijoi2KXYr9in2LHYqSDYp9mE2K7YqNix2KfYoSIsImdvdmVybm9yYXRlIjoi2YXYqNin2LHZgyDYp9mE2YPYqNmK2LEiLCJhZGRyZXNzIjoi2KXYr9in2LHYqSDYp9mE2K7YqNix2KfYoSDZhdio2KfYsdmDINin2YTZg9io2YrYsdiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoyMDAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYr9mE2YrZhCDZiNiy2KfYsdipINin2YTYudiv2YQiLCJ2ZXJpZmllZCI6ZmFsc2V9LHsiaWQiOiJHTE9CQUwtRVhFQ1VUSU9OLdmF2KjYp9ix2YMg2KfZhNmD2KjZitixIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6Itil2K/Yp9ix2Kkg2KfZhNiq2YbZgdmK2LAg4oCTINmF2KjYp9ix2YMg2KfZhNmD2KjZitixIiwiY2F0ZWdvcnkiOiLYpdiv2KfYsdin2Kog2KfZhNiq2YbZgdmK2LAiLCJnb3Zlcm5vcmF0ZSI6ItmF2KjYp9ix2YMg2KfZhNmD2KjZitixIiwiYWRkcmVzcyI6Itil2K/Yp9ix2Kkg2KfZhNiq2YbZgdmK2LAg2YXYqNin2LHZgyDYp9mE2YPYqNmK2LHYjCDYp9mE2YPZiNmK2KoiLCJsYXQiOiIiLCJsbmciOiIiLCJyYWRpdXNfbSI6MjAwLCJtYXBzX3VybCI6IiIsImFjdGl2ZSI6dHJ1ZSwic291cmNlIjoi2K/ZhNmK2YQg2YjYstin2LHYqSDYp9mE2LnYr9mEIiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLVBPTElDRS3Zhdiu2YHYsSDYp9mE2LXYp9mE2K3ZitipIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmF2K7ZgdixINin2YTYtdin2YTYrdmK2KkiLCJjYXRlZ29yeSI6Itin2YTZhdiu2KfZgdixIiwiZ292ZXJub3JhdGUiOiLYp9mE2LnYp9i12YXYqSIsImFkZHJlc3MiOiLZhdiu2YHYsSDYp9mE2LXYp9mE2K3Zitip2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjE1MCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itio2K3YqyDYrtix2KfYpti3IiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLVBPTElDRS3Zhdiu2YHYsSDYp9mE2LPYp9mE2YXZitipIiwib2ZmaWNlX2lkIjoiR0xPQkFMIiwibmFtZSI6ItmF2K7ZgdixINin2YTYs9in2YTZhdmK2KkiLCJjYXRlZ29yeSI6Itin2YTZhdiu2KfZgdixIiwiZ292ZXJub3JhdGUiOiLYrdmI2YTZiiIsImFkZHJlc3MiOiLZhdiu2YHYsSDYp9mE2LPYp9mE2YXZitip2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjE1MCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itio2K3YqyDYrtix2KfYpti3IiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLVBPTElDRS3Zhdiu2YHYsSDYrdi32YrZhiIsIm9mZmljZV9pZCI6IkdMT0JBTCIsIm5hbWUiOiLZhdiu2YHYsSDYrdi32YrZhiIsImNhdGVnb3J5Ijoi2KfZhNmF2K7Yp9mB2LEiLCJnb3Zlcm5vcmF0ZSI6Itit2YjZhNmKIiwiYWRkcmVzcyI6ItmF2K7ZgdixINit2LfZitmG2Iwg2KfZhNmD2YjZitiqIiwibGF0IjoiIiwibG5nIjoiIiwicmFkaXVzX20iOjE1MCwibWFwc191cmwiOiIiLCJhY3RpdmUiOnRydWUsInNvdXJjZSI6Itio2K3YqyDYrtix2KfYpti3IiwidmVyaWZpZWQiOmZhbHNlfSx7ImlkIjoiR0xPQkFMLVBPTElDRS3Zhdiu2YHYsSDYp9mE2YHYsdmI2KfZhtmK2KkiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrtmB2LEg2KfZhNmB2LHZiNin2YbZitipIiwiY2F0ZWdvcnkiOiLYp9mE2YXYrtin2YHYsSIsImdvdmVybm9yYXRlIjoi2KfZhNmB2LHZiNin2YbZitipIiwiYWRkcmVzcyI6ItmF2K7ZgdixINin2YTZgdix2YjYp9mG2YrYqdiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoxNTAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYqNit2Ksg2K7Ysdin2KbYtyIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1QT0xJQ0Ut2YXYrtmB2LEg2KfZhNis2YfYsdin2KEiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrtmB2LEg2KfZhNis2YfYsdin2KEiLCJjYXRlZ29yeSI6Itin2YTZhdiu2KfZgdixIiwiZ292ZXJub3JhdGUiOiLYp9mE2KzZh9ix2KfYoSIsImFkZHJlc3MiOiLZhdiu2YHYsSDYp9mE2KzZh9ix2KfYodiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoxNTAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYqNit2Ksg2K7Ysdin2KbYtyIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1QT0xJQ0Ut2YXYrtmB2LEg2KfZhNij2K3Zhdiv2YoiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrtmB2LEg2KfZhNij2K3Zhdiv2YoiLCJjYXRlZ29yeSI6Itin2YTZhdiu2KfZgdixIiwiZ292ZXJub3JhdGUiOiLYp9mE2KPYrdmF2K/ZiiIsImFkZHJlc3MiOiLZhdiu2YHYsSDYp9mE2KPYrdmF2K/ZitiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoxNTAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYqNit2Ksg2K7Ysdin2KbYtyIsInZlcmlmaWVkIjpmYWxzZX0seyJpZCI6IkdMT0JBTC1QT0xJQ0Ut2YXYrtmB2LEg2YXYqNin2LHZgyDYp9mE2YPYqNmK2LEiLCJvZmZpY2VfaWQiOiJHTE9CQUwiLCJuYW1lIjoi2YXYrtmB2LEg2YXYqNin2LHZgyDYp9mE2YPYqNmK2LEiLCJjYXRlZ29yeSI6Itin2YTZhdiu2KfZgdixIiwiZ292ZXJub3JhdGUiOiLZhdio2KfYsdmDINin2YTZg9io2YrYsSIsImFkZHJlc3MiOiLZhdiu2YHYsSDZhdio2KfYsdmDINin2YTZg9io2YrYsdiMINin2YTZg9mI2YrYqiIsImxhdCI6IiIsImxuZyI6IiIsInJhZGl1c19tIjoxNTAsIm1hcHNfdXJsIjoiIiwiYWN0aXZlIjp0cnVlLCJzb3VyY2UiOiLYqNit2Ksg2K7Ysdin2KbYtyIsInZlcmlmaWVkIjpmYWxzZX1dOwpjb25zdCBMT0NBVElPTlNfQ0VOVEVSPVsyOS4zNzU5LDQ3Ljk3NzRdOwpsZXQgdG1NYXA9bnVsbCx0bU1hcmtlcj1udWxsLHRtUmFkaXVzQ2lyY2xlPW51bGwsdG1Mb2NhdGlvbnM9W10sdG1MZWFmbGV0UHJvbWlzZT1udWxsOwpmdW5jdGlvbiBhY3RpdmVPZmZpY2VJZCgpe3JldHVybiBTdHJpbmcobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhd3llcl9haV9vZmZpY2VfaWQnKXx8YXBwLmdldE9mZmljZUlkPy4oKXx8JycpLnRyaW0oKX0KZnVuY3Rpb24gYWN0aXZlVG9rZW4oKXtyZXR1cm4gU3RyaW5nKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYXd5ZXJfYWlfdG9rZW4nKXx8JycpLnRyaW0oKX0KZnVuY3Rpb24gbG9jYWxMb2NhdGlvbnNLZXkoKXtyZXR1cm5gbGF3YWlfbG9jYXRpb25zXyR7YWN0aXZlT2ZmaWNlSWQoKXx8J2RlZmF1bHQnfWB9CmZ1bmN0aW9uIHJlYWRMb2NhbExvY2F0aW9ucygpe3RyeXtjb25zdCB4PUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxMb2NhdGlvbnNLZXkoKSl8fCdbXScpO3JldHVybiBBcnJheS5pc0FycmF5KHgpP3g6W119Y2F0Y2h7cmV0dXJuW119fQpmdW5jdGlvbiB3cml0ZUxvY2FsTG9jYXRpb25zKHJvd3Mpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsTG9jYXRpb25zS2V5KCksSlNPTi5zdHJpbmdpZnkocm93cy5zbGljZSgtMTAwKSkpfQpmdW5jdGlvbiBub3JtYWxpemVMb2NhdGlvblJvdyhyKXtyZXR1cm57aWQ6U3RyaW5nKHIuaWR8fCcnKSxvZmZpY2VfaWQ6U3RyaW5nKHIub2ZmaWNlX2lkfHwnJyksbmFtZTpTdHJpbmcoci5uYW1lfHwnJyksY2F0ZWdvcnk6U3RyaW5nKHIuY2F0ZWdvcnl8fCfZhdmI2KfZgti5INij2K7YsdmJJyksZ292ZXJub3JhdGU6U3RyaW5nKHIuZ292ZXJub3JhdGV8fCcnKSxhZGRyZXNzOlN0cmluZyhyLmFkZHJlc3N8fCcnKSxsYXQ6U3RyaW5nKHIubGF0fHwnJyksbG5nOlN0cmluZyhyLmxuZ3x8JycpLHJhZGl1c19tOk51bWJlcihyLnJhZGl1c19tfHxyLnJhZGl1c3x8MjAwKSxtYXBzX3VybDpTdHJpbmcoci5tYXBzX3VybHx8ci5tYXBzVXJsfHwnJyksYWN0aXZlOnIuYWN0aXZlIT09ZmFsc2UmJiFbJ2ZhbHNlJywnMCcsJ9mE2KcnXS5pbmNsdWRlcyhTdHJpbmcoci5hY3RpdmV8fCcnKS50b0xvd2VyQ2FzZSgpKSxzb3VyY2U6U3RyaW5nKHIuc291cmNlfHwnJyksdmVyaWZpZWQ6ci52ZXJpZmllZD09PXRydWV8fFsndHJ1ZScsJzEnLCfZhti52YUnXS5pbmNsdWRlcyhTdHJpbmcoci52ZXJpZmllZHx8JycpLnRvTG93ZXJDYXNlKCkpfX0KZnVuY3Rpb24gZGVkdXBlTG9jYXRpb25zKHJvd3Mpe2NvbnN0IG09bmV3IE1hcCgpO3Jvd3MubWFwKG5vcm1hbGl6ZUxvY2F0aW9uUm93KS5maWx0ZXIoeD0+eC5hY3RpdmUmJngubmFtZSkuZm9yRWFjaCh4PT5tLnNldCh4LmlkfHxgJHt4Lm5hbWV9fCR7eC5hZGRyZXNzfWAseCkpO3JldHVyblsuLi5tLnZhbHVlcygpXS5zb3J0KChhLGIpPT5hLmNhdGVnb3J5LmxvY2FsZUNvbXBhcmUoYi5jYXRlZ29yeSwnYXInKXx8YS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lLCdhcicpKX0KYXN5bmMgZnVuY3Rpb24gbG9jYXRpb25zQXBpKGFjdGlvbixwYXlsb2FkPXt9KXtjb25zdCByPWF3YWl0IGZldGNoKExPQ0FUSU9OU19BUEkse21ldGhvZDonUE9TVCcsaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSxib2R5OkpTT04uc3RyaW5naWZ5KHthY3Rpb24sdG9rZW46YWN0aXZlVG9rZW4oKSxwYXlsb2FkfSl9KTtjb25zdCB0PWF3YWl0IHIudGV4dCgpO2xldCBqPXt9O3RyeXtqPUpTT04ucGFyc2UodCl9Y2F0Y2h7fWlmKCFyLm9rfHxqLm9rPT09ZmFsc2UpdGhyb3cgbmV3IEVycm9yKGouZXJyb3J8fCfYqti52LDYsSDYp9mE2KfYqti12KfZhCDYqNiv2YTZitmEINin2YTZhdmI2KfZgti5Jyk7cmV0dXJuIGp9CmFzeW5jIGZ1bmN0aW9uIGxvYWRMb2NhdGlvbnNEaXJlY3RvcnkoKXtsZXQgcmVtb3RlPVtdO3RyeXtjb25zdCByPWF3YWl0IGxvY2F0aW9uc0FwaSgnbGlzdCcpO3JlbW90ZT1BcnJheS5pc0FycmF5KHIubG9jYXRpb25zKT9yLmxvY2F0aW9uczpbXX1jYXRjaHt9dG1Mb2NhdGlvbnM9ZGVkdXBlTG9jYXRpb25zKFsuLi5MT0NBVElPTlNfREVGQVVMVCwuLi5yZWFkTG9jYWxMb2NhdGlvbnMoKSwuLi5yZW1vdGVdKTtyZW5kZXJMb2NhdGlvbkRpcmVjdG9yeSgpO3JldHVybiB0bUxvY2F0aW9uc30KZnVuY3Rpb24gbG9hZExlYWZsZXQoKXtpZih3aW5kb3cuTClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHdpbmRvdy5MKTtpZih0bUxlYWZsZXRQcm9taXNlKXJldHVybiB0bUxlYWZsZXRQcm9taXNlO3RtTGVhZmxldFByb21pc2U9bmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KT0+e2lmKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdsaW5rW2RhdGEtbGF3YWktbGVhZmxldF0nKSl7Y29uc3QgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7bC5yZWw9J3N0eWxlc2hlZXQnO2wuaHJlZj0naHR0cHM6Ly91bnBrZy5jb20vbGVhZmxldEAxLjkuNC9kaXN0L2xlYWZsZXQuY3NzJztsLmRhdGFzZXQubGF3YWlMZWFmbGV0PScxJztkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGwpfWNvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7cy5zcmM9J2h0dHBzOi8vdW5wa2cuY29tL2xlYWZsZXRAMS45LjQvZGlzdC9sZWFmbGV0LmpzJztzLmFzeW5jPXRydWU7cy5vbmxvYWQ9KCk9PnJlc29sdmUod2luZG93LkwpO3Mub25lcnJvcj0oKT0+cmVqZWN0KG5ldyBFcnJvcign2KrYudiw2LEg2KrYrdmF2YrZhCDZhdmD2KrYqNipINin2YTYrtix2YrYt9ipJykpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyl9KTtyZXR1cm4gdG1MZWFmbGV0UHJvbWlzZX0KZnVuY3Rpb24gbWFwRm9ybSgpe3JldHVybiAkKCd0bU1vZGFsQm94Jyk/LnF1ZXJ5U2VsZWN0b3IoJyN0bVRhc2tGb3JtJyl9CmZ1bmN0aW9uIGxvY2F0aW9uTnVtYmVyKHYpe2NvbnN0IG49TnVtYmVyKHYpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUobik/bjpudWxsfQpmdW5jdGlvbiBidWlsZE1hcHNVcmwobGF0LGxuZyl7cmV0dXJuYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcz9xPSR7TnVtYmVyKGxhdCkudG9GaXhlZCg3KX0sJHtOdW1iZXIobG5nKS50b0ZpeGVkKDcpfWB9CmZ1bmN0aW9uIGxvY2F0aW9uUmFkaXVzKGZvcm09bWFwRm9ybSgpKXtyZXR1cm4gTWF0aC5tYXgoMjAsTnVtYmVyKGZvcm0/LmVsZW1lbnRzLnJhZGl1cz8udmFsdWV8fDIwMCkpfQpmdW5jdGlvbiB1cGRhdGVMb2NhdGlvbkZpZWxkcyhsYXQsbG5nLG9wdHM9e30pe2NvbnN0IGZvcm09bWFwRm9ybSgpO2lmKCFmb3JtKXJldHVybjtsYXQ9TnVtYmVyKGxhdCk7bG5nPU51bWJlcihsbmcpO2lmKCFOdW1iZXIuaXNGaW5pdGUobGF0KXx8IU51bWJlci5pc0Zpbml0ZShsbmcpKXJldHVybjtmb3JtLmVsZW1lbnRzLnRhcmdldExhdC52YWx1ZT1sYXQudG9GaXhlZCg3KTtmb3JtLmVsZW1lbnRzLnRhcmdldExuZy52YWx1ZT1sbmcudG9GaXhlZCg3KTtpZihvcHRzLm5hbWUpZm9ybS5lbGVtZW50cy5sb2NhdGlvbk5hbWUudmFsdWU9b3B0cy5uYW1lO2lmKG9wdHMudXJsfHwhZm9ybS5lbGVtZW50cy5sb2NhdGlvblVybC52YWx1ZSlmb3JtLmVsZW1lbnRzLmxvY2F0aW9uVXJsLnZhbHVlPW9wdHMudXJsfHxidWlsZE1hcHNVcmwobGF0LGxuZyk7Y29uc3QgY29vcmRzPWZvcm0ucXVlcnlTZWxlY3RvcignI3RtQ29vcmRzJyk7aWYoY29vcmRzKWNvb3Jkcy50ZXh0Q29udGVudD1gJHtsYXQudG9GaXhlZCg3KX0sICR7bG5nLnRvRml4ZWQoNyl9YDtpZihvcHRzLnJhZGl1cyYmZm9ybS5lbGVtZW50cy5yYWRpdXMpZm9ybS5lbGVtZW50cy5yYWRpdXMudmFsdWU9b3B0cy5yYWRpdXM7Y29uc3Qgc3RhdHVzPWZvcm0ucXVlcnlTZWxlY3RvcignI3RtTG9jYXRpb25TdGF0dXMnKTtpZihzdGF0dXMpc3RhdHVzLnRleHRDb250ZW50PW9wdHMubWVzc2FnZXx8J9iq2YUg2KfYudiq2YXYp9ivINin2YTYr9io2YjYsyc7aWYodG1NYXApe2NvbnN0IHA9W2xhdCxsbmddO2lmKCF0bU1hcmtlcil7dG1NYXJrZXI9d2luZG93LkwubWFya2VyKHAse2RyYWdnYWJsZTp0cnVlfSkuYWRkVG8odG1NYXApO3RtTWFya2VyLm9uKCdkcmFnZW5kJywoKT0+e2NvbnN0IHE9dG1NYXJrZXIuZ2V0TGF0TG5nKCk7dXBkYXRlTG9jYXRpb25GaWVsZHMocS5sYXQscS5sbmcse21lc3NhZ2U6J9iq2YUg2KrYrdiv2YrYqyDYp9mE2K/YqNmI2LMg2KjYp9mE2LPYrdioJ30pfSl9ZWxzZSB0bU1hcmtlci5zZXRMYXRMbmcocCk7aWYoIXRtUmFkaXVzQ2lyY2xlKXRtUmFkaXVzQ2lyY2xlPXdpbmRvdy5MLmNpcmNsZShwLHtyYWRpdXM6bG9jYXRpb25SYWRpdXMoZm9ybSksY29sb3I6JyMwYjYzZjYnLGZpbGxDb2xvcjonIzBiNjNmNicsZmlsbE9wYWNpdHk6LjExLHdlaWdodDoyfSkuYWRkVG8odG1NYXApO2Vsc2UgdG1SYWRpdXNDaXJjbGUuc2V0TGF0TG5nKHApLnNldFJhZGl1cyhsb2NhdGlvblJhZGl1cyhmb3JtKSk7aWYob3B0cy5jZW50ZXIhPT1mYWxzZSl0bU1hcC5zZXRWaWV3KHAsTWF0aC5tYXgodG1NYXAuZ2V0Wm9vbSgpLDE1KSl9fQpmdW5jdGlvbiBjbGVhck1hcEluc3RhbmNlKCl7aWYodG1NYXApe3RtTWFwLnJlbW92ZSgpO3RtTWFwPW51bGx9dG1NYXJrZXI9bnVsbDt0bVJhZGl1c0NpcmNsZT1udWxsfQphc3luYyBmdW5jdGlvbiBpbml0VGFza01hcChtPXt9KXtjb25zdCBub2RlPSQoJ3RtTG9jYXRpb25NYXAnKTtpZighbm9kZSlyZXR1cm47dHJ5e2NvbnN0IEw9YXdhaXQgbG9hZExlYWZsZXQoKTtjbGVhck1hcEluc3RhbmNlKCk7Y29uc3QgbGF0PWxvY2F0aW9uTnVtYmVyKG0udGFyZ2V0TGF0KSxsbmc9bG9jYXRpb25OdW1iZXIobS50YXJnZXRMbmcpLGhhcz1sYXQhPT1udWxsJiZsbmchPT1udWxsO3RtTWFwPUwubWFwKG5vZGUse3pvb21Db250cm9sOnRydWUsYXR0cmlidXRpb25Db250cm9sOnRydWV9KS5zZXRWaWV3KGhhcz9bbGF0LGxuZ106TE9DQVRJT05TX0NFTlRFUixoYXM/MTY6MTEpO2NvbnN0IHByb3ZpZGVycz1be3VybDonaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLG9wdHM6e21heFpvb206MTksYXR0cmlidXRpb246J8KpIE9wZW5TdHJlZXRNYXAnfX0se3VybDonaHR0cHM6Ly97c30uYmFzZW1hcHMuY2FydG9jZG4uY29tL2xpZ2h0X2FsbC97en0ve3h9L3t5fXtyfS5wbmcnLG9wdHM6e21heFpvb206MjAsc3ViZG9tYWluczonYWJjZCcsYXR0cmlidXRpb246J8KpIE9wZW5TdHJlZXRNYXAgwqkgQ0FSVE8nfX0se3VybDonaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JyxvcHRzOnttYXhab29tOjE5LGF0dHJpYnV0aW9uOidUaWxlcyDCqSBFc3JpJ319XTtsZXQgcHJvdmlkZXJJbmRleD0wLHRpbGVFcnJvcnM9MCx0aWxlTGF5ZXI9bnVsbDtjb25zdCBsb2FkUHJvdmlkZXI9KCk9PntpZih0aWxlTGF5ZXIpdG1NYXAucmVtb3ZlTGF5ZXIodGlsZUxheWVyKTt0aWxlRXJyb3JzPTA7Y29uc3QgcD1wcm92aWRlcnNbcHJvdmlkZXJJbmRleF07dGlsZUxheWVyPUwudGlsZUxheWVyKHAudXJsLHAub3B0cykuYWRkVG8odG1NYXApO3RpbGVMYXllci5vbigndGlsZWxvYWQnLCgpPT57Y29uc3Qgc3RhdHVzPSQoJ3RtTG9jYXRpb25TdGF0dXMnKTtpZihzdGF0dXMmJnN0YXR1cy50ZXh0Q29udGVudC5pbmNsdWRlcygn2KrYrdmF2YrZhCDYp9mE2K7YsdmK2LfYqScpKXN0YXR1cy50ZXh0Q29udGVudD0n2KfZhNiu2LHZiti32Kkg2KzYp9mH2LLYqSDigJQg2K3YsdmR2YMg2KfZhNiv2KjZiNizINil2YTZiSDYp9mE2YXYr9iu2YQg2KfZhNi12K3ZititJ30pO3RpbGVMYXllci5vbigndGlsZWVycm9yJywoKT0+e3RpbGVFcnJvcnMrPTE7aWYodGlsZUVycm9yczwzKXJldHVybjtpZihwcm92aWRlckluZGV4PHByb3ZpZGVycy5sZW5ndGgtMSl7cHJvdmlkZXJJbmRleCs9MTtjb25zdCBzdGF0dXM9JCgndG1Mb2NhdGlvblN0YXR1cycpO2lmKHN0YXR1cylzdGF0dXMudGV4dENvbnRlbnQ9J9is2KfYsdmKINiq2K3ZhdmK2YQg2K7YsdmK2LfYqSDYqNiv2YrZhNipLi4uJztsb2FkUHJvdmlkZXIoKX1lbHNle2NvbnN0IHN0YXR1cz0kKCd0bUxvY2F0aW9uU3RhdHVzJyk7aWYoc3RhdHVzKXN0YXR1cy50ZXh0Q29udGVudD0n2KrYudiw2LEg2KrYrdmF2YrZhCDYtdmI2LEg2KfZhNiu2LHZiti32Kkg2YXZhiDYp9mE2LTYqNmD2Kkg4oCUINin2YTYr9io2YjYsyDZiNin2YTYpdit2K/Yp9ir2YrYp9iqINmF2Kcg2LLYp9mE2Kog2KrYudmF2YQnfX0pfTtsb2FkUHJvdmlkZXIoKTt0bU1hcC5vbignY2xpY2snLGU9PnVwZGF0ZUxvY2F0aW9uRmllbGRzKGUubGF0bG5nLmxhdCxlLmxhdGxuZy5sbmcse21lc3NhZ2U6J9iq2YUg2KrYrdiv2YrYryDYp9mE2YXZiNmC2Lkg2YXZhiDYp9mE2K7YsdmK2LfYqScsY2VudGVyOmZhbHNlfSkpO2lmKGhhcyl1cGRhdGVMb2NhdGlvbkZpZWxkcyhsYXQsbG5nLHtjZW50ZXI6ZmFsc2UsbWVzc2FnZTon2KfZhNmF2YjZgti5INin2YTZhdit2YHZiNi4J30pO3NldFRpbWVvdXQoKCk9PnRtTWFwPy5pbnZhbGlkYXRlU2l6ZSgpLDE4MCk7c2V0VGltZW91dCgoKT0+dG1NYXA/LmludmFsaWRhdGVTaXplKCksNzAwKTthd2FpdCBsb2FkTG9jYXRpb25zRGlyZWN0b3J5KCl9Y2F0Y2goZXJyKXtjb25zdCBzdGF0dXM9JCgndG1Mb2NhdGlvblN0YXR1cycpO2lmKHN0YXR1cylzdGF0dXMudGV4dENvbnRlbnQ9J9iq2LnYsNixINiq2K3ZhdmK2YQg2KfZhNiu2LHZiti32Kkg4oCUINin2LPYqtiu2K/ZhSDYp9mE2LHYp9io2Lcg2KPZiCDYp9mE2KXYrdiv2KfYq9mK2KfYqic7YXBwLnNob3dUb2FzdCgn2KfZhNiu2LHZiti32KknLGVyci5tZXNzYWdlfHwn2KrYudiw2LEg2KrYrdmF2YrZhCDYp9mE2K7YsdmK2LfYqScsJ2Vycm9yJyw1NTAwKX19CmZ1bmN0aW9uIHJlbmRlckxvY2F0aW9uRGlyZWN0b3J5KCl7Y29uc3QgY2F0PSQoJ3RtTG9jYXRpb25DYXRlZ29yeScpLHNlbD0kKCd0bVJlYWR5TG9jYXRpb24nKTtpZighY2F0fHwhc2VsKXJldHVybjtjb25zdCBjdXJyZW50PWNhdC52YWx1ZSxjYXRlZ29yaWVzPVsn2KfZhNmD2YQnLC4uLm5ldyBTZXQodG1Mb2NhdGlvbnMubWFwKHg9PnguY2F0ZWdvcnkpLmZpbHRlcihCb29sZWFuKSldO2NhdC5pbm5lckhUTUw9Y2F0ZWdvcmllcy5tYXAoeD0+YDxvcHRpb24gdmFsdWU9IiR7ZXNjKHgpfSI+JHtlc2MoeCl9PC9vcHRpb24+YCkuam9pbignJyk7aWYoY2F0ZWdvcmllcy5pbmNsdWRlcyhjdXJyZW50KSljYXQudmFsdWU9Y3VycmVudDtjb25zdCByb3dzPXRtTG9jYXRpb25zLmZpbHRlcih4PT4hY2F0LnZhbHVlfHxjYXQudmFsdWU9PT0n2KfZhNmD2YQnfHx4LmNhdGVnb3J5PT09Y2F0LnZhbHVlKTtzZWwuaW5uZXJIVE1MPSc8b3B0aW9uIHZhbHVlPSIiPtin2K7YqtixINmF2YjZgti52KfZiyDYrNin2YfYstin2Ys8L29wdGlvbj4nK3Jvd3MubWFwKHg9PmA8b3B0aW9uIHZhbHVlPSIke2VzYyh4LmlkfHx4Lm5hbWUpfSI+JHtlc2MoeC5uYW1lKX0ke3guZ292ZXJub3JhdGU/YCDigJQgJHtlc2MoeC5nb3Zlcm5vcmF0ZSl9YDonJ308L29wdGlvbj5gKS5qb2luKCcnKX0KZnVuY3Rpb24gc2VsZWN0ZWRSZWFkeUxvY2F0aW9uKCl7Y29uc3QgaWQ9JCgndG1SZWFkeUxvY2F0aW9uJyk/LnZhbHVlO3JldHVybiB0bUxvY2F0aW9ucy5maW5kKHg9Pih4LmlkfHx4Lm5hbWUpPT09aWQpfQphc3luYyBmdW5jdGlvbiBnZW9jb2RlUXVlcnkocXVlcnkpe3F1ZXJ5PVN0cmluZyhxdWVyeXx8JycpLnRyaW0oKTtpZighcXVlcnkpdGhyb3cgbmV3IEVycm9yKCfYp9mD2KrYqCDYp9iz2YUg2KfZhNis2YfYqSDYo9mIINin2YTYudmG2YjYp9mGJyk7Y29uc3QgdT1uZXcgVVJMKCdodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2gnKTt1LnNlYXJjaFBhcmFtcy5zZXQoJ2Zvcm1hdCcsJ2pzb252MicpO3Uuc2VhcmNoUGFyYW1zLnNldCgnbGltaXQnLCc2Jyk7dS5zZWFyY2hQYXJhbXMuc2V0KCdjb3VudHJ5Y29kZXMnLCdrdycpO3Uuc2VhcmNoUGFyYW1zLnNldCgnYWNjZXB0LWxhbmd1YWdlJywnYXInKTt1LnNlYXJjaFBhcmFtcy5zZXQoJ3EnLHF1ZXJ5LmluY2x1ZGVzKCfYp9mE2YPZiNmK2KonKT9xdWVyeTpgJHtxdWVyeX3YjCDYp9mE2YPZiNmK2KpgKTtjb25zdCByPWF3YWl0IGZldGNoKHUse2hlYWRlcnM6eydBY2NlcHQnOidhcHBsaWNhdGlvbi9qc29uJ319KTtpZighci5vayl0aHJvdyBuZXcgRXJyb3IoJ9iq2LnYsNixINin2YTYqNit2Ksg2YHZiiDYp9mE2K7YsdmK2LfYqScpO2NvbnN0IGo9YXdhaXQgci5qc29uKCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoaik/ajpbXX0KZnVuY3Rpb24gcmVuZGVyR2VvY29kZVJlc3VsdHMocm93cyl7Y29uc3QgYm94PSQoJ3RtTG9jYXRpb25SZXN1bHRzJyk7aWYoIWJveClyZXR1cm47Ym94LmlubmVySFRNTD1yb3dzLmxlbmd0aD9yb3dzLm1hcCgocixpKT0+YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idG0tbG9jYXRpb24tcmVzdWx0IiBkYXRhLXRtLWFjdGlvbj0ibG9jYXRpb24tcmVzdWx0IiBkYXRhLWluZGV4PSIke2l9Ij48Yj4ke2VzYyhyLm5hbWV8fHIuZGlzcGxheV9uYW1lPy5zcGxpdCgnLCcpWzBdfHwn2YbYqtmK2KzYqScpfTwvYj48c21hbGw+JHtlc2Moci5kaXNwbGF5X25hbWV8fCcnKX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oJycpOic8ZGl2IGNsYXNzPSJ0bS1sb2NhdGlvbi1oaW50Ij7ZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINmG2KrZitis2KkuINit2K/ZkdivINin2YTYr9io2YjYsyDZitiv2YjZitin2Ysg2LnZhNmJINin2YTYrtix2YrYt9ipLjwvZGl2Pic7Ym94LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTtib3guX3Jvd3M9cm93c30KYXN5bmMgZnVuY3Rpb24gc2VhcmNoTWFwTG9jYXRpb24oKXtjb25zdCBxPSQoJ3RtTG9jYXRpb25TZWFyY2gnKT8udmFsdWU7Y29uc3QgYnRuPSQoJ3RtTG9jYXRpb25TZWFyY2hCdG4nKTtpZihidG4pYnRuLmRpc2FibGVkPXRydWU7dHJ5e2NvbnN0IHJvd3M9YXdhaXQgZ2VvY29kZVF1ZXJ5KHEpO3JlbmRlckdlb2NvZGVSZXN1bHRzKHJvd3MpfWNhdGNoKGVycil7YXBwLnNob3dUb2FzdCgn2KfZhNio2K3YqyDYudmGINmF2YjZgti5JyxlcnIubWVzc2FnZSwnZXJyb3InLDU1MDApfWZpbmFsbHl7aWYoYnRuKWJ0bi5kaXNhYmxlZD1mYWxzZX19CmFzeW5jIGZ1bmN0aW9uIHVzZVJlYWR5TG9jYXRpb24oKXtjb25zdCB4PXNlbGVjdGVkUmVhZHlMb2NhdGlvbigpO2lmKCF4KXJldHVybiBhcHAuc2hvd1RvYXN0KCfYp9iu2KrYsSDZhdmI2YLYudin2YsnLCfYp9iu2KrYsSDYp9mE2KzZh9ipINmF2YYg2KfZhNmC2KfYptmF2Kkg2KPZiNmE2KfZiycsJ2Vycm9yJyk7Y29uc3QgbGF0PWxvY2F0aW9uTnVtYmVyKHgubGF0KSxsbmc9bG9jYXRpb25OdW1iZXIoeC5sbmcpO2lmKGxhdCE9PW51bGwmJmxuZyE9PW51bGwpe3VwZGF0ZUxvY2F0aW9uRmllbGRzKGxhdCxsbmcse25hbWU6eC5uYW1lLHVybDp4Lm1hcHNfdXJsLHJhZGl1czp4LnJhZGl1c19tLG1lc3NhZ2U6J9iq2YUg2KfYrtiq2YrYp9ixINin2YTZhdmI2YLYuSDYp9mE2KzYp9mH2LInfSk7cmV0dXJufWNvbnN0IGJ0bj0kKCd0bVVzZVJlYWR5TG9jYXRpb24nKTtpZihidG4pYnRuLmRpc2FibGVkPXRydWU7dHJ5e2NvbnN0IHJvd3M9YXdhaXQgZ2VvY29kZVF1ZXJ5KHguYWRkcmVzc3x8eC5uYW1lKTtpZighcm93cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINiv2KjZiNizINiq2YTZgtin2KbZii4g2K3Yr9iv2Ycg2YrYr9mI2YrYp9mLLicpO2NvbnN0IHI9cm93c1swXTt1cGRhdGVMb2NhdGlvbkZpZWxkcyhOdW1iZXIoci5sYXQpLE51bWJlcihyLmxvbikse25hbWU6eC5uYW1lLHJhZGl1czp4LnJhZGl1c19tLG1lc3NhZ2U6eC52ZXJpZmllZD8n2KrZhSDYqtit2K/ZitivINin2YTZhdmI2YLYuSDYp9mE2KzYp9mH2LInOifYsdin2KzYuSDYp9mE2K/YqNmI2LMg2YLYqNmEINin2YTYrdmB2LgnfSk7JCgndG1Mb2NhdGlvblNlYXJjaCcpLnZhbHVlPXguYWRkcmVzc3x8eC5uYW1lO2lmKCF4LnZlcmlmaWVkKWFwcC5zaG93VG9hc3QoJ9ix2KfYrNi5INin2YTYr9io2YjYsycsJ9mH2LDYpyDYp9mE2YXZiNmC2Lkg2KrZhSDYqtit2K/Zitiv2Ycg2KjYp9mE2KjYrdir2Jsg2K3YsdmR2YMg2KfZhNiv2KjZiNizINil2YTZiSDYp9mE2YXYr9iu2YQg2KfZhNi12K3ZititINmC2KjZhCDYrdmB2Lgg2KfZhNmF2YfZhdipLicsJ2luZm8nLDY1MDApfWNhdGNoKGVycil7YXBwLnNob3dUb2FzdCgn2KfZhNmF2YjZgti5INin2YTYrNin2YfYsicsZXJyLm1lc3NhZ2UsJ2Vycm9yJyw2MDAwKX1maW5hbGx5e2lmKGJ0bilidG4uZGlzYWJsZWQ9ZmFsc2V9fQphc3luYyBmdW5jdGlvbiBzYXZlQ3VycmVudFJlYWR5TG9jYXRpb24oKXtjb25zdCBmb3JtPW1hcEZvcm0oKSxsYXQ9bG9jYXRpb25OdW1iZXIoZm9ybT8uZWxlbWVudHMudGFyZ2V0TGF0Py52YWx1ZSksbG5nPWxvY2F0aW9uTnVtYmVyKGZvcm0/LmVsZW1lbnRzLnRhcmdldExuZz8udmFsdWUpLG5hbWU9U3RyaW5nKGZvcm0/LmVsZW1lbnRzLmxvY2F0aW9uTmFtZT8udmFsdWV8fCcnKS50cmltKCk7aWYoIW5hbWV8fGxhdD09PW51bGx8fGxuZz09PW51bGwpcmV0dXJuIGFwcC5zaG93VG9hc3QoJ9io2YrYp9mG2KfYqiDZhtin2YLYtdipJywn2KfZg9iq2Kgg2KfYs9mFINin2YTZhdmI2YLYuSDZiNit2K/YryDYp9mE2K/YqNmI2LMg2KPZiNmE2KfZiycsJ2Vycm9yJyk7Y29uc3QgY2F0ZWdvcnk9JCgndG1Mb2NhdGlvbkNhdGVnb3J5Jyk/LnZhbHVlJiYkKCd0bUxvY2F0aW9uQ2F0ZWdvcnknKS52YWx1ZSE9PSfYp9mE2YPZhCc/JCgndG1Mb2NhdGlvbkNhdGVnb3J5JykudmFsdWU6J9mF2YjYp9mC2Lkg2KfZhNmF2YPYqtioJztjb25zdCByb3c9bm9ybWFsaXplTG9jYXRpb25Sb3coe2lkOmBMT0MtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KS50b1VwcGVyQ2FzZSgpfWAsbmFtZSxjYXRlZ29yeSxhZGRyZXNzOiQoJ3RtTG9jYXRpb25TZWFyY2gnKT8udmFsdWV8fCcnLGxhdCxsbmcscmFkaXVzX206bG9jYXRpb25SYWRpdXMoZm9ybSksbWFwc191cmw6YnVpbGRNYXBzVXJsKGxhdCxsbmcpLGFjdGl2ZTp0cnVlLHNvdXJjZTon2YXZg9iq2KgnLHZlcmlmaWVkOnRydWV9KTt0cnl7Y29uc3Qgcj1hd2FpdCBsb2NhdGlvbnNBcGkoJ3NhdmUnLHJvdyk7aWYoci5sb2NhdGlvbilyb3cuaWQ9ci5sb2NhdGlvbi5pZHx8cm93LmlkO2FwcC5zaG93VG9hc3QoJ9iq2YUg2K3Zgdi4INin2YTZhdmI2YLYuScsJ9ij2LbZitmBINin2YTZhdmI2YLYuSDYpdmE2Ykg2K/ZhNmK2YQg2KfZhNmF2YPYqtioLicsJ3N1Y2Nlc3MnKX1jYXRjaHtjb25zdCBsb2NhbD1yZWFkTG9jYWxMb2NhdGlvbnMoKTtsb2NhbC5wdXNoKHJvdyk7d3JpdGVMb2NhbExvY2F0aW9ucyhsb2NhbCk7YXBwLnNob3dUb2FzdCgn2KrZhSDYrdmB2Lgg2KfZhNmF2YjZgti5INmF2K3ZhNmK2KfZiycsJ9in2YTZgdmE2Ygg2LrZitixINmF2KrYp9itINit2KfZhNmK2KfZi9iMINmI2K3Zj9mB2Lgg2KfZhNmF2YjZgti5INi52YTZiSDZh9iw2Kcg2KfZhNis2YfYp9iyLicsJ2luZm8nLDY1MDApfXRtTG9jYXRpb25zPWRlZHVwZUxvY2F0aW9ucyhbLi4udG1Mb2NhdGlvbnMscm93XSk7cmVuZGVyTG9jYXRpb25EaXJlY3RvcnkoKTskKCd0bVJlYWR5TG9jYXRpb24nKS52YWx1ZT1yb3cuaWR9Cgpjb25zdCBQVUJMSUNfVEFTS19QQUdFPWAke2xvY2F0aW9uLm9yaWdpbn0vcGFnZXMvbGF3eWVyYWk/dmlldz1sYXdhaS10YXNrLXB1YmxpYyZ0PWA7CmZ1bmN0aW9uIHJhbmRvbVNoYXJlVG9rZW4oKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KDI0KTtjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO3JldHVyblsuLi5hXS5tYXAoeD0+eC50b1N0cmluZygxNikucGFkU3RhcnQoMiwnMCcpKS5qb2luKCcnKX0KYXN5bmMgZnVuY3Rpb24gZW5zdXJlU2hhcmVMaW5rKHQpe2NvbnN0IG09ey4uLm1ldGEodCl9O2lmKCFtLnNoYXJlVG9rZW4pbS5zaGFyZVRva2VuPXJhbmRvbVNoYXJlVG9rZW4oKTttLnNoYXJlQWN0aXZlPXRydWU7bS5zaGFyZUNyZWF0ZWRBdD1tLnNoYXJlQ3JlYXRlZEF0fHxub3dJc28oKTt0Lm5vdGU9YXBwLnBhY2tUYXNrTm90ZShub3RlKHQpLG0pO3QudXBkYXRlZEF0PW5vd0lzbygpO2F3YWl0IHNhdmVSZWNvcmQoJ3Rhc2tzJyx0KTtyZXR1cm4gUFVCTElDX1RBU0tfUEFHRStlbmNvZGVVUklDb21wb25lbnQobS5zaGFyZVRva2VuKX0KY29uc3QgVEFTS19SWD0vXFtcW1RBU0s6KFteXF1dKylcXVxdLzsKZnVuY3Rpb24gdGFza0RvY3MoaWQpe3JldHVybihzdGF0ZSgpLmRvY3N8fFtdKS5maWx0ZXIoZD0+IWQuZGVsZXRlZCYmU3RyaW5nKGQudGFza0lkfHwoU3RyaW5nKGQubm90ZXx8JycpLm1hdGNoKFRBU0tfUlgpfHxbXSlbMV18fCcnKT09PVN0cmluZyhpZCkpLnNvcnQoKGEsYik9PlN0cmluZyhiLmRhdGV8fCcnKS5sb2NhbGVDb21wYXJlKFN0cmluZyhhLmRhdGV8fCcnKSkpfQpmdW5jdGlvbiBjbGVhbkRvY05vdGUoZCl7cmV0dXJuIFN0cmluZyhkPy5ub3RlfHwnJykucmVwbGFjZShUQVNLX1JYLCcnKS50cmltKCl9CmZ1bmN0aW9uIHRhc2tEYXRhKHQpe2NvbnN0IHg9YXBwLnVucGFja1Rhc2tOb3RlP2FwcC51bnBhY2tUYXNrTm90ZSh0Lm5vdGUpOm51bGw7cmV0dXJuIHh8fHtub3RlOmFwcC5nZXRUYXNrUGxhaW5Ob3RlKHQpLG1ldGE6YXBwLmdldFRhc2tNZXRhKHQpfX0KZnVuY3Rpb24gbWV0YSh0KXtyZXR1cm4gYXBwLmdldFRhc2tNZXRhKHQpfHx7fX0KZnVuY3Rpb24gbm90ZSh0KXtyZXR1cm4gYXBwLmdldFRhc2tQbGFpbk5vdGUodCl8fCcnfQpmdW5jdGlvbiB1c2VyTmFtZShpZCl7cmV0dXJuKHN0YXRlKCkudXNlcnN8fFtdKS5maW5kKHg9PlN0cmluZyh4LmlkKT09PVN0cmluZyhpZCkpPy5uYW1lfHwnJ30KZnVuY3Rpb24gY2FzZVJvdyhpZCl7cmV0dXJuKHN0YXRlKCkuY2FzZXN8fFtdKS5maW5kKHg9PlN0cmluZyh4LmlkKT09PVN0cmluZyhpZCkpfQpmdW5jdGlvbiBjbGllbnRSb3coaWQpe3JldHVybihzdGF0ZSgpLmNsaWVudHN8fFtdKS5maW5kKHg9PlN0cmluZyh4LmlkKT09PVN0cmluZyhpZCkpfQpmdW5jdGlvbiBjYXNlTGFiZWwoYyl7cmV0dXJuIGM/YCR7Yy5hdXRvTm98fCctJ30g4oCUICR7Y2xpZW50Um93KGMuY2xpZW50SWQpPy5uYW1lfHwn2LrZitixINmF2K3Yr9ivJ30g4oCUICR7Yy5vcHBvbmVudHx8J9io2K/ZiNmGINiu2LXZhSd9YDon2KjYr9mI2YYg2YLYttmK2KknfQpmdW5jdGlvbiBwaWxsKHRleHQsdG9uZT0nJyl7cmV0dXJuYDxzcGFuIGNsYXNzPSJ0bS1waWxsICR7dG9uZX0iPiR7ZXNjKHRleHQpfTwvc3Bhbj5gfQpmdW5jdGlvbiBmbXREYXRlVGltZSh2KXtpZighdilyZXR1cm4nLSc7Y29uc3QgZD1uZXcgRGF0ZSh2KTtyZXR1cm4gTnVtYmVyLmlzTmFOKGQuZ2V0VGltZSgpKT9lc2Modik6bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2FyLUtXJyx7ZGF0ZVN0eWxlOidtZWRpdW0nLHRpbWVTdHlsZTonc2hvcnQnfSkuZm9ybWF0KGQpfQpmdW5jdGlvbiBtYXBzVXJsKGxhdCxsbmcpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUoTnVtYmVyKGxhdCkpJiZOdW1iZXIuaXNGaW5pdGUoTnVtYmVyKGxuZykpP2BodHRwczovL3d3dy5nb29nbGUuY29tL21hcHM/cT0ke051bWJlcihsYXQpfSwke051bWJlcihsbmcpfWA6Jyd9CmZ1bmN0aW9uIGRpc3RhbmNlTShhTGF0LGFMbmcsYkxhdCxiTG5nKXtjb25zdCBSPTYzNzEwMDAscD14PT54Kk1hdGguUEkvMTgwLGRMYXQ9cChiTGF0LWFMYXQpLGRMbmc9cChiTG5nLWFMbmcpLGE9TWF0aC5zaW4oZExhdC8yKSoqMitNYXRoLmNvcyhwKGFMYXQpKSpNYXRoLmNvcyhwKGJMYXQpKSpNYXRoLnNpbihkTG5nLzIpKioyO3JldHVybiBNYXRoLnJvdW5kKDIqUipNYXRoLmF0YW4yKE1hdGguc3FydChhKSxNYXRoLnNxcnQoMS1hKSkpfQpmdW5jdGlvbiB0YXNrU3RhdHVzKHQpe2NvbnN0IHM9YXBwLmdldFRhc2tUaW1pbmcodCksbT1tZXRhKHQpO2lmKCF0LmRvbmUmJnMua2V5PT09J2RvbmUnKXtjb25zdCBkdWU9YXBwLnRhc2tEdWVBdD9hcHAudGFza0R1ZUF0KHQpOm5ldyBEYXRlKGAke3QuZGF0ZXx8YXBwLnRvZGF5KCl9VCR7bS5kdWVUaW1lfHwnMjM6NTknfTowMGApO2NvbnN0IG5vdz1EYXRlLm5vdygpLG1zPWR1ZSBpbnN0YW5jZW9mIERhdGU/ZHVlLmdldFRpbWUoKS1ub3c6TnVtYmVyKGR1ZSktbm93O2lmKG0uYXR0ZW5kZWRBdClyZXR1cm57Li4ucyxrZXk6J2F0dGVuZGVkJyxsYWJlbDon2KrZhSDYp9mE2K3YttmI2LEnfTtpZihOdW1iZXIuaXNGaW5pdGUobXMpJiZtczwtODY0MDAwMDApcmV0dXJuey4uLnMsa2V5OidsYXRlJyxsYWJlbDpg2YXYqtij2K7YsdipINmF2YbYsCAke2FwcC5kdXJhdGlvblRleHQ/YXBwLmR1cmF0aW9uVGV4dChNYXRoLmFicyhtcyktODY0MDAwMDApOifYo9mD2KvYsSDZhdmGINmK2YjZhSd9YH07cmV0dXJuey4uLnMsa2V5OidvcGVuJyxsYWJlbDon2YXZgdiq2YjYrdipJ319cmV0dXJuIHN9CmZ1bmN0aW9uIHN0YXR1c1RvbmUodCl7Y29uc3Qgaz10YXNrU3RhdHVzKHQpLmtleTtyZXR1cm4gaz09PSdsYXRlJz8ncmVkJzprPT09J2RvbmUnPydncmVlbic6az09PSdncmFjZSc/J29yYW5nZSc6az09PSdhdHRlbmRlZCc/J2JsdWUnOidncmF5J30KZnVuY3Rpb24gbWF0Y2hlcyh0KXtjb25zdCBjPWNhc2VSb3codC5jYXNlSWQpLG09bWV0YSh0KSxoYXk9W3QudGl0bGUsbm90ZSh0KSx1c2VyTmFtZSh0LmFzc2lnbmVkVG8pLHQudG8sdC5wcmlvcml0eSxjPy5hdXRvTm8sYz8uY2FzZU5vLGM/Lm9wcG9uZW50LGM/LmNvdXJ0LG0ubG9jYXRpb25OYW1lLG0ubG9jYXRpb25VcmxdLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpO3JldHVybiFzZWFyY2h8fGhheS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSl9CmZ1bmN0aW9uIHZpc2libGUodCl7Y29uc3Qgcz10YXNrU3RhdHVzKHQpO2lmKGZpbHRlcj09PSdhbGwnKXJldHVybiB0cnVlO2lmKGZpbHRlcj09PSdsYXRlJylyZXR1cm4gcy5rZXk9PT0nbGF0ZSc7aWYoZmlsdGVyPT09J3RvZGF5JylyZXR1cm4gdC5kYXRlPT09YXBwLnRvZGF5KCk7aWYoZmlsdGVyPT09J2F0dGVuZGVkJylyZXR1cm4gcy5rZXk9PT0nYXR0ZW5kZWQnO2lmKGZpbHRlcj09PSdkb25lJylyZXR1cm4gcy5rZXk9PT0nZG9uZSc7cmV0dXJuIXQuZG9uZX0KZnVuY3Rpb24gbGlzdFRhc2tzKCl7cmV0dXJuKHN0YXRlKCkudGFza3N8fFtdKS5maWx0ZXIodD0+IXQuZGVsZXRlZCYmbWF0Y2hlcyh0KSYmdmlzaWJsZSh0KSkuc29ydCgoYSxiKT0+e2NvbnN0IEE9dGFza1N0YXR1cyhhKSxCPXRhc2tTdGF0dXMoYik7cmV0dXJuKEEua2V5PT09J2xhdGUnPy0xOjEpLShCLmtleT09PSdsYXRlJz8tMToxKXx8QS5kdWVBdC1CLmR1ZUF0fSl9CmZ1bmN0aW9uIHJlbmRlclN1bW1hcnkoKXtjb25zdCBhbGw9KHN0YXRlKCkudGFza3N8fFtdKS5maWx0ZXIodD0+IXQuZGVsZXRlZCksb3Blbj1hbGwuZmlsdGVyKHQ9PiF0LmRvbmUpLGxhdGU9b3Blbi5maWx0ZXIodD0+dGFza1N0YXR1cyh0KS5rZXk9PT0nbGF0ZScpLHRvZGF5PW9wZW4uZmlsdGVyKHQ9PnQuZGF0ZT09PWFwcC50b2RheSgpKSxhdHRlbmRlZD1vcGVuLmZpbHRlcih0PT50YXNrU3RhdHVzKHQpLmtleT09PSdhdHRlbmRlZCcpOyQoJ3RtU3VtbWFyeScpLmlubmVySFRNTD1bW29wZW4ubGVuZ3RoLCfZhdmB2KrZiNit2KknXSxbdG9kYXkubGVuZ3RoLCfYp9mE2YrZiNmFJ10sW2xhdGUubGVuZ3RoLCfZhdiq2KPYrtix2KknXSxbYXR0ZW5kZWQubGVuZ3RoLCfYqtmFINin2YTYrdi22YjYsSddXS5tYXAoKFtuLGxdKT0+YDxkaXYgY2xhc3M9InRtLXN0YXQiPjxzbWFsbD4ke2x9PC9zbWFsbD48c3Ryb25nPiR7bn08L3N0cm9uZz48L2Rpdj5gKS5qb2luKCcnKX0KZnVuY3Rpb24gcmVuZGVyRmlsdGVycygpe2NvbnN0IGFsbD0oc3RhdGUoKS50YXNrc3x8W10pLmZpbHRlcih0PT4hdC5kZWxldGVkKSxpdGVtcz1bWydvcGVuJywn2KfZhNmF2YHYqtmI2K3YqScsYWxsLmZpbHRlcih0PT4hdC5kb25lKS5sZW5ndGhdLFsndG9kYXknLCfYp9mE2YrZiNmFJyxhbGwuZmlsdGVyKHQ9PiF0LmRvbmUmJnQuZGF0ZT09PWFwcC50b2RheSgpKS5sZW5ndGhdLFsnbGF0ZScsJ9in2YTZhdiq2KPYrtix2KknLGFsbC5maWx0ZXIodD0+IXQuZG9uZSYmdGFza1N0YXR1cyh0KS5rZXk9PT0nbGF0ZScpLmxlbmd0aF0sWydhdHRlbmRlZCcsJ9iq2YUg2KfZhNit2LbZiNixJyxhbGwuZmlsdGVyKHQ9PiF0LmRvbmUmJnRhc2tTdGF0dXModCkua2V5PT09J2F0dGVuZGVkJykubGVuZ3RoXSxbJ2RvbmUnLCfYp9mE2YXZhtis2LLYqScsYWxsLmZpbHRlcih0PT50LmRvbmUpLmxlbmd0aF0sWydhbGwnLCfYp9mE2YPZhCcsYWxsLmxlbmd0aF1dOyQoJ3RtRmlsdGVycycpLmlubmVySFRNTD1pdGVtcy5tYXAoKFtrLGwsbl0pPT5gPGJ1dHRvbiBjbGFzcz0idG0tZmlsdGVyICR7ZmlsdGVyPT09az8nYWN0aXZlJzonJ30iIGRhdGEtdG0tYWN0aW9uPSJmaWx0ZXIiIGRhdGEtZmlsdGVyPSIke2t9Ij4ke2x9ICgke259KTwvYnV0dG9uPmApLmpvaW4oJycpfQpmdW5jdGlvbiByZW5kZXJMaXN0KCl7Y29uc3Qgcm93cz1saXN0VGFza3MoKTskKCd0bUxpc3QnKS5pbm5lckhUTUw9cm93cy5sZW5ndGg/cm93cy5tYXAodD0+e2NvbnN0IGM9Y2FzZVJvdyh0LmNhc2VJZCksbT1tZXRhKHQpLHM9dGFza1N0YXR1cyh0KSxkb2NzPXRhc2tEb2NzKHQuaWQpO3JldHVybmA8YXJ0aWNsZSBjbGFzcz0idG0tY2FyZCAke3Mua2V5fSI+PGRpdiBjbGFzcz0idG0tbWFpbiI+PGI+JHtlc2ModC50aXRsZXx8J9mF2YfZhdipINio2K/ZiNmGINi52YbZiNin2YYnKX08L2I+PHNtYWxsPiR7ZXNjKHVzZXJOYW1lKHQuYXNzaWduZWRUbyl8fHQudG98fCfYutmK2LEg2YXYrdiv2K8nKX0gwrcgJHthcHAuZGF0ZVRleHQodC5kYXRlKX0ke20uc3RhcnRUaW1lP2AgwrcgJHtlc2MobS5zdGFydFRpbWUpfWA6Jyd9JHttLmR1ZVRpbWU/YCDYpdmE2YkgJHtlc2MobS5kdWVUaW1lKX1gOicnfSR7bS5sb2NhdGlvbk5hbWU/YCDCtyAke2VzYyhtLmxvY2F0aW9uTmFtZSl9YDonJ308L3NtYWxsPjxkaXYgY2xhc3M9InRtLW1ldGEiPiR7cGlsbChzLmxhYmVsLHN0YXR1c1RvbmUodCkpfSR7cGlsbCh0LnByaW9yaXR5fHwn2LnYp9iv2YrYqScpfSR7Yz9waWxsKGMuYXV0b05vfHxjLmNhc2VOb3x8J9mC2LbZitipJywnYmx1ZScpOicnfSR7ZG9jcy5sZW5ndGg/cGlsbChgJHtkb2NzLmxlbmd0aH0g2YXYsdmB2YJgKTonJ308L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ0bS1hY3Rpb25zIj48YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNvZnQgYnRuLXNtIiBkYXRhLXRtLWFjdGlvbj0ib3BlbiIgZGF0YS1pZD0iJHt0LmlkfSI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpmb2xkZXItb3Blbi1vdXRsaW5lIj48L2ljb25pZnktaWNvbj7Zgdiq2K08L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdyZWVuIGJ0bi1zbSBidG4taWNvbiIgZGF0YS10bS1hY3Rpb249InNoYXJlIiBkYXRhLWlkPSIke3QuaWR9IiBhcmlhLWxhYmVsPSLZhdi02KfYsdmD2KkiPjxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6c2hhcmUtb3V0bGluZSI+PC9pY29uaWZ5LWljb24+PC9idXR0b24+JHshdC5kb25lJiYhbS5hdHRlbmRlZEF0P2A8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXdoaXRlIGJ0bi1zbSIgZGF0YS10bS1hY3Rpb249ImNoZWNraW4iIGRhdGEtaWQ9IiR7dC5pZH0iPtiq2KPZg9mK2K8g2KfZhNit2LbZiNixPC9idXR0b24+YDonJ30keyF0LmRvbmU/YDxidXR0b24gY2xhc3M9ImJ0biBidG4tZ3JlZW4gYnRuLXNtIiBkYXRhLXRtLWFjdGlvbj0iY29tcGxldGUiIGRhdGEtaWQ9IiR7dC5pZH0iPtiq2YUg2KfZhNil2YbYrNin2LI8L2J1dHRvbj5gOmA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXdoaXRlIGJ0bi1zbSIgZGF0YS10bS1hY3Rpb249InJlb3BlbiIgZGF0YS1pZD0iJHt0LmlkfSI+2KXYudin2K/YqSDZgdiq2K08L2J1dHRvbj5gfTxidXR0b24gY2xhc3M9ImJ0biBidG4td2hpdGUgYnRuLXNtIGJ0bi1pY29uIiBkYXRhLXRtLWFjdGlvbj0iZWRpdCIgZGF0YS1pZD0iJHt0LmlkfSIgYXJpYS1sYWJlbD0i2KrYudiv2YrZhCI+PGljb25pZnktaWNvbiBpY29uPSJsaW5lLW1kOmVkaXQiPjwvaWNvbmlmeS1pY29uPjwvYnV0dG9uPjwvZGl2PjwvYXJ0aWNsZT5gfSkuam9pbignJyk6JzxkaXYgY2xhc3M9ImVtcHR5IGVtcHR5LWFjdGlvbiI+PGljb25pZnktaWNvbiBpY29uPSJsaW5lLW1kOmNsaXBib2FyZC1jaGVjayI+PC9pY29uaWZ5LWljb24+PGI+2YTYpyDYqtmI2KzYryDZhdmH2KfZhSDZhdi32KfYqNmC2Kk8L2I+PHNwYW4+2LrZitmR2LEg2KfZhNmB2YTYqtixINij2Ygg2KPYttmBINmF2YfZhdipINis2K/Zitiv2KkuPC9zcGFuPjxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgZGF0YS10bS1hY3Rpb249Im5ldyI+2KXYttin2YHYqSDZhdmH2YXYqTwvYnV0dG9uPjwvZGl2Pid9CmZ1bmN0aW9uIHJlbmRlcigpe3JlbmRlclN1bW1hcnkoKTtyZW5kZXJGaWx0ZXJzKCk7cmVuZGVyTGlzdCgpfQpmdW5jdGlvbiBjbG9zZU1vZGFsKCl7Y2xlYXJNYXBJbnN0YW5jZSgpOyQoJ3RtTW9kYWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7JCgndG1Nb2RhbEJveCcpLmlubmVySFRNTD0nJztkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2xhd2FpLXRhc2stbW9kYWwtb3BlbicpfQpmdW5jdGlvbiBvcGVuTW9kYWwoaHRtbCl7JCgndG1Nb2RhbEJveCcpLmlubmVySFRNTD1odG1sOyQoJ3RtTW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdsYXdhaS10YXNrLW1vZGFsLW9wZW4nKTtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnskKCd0bU1vZGFsQm94JykucXVlcnlTZWxlY3RvcignLnRtLWJvZHknKT8uc2Nyb2xsVG8oe3RvcDowfSl9KX0KZnVuY3Rpb24gZmllbGQobmFtZSxsYWJlbCx2YWx1ZT0nJyx0eXBlPSd0ZXh0JyxmdWxsPWZhbHNlLGF0dHJzPScnKXtyZXR1cm5gPGRpdiBjbGFzcz0idG0tZmllbGQgJHtmdWxsPydmdWxsJzonJ30iPjxsYWJlbD4ke2xhYmVsfTwvbGFiZWw+PGlucHV0IG5hbWU9IiR7bmFtZX0iIHR5cGU9IiR7dHlwZX0iIHZhbHVlPSIke2VzYyh2YWx1ZSl9IiAke2F0dHJzfT48L2Rpdj5gfQpmdW5jdGlvbiBzZWxlY3QobmFtZSxsYWJlbCxvcHRpb25zLHZhbHVlPScnLGZ1bGw9ZmFsc2Upe3JldHVybmA8ZGl2IGNsYXNzPSJ0bS1maWVsZCAke2Z1bGw/J2Z1bGwnOicnfSI+PGxhYmVsPiR7bGFiZWx9PC9sYWJlbD48c2VsZWN0IG5hbWU9IiR7bmFtZX0iPiR7b3B0aW9ucy5tYXAobz0+e2NvbnN0IHY9dHlwZW9mIG89PT0nc3RyaW5nJz9vOm8udmFsdWUsbD10eXBlb2Ygbz09PSdzdHJpbmcnP286by5sYWJlbDtyZXR1cm5gPG9wdGlvbiB2YWx1ZT0iJHtlc2Modil9IiAke1N0cmluZyh2KT09PVN0cmluZyh2YWx1ZSk/J3NlbGVjdGVkJzonJ30+JHtlc2MobCl9PC9vcHRpb24+YH0pLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PmB9CmZ1bmN0aW9uIGNhc2VQaWNrZXIodmFsdWU9Jycpe2NvbnN0IGNhc2VzPShzdGF0ZSgpLmNhc2VzfHxbXSkuZmlsdGVyKGM9PiFjLmFyY2hpdmVkJiYhYy5kZWxldGVkKSxzZWxlY3RlZD1jYXNlUm93KHZhbHVlKTtyZXR1cm5gPGRpdiBjbGFzcz0idG0tZmllbGQgZnVsbCB0bS1jYXNlLXBpY2tlciIgZGF0YS10bS1jYXNlLXBpY2tlcj48bGFiZWw+2KfZhNmC2LbZitipINin2YTZhdix2KrYqNi32Kk8L2xhYmVsPjxpbnB1dCB0eXBlPSJzZWFyY2giIGRhdGEtdG0tY2FzZS1zZWFyY2ggdmFsdWU9IiR7ZXNjKHNlbGVjdGVkP2Nhc2VMYWJlbChzZWxlY3RlZCk6JycpfSIgcGxhY2Vob2xkZXI9Itin2KjYrdirINio2KfZhNix2YLZhSDYp9mE2KLZhNmKINij2Ygg2KfZhNi52YXZitmEINij2Ygg2KfZhNiu2LXZhSIgYXV0b2NvbXBsZXRlPSJvZmYiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNhc2VJZCIgdmFsdWU9IiR7ZXNjKHZhbHVlKX0iPjxkaXYgY2xhc3M9InRtLWNhc2UtcmVzdWx0cyI+JHtjYXNlcy5tYXAoYz0+YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idG0tY2FzZS1vcHRpb24iIGRhdGEtdG0tY2FzZS1pZD0iJHtjLmlkfSIgZGF0YS10bS1jYXNlLWxhYmVsPSIke2VzYyhjYXNlTGFiZWwoYykpfSIgZGF0YS10bS1jYXNlLXNlYXJjaD0iJHtlc2MoW2MuYXV0b05vLGMuY2FzZU5vLGNsaWVudFJvdyhjLmNsaWVudElkKT8ubmFtZSxjLm9wcG9uZW50LGMuY291cnRdLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpKX0iPjxiPiR7ZXNjKGNhc2VMYWJlbChjKSl9PC9iPjxicj48c21hbGw+JHtlc2MoYy5jYXNlTm98fCctJyl9IMK3ICR7ZXNjKGMuY291cnR8fCctJyl9PC9zbWFsbD48L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj48L2Rpdj5gfQpmdW5jdGlvbiBhdHRhY2hTb3VyY2UocHJlZml4KXtyZXR1cm5gPGRpdiBjbGFzcz0ic2hvdyIgZGF0YS1zb3VyY2U9InVwbG9hZCI+PGlucHV0IG5hbWU9IiR7cHJlZml4fUZpbGVzIiB0eXBlPSJmaWxlIiBtdWx0aXBsZSBhY2NlcHQ9Ii5wZGYsLnBuZywuanBnLC5qcGVnLC53ZWJwLC5kb2MsLmRvY3giPjwvZGl2PjxkaXYgZGF0YS1zb3VyY2U9ImxpbmsiPjxpbnB1dCBuYW1lPSIke3ByZWZpeH1VcmwiIHR5cGU9InVybCIgZGlyPSJsdHIiIHBsYWNlaG9sZGVyPSJodHRwczovLy4uLiI+PC9kaXY+PGRpdiBkYXRhLXNvdXJjZT0ic2NhbiI+PGlucHV0IG5hbWU9IiR7cHJlZml4fVNjYW4iIHR5cGU9ImZpbGUiIGFjY2VwdD0iaW1hZ2UvKiIgY2FwdHVyZT0iZW52aXJvbm1lbnQiIG11bHRpcGxlPjwvZGl2PmB9CmZ1bmN0aW9uIGF0dGFjaFJvdyhpKXtjb25zdCBwPWB0bUF0dCR7aX1gLHR5cGVzPVsn2YXYs9iq2YbYryDYotiu2LEnLCfZg9iq2KfYqCDYsdiz2YXZiicsJ9mF2LDZg9ix2Kkg2K/Zgdin2LknLCfYrdin2YHYuNipINmF2LPYqtmG2K/Yp9iqJywn2LXYrdmK2YHYqSDYp9mE2K/YudmI2YknLCfYrdmD2YUg2KPZiNmEINiv2LHYrNipJywn2KrZgtix2YrYsSDYrtio2YrYsScsJ9mF2K3YttixINiq2YbZgdmK2LAnLCfYtdmI2LHYqSddO3JldHVybmA8ZGl2IGNsYXNzPSJ0bS1hdHRhY2gtcm93IiBkYXRhLWF0dGFjaC1yb3cgZGF0YS1wcmVmaXg9IiR7cH0iPjxkaXY+PHNlbGVjdCBuYW1lPSIke3B9VHlwZSI+JHt0eXBlcy5tYXAoeD0+YDxvcHRpb24+JHt4fTwvb3B0aW9uPmApLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PjxkaXY+PGlucHV0IG5hbWU9IiR7cH1OYW1lIiBwbGFjZWhvbGRlcj0i2KfYs9mFINin2YTZhdix2YHZgiI+PC9kaXY+PGRpdj48c2VsZWN0IG5hbWU9IiR7cH1Nb2RlIj48b3B0aW9uIHZhbHVlPSJ1cGxvYWQiPtmF2YYg2KfZhNmD2YXYqNmK2YjYqtixPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ibGluayI+2LHYp9io2Lcg2YXZhNmBPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ic2NhbiI+2LPZg9in2YYg2KjYp9mE2YPYp9mF2YrYsdinPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0idG0tc291cmNlIj4ke2F0dGFjaFNvdXJjZShwKX08L2Rpdj48ZGl2IGNsYXNzPSJ0bS1ub3RlIj48aW5wdXQgbmFtZT0iJHtwfU5vdGUiIHBsYWNlaG9sZGVyPSLZhdmE2KfYrdi42KkiPjwvZGl2PjxkaXY+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXJlZCBidG4tc20gYnRuLWljb24iIGRhdGEtdG0tYWN0aW9uPSJyZW1vdmUtYXR0YWNoIj48aWNvbmlmeS1pY29uIGljb249InNvbGFyOnRyYXNoLWJpbi10cmFzaC1vdXRsaW5lIj48L2ljb25pZnktaWNvbj48L2J1dHRvbj48L2Rpdj48L2Rpdj5gfQpmdW5jdGlvbiBmb3JtKHRhc2tJZD0nJyl7Y29uc3QgdD0oc3RhdGUoKS50YXNrc3x8W10pLmZpbmQoeD0+eC5pZD09PXRhc2tJZCl8fHt9LG09bWV0YSh0KSx1c2Vycz0oc3RhdGUoKS51c2Vyc3x8W10pLmZpbHRlcih1PT4hdS5kZWxldGVkJiZ1LmFjdGl2ZSE9PWZhbHNlKS5zb3J0KChhLGIpPT5TdHJpbmcoYS5uYW1lfHwnJykubG9jYWxlQ29tcGFyZShTdHJpbmcoYi5uYW1lfHwnJyksJ2FyJykpO2F0dGFjaFNlcT0xO29wZW5Nb2RhbChgPGZvcm0gaWQ9InRtVGFza0Zvcm0iIGRhdGEtaWQ9IiR7ZXNjKHRhc2tJZCl9Ij48ZGl2IGNsYXNzPSJ0bS1oZWFkIj48aDM+PGljb25pZnktaWNvbiBpY29uPSJsaW5lLW1kOmNsaXBib2FyZC1jaGVjayI+PC9pY29uaWZ5LWljb24+JHt0YXNrSWQ/J9iq2LnYr9mK2YQg2KfZhNmF2YfZhdipJzon2KXYttin2YHYqSDZhdmH2YXYqSDZhdmK2K/Yp9mG2YrYqSd9PC9oMz48ZGl2IGNsYXNzPSJ0bS1oZWFkLWFjdGlvbnMiPjxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgdHlwZT0ic3VibWl0Ij7YrdmB2Lgg2KfZhNmF2YfZhdipPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1yZWQiIHR5cGU9ImJ1dHRvbiIgZGF0YS10bS1hY3Rpb249ImNsb3NlIj7Ypdi62YTYp9mCPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0idG0tYm9keSI+PHNlY3Rpb24gY2xhc3M9InRtLXNlY3Rpb24iPjxoND7YqNmK2KfZhtin2Kog2KfZhNiq2YPZhNmK2YE8L2g0PjxkaXYgY2xhc3M9InRtLWdyaWQiPiR7ZmllbGQoJ3RpdGxlJywn2LnZhtmI2KfZhiDYp9mE2YXZh9mF2KknLHQudGl0bGV8fCcnKX0ke2ZpZWxkKCdkYXRlJywn2KrYp9ix2YrYriDYp9mE2YXZh9mF2KknLHQuZGF0ZXx8YXBwLnRvZGF5KCksJ2RhdGUnKX0ke2ZpZWxkKCdzdGFydFRpbWUnLCfZiNmC2Kog2KfZhNio2K/Yp9mK2KknLG0uc3RhcnRUaW1lfHwnMDg6MDAnLCd0aW1lJyl9JHtmaWVsZCgnZHVlVGltZScsJ9ii2K7YsSDZiNmC2Kog2YTZhNil2YbYrNin2LInLG0uZHVlVGltZXx8JzE0OjAwJywndGltZScpfSR7c2VsZWN0KCdhc3NpZ25lZFRvJywn2KfZhNmF2LPYpNmI2YQnLFt7dmFsdWU6JycsbGFiZWw6J9in2K7YqtixINin2YTZhdiz2KTZiNmEJ30sLi4udXNlcnMubWFwKHU9Pih7dmFsdWU6dS5pZCxsYWJlbDpgJHt1Lm5hbWV9IOKAlCAke3Uucm9sZXx8Jyd9YH0pKV0sdC5hc3NpZ25lZFRvfHwnJyl9JHtzZWxlY3QoJ3ByaW9yaXR5Jywn2KfZhNij2YjZhNmI2YrYqScsWyfYudin2K/ZitipJywn2YXZh9mF2KknLCfYudin2KzZhNipJ10sdC5wcmlvcml0eXx8J9i52KfYr9mK2KknKX0ke2Nhc2VQaWNrZXIodC5jYXNlSWR8fCcnKX08ZGl2IGNsYXNzPSJ0bS1maWVsZCBmdWxsIj48bGFiZWw+2YXZhNin2K3YuNin2Kog2YjYqti52YTZitmF2KfYqiDYp9mE2YXZh9mF2Kk8L2xhYmVsPjx0ZXh0YXJlYSBuYW1lPSJub3RlIj4ke2VzYyhub3RlKHQpKX08L3RleHRhcmVhPjwvZGl2PjwvZGl2Pjwvc2VjdGlvbj48c2VjdGlvbiBjbGFzcz0idG0tc2VjdGlvbiI+PGg0Ptin2YTZhdmI2YLYuSDZiNil2KvYqNin2Kog2KfZhNit2LbZiNixPC9oND48ZGl2IGNsYXNzPSJ0bS1sb2NhdGlvbi1waWNrZXIiPjxkaXYgY2xhc3M9InRtLWxvY2F0aW9uLXRvb2xiYXIiPjxzZWxlY3QgaWQ9InRtTG9jYXRpb25DYXRlZ29yeSIgYXJpYS1sYWJlbD0i2KrYtdmG2YrZgSDYp9mE2YXZiNin2YLYuSI+PG9wdGlvbj7Yp9mE2YPZhDwvb3B0aW9uPjwvc2VsZWN0PjxzZWxlY3QgaWQ9InRtUmVhZHlMb2NhdGlvbiIgYXJpYS1sYWJlbD0i2KfZhNmF2YjYp9mC2Lkg2KfZhNis2KfZh9iy2KkiPjxvcHRpb24gdmFsdWU9IiI+2KfYrtiq2LEg2YXZiNmC2LnYp9mLINis2KfZh9iy2KfZizwvb3B0aW9uPjwvc2VsZWN0PjxpbnB1dCBpZD0idG1Mb2NhdGlvblNlYXJjaCIgY2xhc3M9InRtLWxvY2F0aW9uLXNlYXJjaC1pbnB1dCIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0i2KfYqNit2Ksg2LnZhiDZhdit2YPZhdip2Iwg2YbZitin2KjYqdiMINmF2K7ZgdixINij2Ygg2LnZhtmI2KfZhiI+PGJ1dHRvbiBpZD0idG1Mb2NhdGlvblNlYXJjaEJ0biIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zb2Z0IiBkYXRhLXRtLWFjdGlvbj0ibG9jYXRpb24tc2VhcmNoIj48aWNvbmlmeS1pY29uIGljb249InNvbGFyOm1hZ25pZmVyLW91dGxpbmUiPjwvaWNvbmlmeS1pY29uPtio2K3YqzwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9InRtTG9jYXRpb25SZXN1bHRzIiBjbGFzcz0idG0tbG9jYXRpb24tcmVzdWx0cyI+PC9kaXY+PGRpdiBpZD0idG1Mb2NhdGlvbk1hcCIgY2xhc3M9InRtLWxvY2F0aW9uLW1hcCI+PC9kaXY+PGRpdiBjbGFzcz0idG0tbG9jYXRpb24tYm90dG9tIj48ZGl2PjxkaXYgaWQ9InRtTG9jYXRpb25TdGF0dXMiIGNsYXNzPSJ0bS1sb2NhdGlvbi1zdGF0dXMiPtin2LbYuti3INi52YTZiSDYp9mE2K7YsdmK2LfYqSDYo9mIINin2K7YqtixINmF2YjZgti52KfZiyDYrNin2YfYstin2Ys8L2Rpdj48ZGl2IGNsYXNzPSJ0bS1sb2NhdGlvbi1oaW50Ij7ZitmF2YPZhiDYs9it2Kgg2KfZhNiv2KjZiNizINil2YTZiSDZhdiv2K7ZhCDYp9mE2YXYqNmG2Ykg2KfZhNi12K3Zitit2Iwg2YjYp9mE2K/Yp9im2LHYqSDYqtmF2KvZhCDZhti32KfZgiDYp9mE2K3YttmI2LEuPC9kaXY+PC9kaXY+PGJ1dHRvbiBpZD0idG1Vc2VSZWFkeUxvY2F0aW9uIiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNvZnQiIGRhdGEtdG0tYWN0aW9uPSJsb2NhdGlvbi11c2UtcmVhZHkiPjxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6bWFwLXBvaW50LWFkZC1vdXRsaW5lIj48L2ljb25pZnktaWNvbj7Yp9iz2KrYrtiv2KfZhSDYp9mE2YXZiNmC2Lkg2KfZhNmF2K7Yqtin2LE8L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4td2hpdGUiIGRhdGEtdG0tYWN0aW9uPSJsb2NhdGlvbi1zYXZlLXJlYWR5Ij48aWNvbmlmeS1pY29uIGljb249InNvbGFyOmRpc2tldHRlLW91dGxpbmUiPjwvaWNvbmlmeS1pY29uPtit2YHYuNmHINio2K/ZhNmK2YQg2KfZhNmF2YPYqtioPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0idG0tZ3JpZCIgc3R5bGU9Im1hcmdpbi10b3A6MTBweCI+PGRpdiBjbGFzcz0idG0tZmllbGQgZnVsbCI+PGRpdiBjbGFzcz0idG0tbG9jYXRpb24tY2FyZCI+PGRpdj4ke2ZpZWxkKCdsb2NhdGlvbk5hbWUnLCfYp9iz2YUg2KfZhNmF2YjZgti5JyxtLmxvY2F0aW9uTmFtZXx8JycsJ3RleHQnLGZhbHNlLCdwbGFjZWhvbGRlcj0i2KfZhNmF2K3Zg9mF2Kkg2KPZiCDYpdiv2KfYsdipINin2YTYqtmG2YHZitiwINij2Ygg2KfZhNiu2KjYsdin2KEiJyl9PC9kaXY+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNvZnQiIGRhdGEtdG0tYWN0aW9uPSJjYXB0dXJlLXRhcmdldCI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjptYXAtcG9pbnQtd2F2ZS1vdXRsaW5lIj48L2ljb25pZnktaWNvbj7Yp9iz2KrYrtiv2KfZhSDZhdmI2YLYudmKINin2YTYrdin2YTZijwvYnV0dG9uPjwvZGl2PjwvZGl2PiR7ZmllbGQoJ2xvY2F0aW9uVXJsJywn2LHYp9io2Lcg2KfZhNmF2YjZgti5JyxtLmxvY2F0aW9uVXJsfHwnJywndXJsJyx0cnVlLCdkaXI9Imx0ciIgcGxhY2Vob2xkZXI9Imh0dHBzOi8vbWFwcy5nb29nbGUuY29tLy4uLiInKX08aW5wdXQgbmFtZT0idGFyZ2V0TGF0IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSIke2VzYyhtLnRhcmdldExhdHx8JycpfSI+PGlucHV0IG5hbWU9InRhcmdldExuZyIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJHtlc2MobS50YXJnZXRMbmd8fCcnKX0iPiR7ZmllbGQoJ3JhZGl1cycsJ9mG2LfYp9mCINin2YTYrdi22YjYsSDYqNin2YTZhdiq2LEnLG0ucmFkaXVzfHwyMDAsJ251bWJlcicpfTxkaXYgY2xhc3M9InRtLWZpZWxkIj48bGFiZWw+2KfZhNil2K3Yr9in2KvZitin2Kog2KfZhNmF2LnYqtmF2K/YqTwvbGFiZWw+PGRpdiBjbGFzcz0idG0tY29vcmRzIiBpZD0idG1Db29yZHMiPiR7bS50YXJnZXRMYXQmJm0udGFyZ2V0TG5nP2Ake20udGFyZ2V0TGF0fSwgJHttLnRhcmdldExuZ31gOifZhNmFINmK2KrZhSDYqtit2K/ZitivINin2YTYpdit2K/Yp9ir2YrYp9iqJ308L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ0bS1maWVsZCBmdWxsIj48ZGl2IGNsYXNzPSJ0bS1jaGVja3MiPjxsYWJlbCBjbGFzcz0idG0tY2hlY2siPjxzcGFuPtin2LTYqtix2KfYtyDYp9mE2YTZiNmD2YrYtNmGINi52YbYryDYp9mE2K3YttmI2LEg2YjYp9mE2KXZhtis2KfYsjwvc3Bhbj48aW5wdXQgbmFtZT0icmVxdWlyZUxvY2F0aW9uIiB0eXBlPSJjaGVja2JveCIgJHttLnJlcXVpcmVMb2NhdGlvbiE9PWZhbHNlPydjaGVja2VkJzonJ30+PC9sYWJlbD48bGFiZWwgY2xhc3M9InRtLWNoZWNrIj48c3Bhbj7Yp9i02KrYsdin2Lcg2LXZiNix2Kkg2LnZhtivINiq2KPZg9mK2K8g2KfZhNit2LbZiNixPC9zcGFuPjxpbnB1dCBuYW1lPSJyZXF1aXJlQXR0ZW5kYW5jZVBob3RvIiB0eXBlPSJjaGVja2JveCIgJHttLnJlcXVpcmVBdHRlbmRhbmNlUGhvdG8/J2NoZWNrZWQnOicnfT48L2xhYmVsPjxsYWJlbCBjbGFzcz0idG0tY2hlY2siPjxzcGFuPtin2LTYqtix2KfYtyDYtdmI2LHYqSDYudmG2K8g2KfZhNil2YbYrNin2LI8L3NwYW4+PGlucHV0IG5hbWU9InJlcXVpcmVDb21wbGV0aW9uUGhvdG8iIHR5cGU9ImNoZWNrYm94IiAke20ucmVxdWlyZUNvbXBsZXRpb25QaG90bz8nY2hlY2tlZCc6Jyd9PjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9zZWN0aW9uPjxzZWN0aW9uIGNsYXNzPSJ0bS1zZWN0aW9uIj48aDQ+2YXYsdmB2YLYp9iqINin2YTYqtmD2YTZitmBPC9oND48ZGl2IGNsYXNzPSJ0bS13YXJuaW5nIj7ZitmF2YPZhiDYsdmB2Lkg2LnYr9ipINmF2YTZgdin2KouINin2YTYsdmB2Lkg2YXZhiDYp9mE2YPZhdio2YrZiNiq2LEg2KPZiCDYp9mE2YPYp9mF2YrYsdinINmK2K3Yqtin2Kwg2LHYqNi3INin2YTZhdmH2YXYqSDYqNmC2LbZitipINit2KrZiSDZitmP2K3Zgdi4INiv2KfYrtmEINmF2KzZhNiv2YfYpyDYp9mE2LXYrdmK2K3YjCDYo9mF2Kcg2LHYp9io2Lcg2KfZhNmF2YTZgSDZgdmK2YXZg9mGINil2LbYp9mB2KrZhyDZhdio2KfYtNix2KkuPC9kaXY+PGRpdiBjbGFzcz0idG0tYXR0YWNoLXRhYmxlIiBzdHlsZT0ibWFyZ2luLXRvcDo5cHgiPjxkaXYgY2xhc3M9InRtLWF0dGFjaC1oZWFkIj48ZGl2Ptin2YTZhtmI2Lk8L2Rpdj48ZGl2Ptin2YTYp9iz2YU8L2Rpdj48ZGl2Ptin2YTYt9ix2YrZgtipPC9kaXY+PGRpdj7Yp9mE2YXZhNmBIC8g2KfZhNix2KfYqNi3PC9kaXY+PGRpdj7Yp9mE2YXZhNin2K3YuNipPC9kaXY+PGRpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJ0bUF0dGFjaFJvd3MiPiR7YXR0YWNoUm93KDEpfTwvZGl2PjxkaXYgY2xhc3M9InRtLWFkZC1yb3ciPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zb2Z0IiBkYXRhLXRtLWFjdGlvbj0iYWRkLWF0dGFjaCI+PGljb25pZnktaWNvbiBpY29uPSJsaW5lLW1kOnBsdXMtY2lyY2xlIj48L2ljb25pZnktaWNvbj7Ypdi22KfZgdipINmF2LHZgdmCINii2K7YsTwvYnV0dG9uPjwvZGl2PjwvZGl2Pjwvc2VjdGlvbj48L2Rpdj48ZGl2IGNsYXNzPSJ0bS1mb290Ij48YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIHR5cGU9InN1Ym1pdCI+2K3Zgdi4INin2YTZhdmH2YXYqTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBidG4td2hpdGUiIHR5cGU9ImJ1dHRvbiIgZGF0YS10bS1hY3Rpb249ImNsb3NlIj7YpdmE2LrYp9ihPC9idXR0b24+PC9kaXY+PC9mb3JtPmApO3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+aW5pdFRhc2tNYXAobSkpfQpmdW5jdGlvbiBjb2xsZWN0QXR0YWNobWVudHMoZm9ybSl7cmV0dXJuIHFhKCdbZGF0YS1hdHRhY2gtcm93XScsZm9ybSkubWFwKHI9Pntjb25zdCBwPXIuZGF0YXNldC5wcmVmaXgsbW9kZT1yLnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPSIke3B9TW9kZSJdYCk/LnZhbHVlfHwndXBsb2FkJyxmaWxlcz1BcnJheS5mcm9tKHIucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7cH0ke21vZGU9PT0nc2Nhbic/J1NjYW4nOidGaWxlcyd9Il1gKT8uZmlsZXN8fFtdKSx1cmw9ci5xdWVyeVNlbGVjdG9yKGBbbmFtZT0iJHtwfVVybCJdYCk/LnZhbHVlLnRyaW0oKXx8Jyc7cmV0dXJue3R5cGU6ci5xdWVyeVNlbGVjdG9yKGBbbmFtZT0iJHtwfVR5cGUiXWApPy52YWx1ZXx8J9mF2LPYqtmG2K8g2KLYrtixJyxuYW1lOnIucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7cH1OYW1lIl1gKT8udmFsdWUudHJpbSgpfHwnJyxtb2RlLGZpbGVzLHVybCxub3RlOnIucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7cH1Ob3RlIl1gKT8udmFsdWUudHJpbSgpfHwnJ319KS5maWx0ZXIoeD0+eC5maWxlcy5sZW5ndGh8fHgudXJsKX0KYXN5bmMgZnVuY3Rpb24gc2F2ZVJlY29yZChlbnRpdHkscmVjb3JkKXtyZXR1cm4gYXBwLnNhdmVSZWNvcmQoZW50aXR5LHJlY29yZCl9CmZ1bmN0aW9uIHRhc2tEb2NSZWNvcmQodGFzayxjLGNsaWVudCxiYXNlKXtjb25zdCBmaWxlSWQ9YmFzZS5maWxlSWR8fCcnLHVybD1iYXNlLnVybHx8Jyc7cmV0dXJue2lkOmFwcC5tYWtlSWQoKSx0YXNrSWQ6dGFzay5pZCxjYXNlSWQ6Yz8uaWR8fCcnLGNsaWVudElkOmNsaWVudD8uaWR8fCcnLGNsaWVudE5hbWU6Y2xpZW50Py5uYW1lfHwnJyxvcHBvbmVudDpjPy5vcHBvbmVudHx8JycsYXV0b05vOmM/LmF1dG9Ob3x8JycsY2FzZU5vOmM/LmNhc2VOb3x8JycsdHlwZTpiYXNlLnR5cGV8fCfZhdiz2KrZhtivINii2K7YsScsbmFtZTpiYXNlLm5hbWV8fCfZhdix2YHZgiDZhdmH2YXYqScsdXJsLGRyaXZlVXJsOnVybCxwcmV2aWV3VXJsOmJhc2UucHJldmlld1VybHx8JycsdGh1bWJuYWlsVXJsOmJhc2UudGh1bWJuYWlsVXJsfHwnJyxkb3dubG9hZFVybDpiYXNlLmRvd25sb2FkVXJsfHx1cmwsZGF0ZTphcHAudG9kYXkoKSxub3RlOmBbW1RBU0s6JHt0YXNrLmlkfV1dJHtiYXNlLm5vdGU/YFxuJHtiYXNlLm5vdGV9YDonJ31gLHNvdXJjZU1vZGU6YmFzZS5zb3VyY2VNb2RlfHwndXBsb2FkJyxtaW1lOmJhc2UubWltZVR5cGV8fCcnLG1pbWVUeXBlOmJhc2UubWltZVR5cGV8fCcnLHNpemU6TnVtYmVyKGJhc2Uuc2l6ZXx8MCksYWNjZXNzU3RhdHVzOmJhc2UuYWNjZXNzU3RhdHVzfHwn2K7Yp9i1INio2KfZhNmF2YPYqtioJyxmaWxlSWQsZHJpdmVGaWxlSWQ6ZmlsZUlkLGZvbGRlcklkOmJhc2UuZm9sZGVySWR8fCcnLGZvbGRlclVybDpiYXNlLmZvbGRlclVybHx8JycsdXBsb2FkZWRCeTphcHAuZ2V0VXNlck5hbWUoKSxjcmVhdGVkQXQ6bm93SXNvKCksdXBkYXRlZEF0Om5vd0lzbygpfX0KYXN5bmMgZnVuY3Rpb24gc2F2ZUF0dGFjaG1lbnRzKHRhc2ssaXRlbXMpe2lmKCFpdGVtcy5sZW5ndGgpcmV0dXJuIDA7Y29uc3QgYz1jYXNlUm93KHRhc2suY2FzZUlkKSxjbGllbnQ9Y2xpZW50Um93KGM/LmNsaWVudElkKTtsZXQgY291bnQ9MDtmb3IoY29uc3QgaXRlbSBvZiBpdGVtcyl7aWYoaXRlbS5tb2RlPT09J2xpbmsnKXtpZighL15odHRwcz86XC9cLy9pLnRlc3QoaXRlbS51cmwpKXRocm93IG5ldyBFcnJvcign2LHYp9io2Lcg2YXYsdmB2YIg2LrZitixINi12K3ZititJyk7YXdhaXQgc2F2ZVJlY29yZCgnYXR0YWNobWVudHMnLHRhc2tEb2NSZWNvcmQodGFzayxjLGNsaWVudCx7dHlwZTppdGVtLnR5cGUsbmFtZTppdGVtLm5hbWV8fCfYsdin2KjYtyDZhdix2YHZgicsdXJsOml0ZW0udXJsLHByZXZpZXdVcmw6aXRlbS51cmwsZG93bmxvYWRVcmw6aXRlbS51cmwsbm90ZTppdGVtLm5vdGUsc291cmNlTW9kZTonbGluayd9KSk7Y291bnQrKztjb250aW51ZX1pZighY3x8IWNsaWVudCl0aHJvdyBuZXcgRXJyb3IoJ9in2LHYqNi3INin2YTZhdmH2YXYqSDYqNmC2LbZitipINmC2KjZhCDYsdmB2Lkg2YXZhNmB2KfYqiDZhdmGINin2YTYrNmH2KfYsiDYo9mIINin2YTZg9in2YXZitix2KcnKTtmb3IobGV0IGk9MDtpPGl0ZW0uZmlsZXMubGVuZ3RoO2krKyl7Y29uc3QgZmlsZT1pdGVtLmZpbGVzW2ldLHVwPWF3YWl0IGFwcC51cGxvYWRGaWxlKGZpbGUse2VudGl0eTondGFzaycsZW50aXR5SWQ6dGFzay5pZCxlbnRpdHlOYW1lOnRhc2sudGl0bGUsdGFza0lkOnRhc2suaWQsY2FzZUlkOmMuaWQsY2xpZW50SWQ6Y2xpZW50LmlkLGNsaWVudE5hbWU6Y2xpZW50Lm5hbWUsb3Bwb25lbnQ6Yy5vcHBvbmVudHx8JycsYXV0b05vOmMuYXV0b05vfHwnJyxjYXNlTm86Yy5jYXNlTm98fCcnLG5hbWU6aXRlbS5uYW1lfHxmaWxlLm5hbWUsdHlwZTppdGVtLnR5cGUsZGF0ZTphcHAudG9kYXkoKSxub3RlOml0ZW0ubm90ZX0pO2F3YWl0IHNhdmVSZWNvcmQoJ2F0dGFjaG1lbnRzJyx0YXNrRG9jUmVjb3JkKHRhc2ssYyxjbGllbnQsey4uLnVwLHR5cGU6aXRlbS50eXBlLG5hbWU6aXRlbS5maWxlcy5sZW5ndGg9PT0xJiZpdGVtLm5hbWU/aXRlbS5uYW1lOihpdGVtLm5hbWU/YCR7aXRlbS5uYW1lfSAke2krMX1gOmZpbGUubmFtZSksbm90ZTppdGVtLm5vdGUsc291cmNlTW9kZTondXBsb2FkJ30pKTtjb3VudCsrfX1yZXR1cm4gY291bnR9CmFzeW5jIGZ1bmN0aW9uIHN1Ym1pdEZvcm0oZm9ybSxidXR0b24pewpjb25zdCB0YXNrSWQ9Zm9ybS5kYXRhc2V0LmlkLGlzTmV3PSF0YXNrSWQsb3JpZ2luYWw9dGFza0lkP3N0cnVjdHVyZWRDbG9uZSgoc3RhdGUoKS50YXNrc3x8W10pLmZpbmQoeD0+eC5pZD09PXRhc2tJZCkpOm51bGwsdD1vcmlnaW5hbHx8e2lkOmFwcC5tYWtlSWQoKSxkb25lOmZhbHNlLGNyZWF0ZWRBdDpub3dJc28oKX0sb2xkPW1ldGEodCksb2xkUGxhaW49bm90ZSh0KSxiZWZvcmU9e3RpdGxlOnQudGl0bGV8fCcnLGRhdGU6dC5kYXRlfHwnJyxhc3NpZ25lZFRvOnQuYXNzaWduZWRUb3x8JycscHJpb3JpdHk6dC5wcmlvcml0eXx8JycsY2FzZUlkOnQuY2FzZUlkfHwnJyxzdGFydFRpbWU6b2xkLnN0YXJ0VGltZXx8JycsZHVlVGltZTpvbGQuZHVlVGltZXx8JycsbG9jYXRpb25OYW1lOm9sZC5sb2NhdGlvbk5hbWV8fCcnLHJhZGl1czpOdW1iZXIob2xkLnJhZGl1c3x8MjAwKSxwbGFpbjpvbGRQbGFpbn0sZmQ9bmV3IEZvcm1EYXRhKGZvcm0pLGF0dGFjaG1lbnRzPWNvbGxlY3RBdHRhY2htZW50cyhmb3JtKSxhdD1ub3dJc28oKTsKdC50aXRsZT1TdHJpbmcoZmQuZ2V0KCd0aXRsZScpfHwnJykudHJpbSgpO3QuZGF0ZT1TdHJpbmcoZmQuZ2V0KCdkYXRlJyl8fCcnKS50cmltKCk7dC5hc3NpZ25lZFRvPVN0cmluZyhmZC5nZXQoJ2Fzc2lnbmVkVG8nKXx8JycpLnRyaW0oKTt0LnRvPXVzZXJOYW1lKHQuYXNzaWduZWRUbyk7dC5wcmlvcml0eT1TdHJpbmcoZmQuZ2V0KCdwcmlvcml0eScpfHwn2LnYp9iv2YrYqScpO3QuY2FzZUlkPVN0cmluZyhmZC5nZXQoJ2Nhc2VJZCcpfHwnJykudHJpbSgpOwppZighdC50aXRsZSlyZXR1cm4gYXBwLnNob3dUb2FzdCgn2KjZitin2YbYp9iqINmG2KfZgti12KknLCfYp9mD2KrYqCDYudmG2YjYp9mGINin2YTZhdmH2YXYqScsJ2Vycm9yJyk7CmlmKCF0LmRhdGUpcmV0dXJuIGFwcC5zaG93VG9hc3QoJ9io2YrYp9mG2KfYqiDZhtin2YLYtdipJywn2K3Yr9ivINiq2KfYsdmK2K4g2KfZhNmF2YfZhdipJywnZXJyb3InKTsKaWYoIXQuYXNzaWduZWRUbylyZXR1cm4gYXBwLnNob3dUb2FzdCgn2KjZitin2YbYp9iqINmG2KfZgti12KknLCfYp9iu2KrYsSDYp9mE2YXYs9ik2YjZhCDYudmGINin2YTZhdmH2YXYqScsJ2Vycm9yJyk7CmNvbnN0IHBsYWluPVN0cmluZyhmZC5nZXQoJ25vdGUnKXx8JycpLnRyaW0oKSxtPXsuLi5vbGQsc3RhcnRUaW1lOlN0cmluZyhmZC5nZXQoJ3N0YXJ0VGltZScpfHwnJyksZHVlVGltZTpTdHJpbmcoZmQuZ2V0KCdkdWVUaW1lJyl8fCcnKSxsb2NhdGlvbk5hbWU6U3RyaW5nKGZkLmdldCgnbG9jYXRpb25OYW1lJyl8fCcnKS50cmltKCksbG9jYXRpb25Vcmw6U3RyaW5nKGZkLmdldCgnbG9jYXRpb25VcmwnKXx8JycpLnRyaW0oKSx0YXJnZXRMYXQ6U3RyaW5nKGZkLmdldCgndGFyZ2V0TGF0Jyl8fCcnKSx0YXJnZXRMbmc6U3RyaW5nKGZkLmdldCgndGFyZ2V0TG5nJyl8fCcnKSxyYWRpdXM6TnVtYmVyKGZkLmdldCgncmFkaXVzJyl8fDIwMCkscmVxdWlyZUxvY2F0aW9uOmZkLmdldCgncmVxdWlyZUxvY2F0aW9uJyk9PT0nb24nLHJlcXVpcmVBdHRlbmRhbmNlUGhvdG86ZmQuZ2V0KCdyZXF1aXJlQXR0ZW5kYW5jZVBob3RvJyk9PT0nb24nLHJlcXVpcmVDb21wbGV0aW9uUGhvdG86ZmQuZ2V0KCdyZXF1aXJlQ29tcGxldGlvblBob3RvJyk9PT0nb24nLHNoYXJlVG9rZW46b2xkLnNoYXJlVG9rZW58fHJhbmRvbVNoYXJlVG9rZW4oKSxzaGFyZUFjdGl2ZTpvbGQuc2hhcmVBY3RpdmUhPT1mYWxzZSxzaGFyZUNyZWF0ZWRBdDpvbGQuc2hhcmVDcmVhdGVkQXR8fGF0fTsKaWYoaXNOZXcpewogIG0uY3JlYXRlZEF0PW0uY3JlYXRlZEF0fHx0LmNyZWF0ZWRBdHx8YXQ7CiAgbS5jcmVhdGVkQnlJZD1tLmNyZWF0ZWRCeUlkfHxhcHAuZ2V0VXNlcklkKCk7CiAgbS5jcmVhdGVkQnlOYW1lPW0uY3JlYXRlZEJ5TmFtZXx8YXBwLmdldFVzZXJOYW1lKCk7CiAgYXBwZW5kSGlzdG9yeShtLHt0eXBlOidjcmVhdGVkJyxhdDptLmNyZWF0ZWRBdCx1c2VySWQ6YXBwLmdldFVzZXJJZCgpLHVzZXJOYW1lOmFwcC5nZXRVc2VyTmFtZSgpLGFzc2lnbmVkVG9JZDp0LmFzc2lnbmVkVG8sYXNzaWduZWRUb05hbWU6dXNlck5hbWUodC5hc3NpZ25lZFRvKXx8dC50b3x8JycsdGl0bGU6dC50aXRsZX0pOwp9ZWxzZXsKICBpZihiZWZvcmUuYXNzaWduZWRUbyE9PXQuYXNzaWduZWRUbyl7CiAgICBhcHBlbmRIaXN0b3J5KG0se3R5cGU6J3JlYXNzaWduJyxhdCx1c2VySWQ6YXBwLmdldFVzZXJJZCgpLHVzZXJOYW1lOmFwcC5nZXRVc2VyTmFtZSgpLGZyb21Vc2VySWQ6YmVmb3JlLmFzc2lnbmVkVG8sZnJvbVVzZXJOYW1lOnVzZXJOYW1lKGJlZm9yZS5hc3NpZ25lZFRvKXx8JycsdG9Vc2VySWQ6dC5hc3NpZ25lZFRvLHRvVXNlck5hbWU6dXNlck5hbWUodC5hc3NpZ25lZFRvKXx8dC50b3x8Jyd9KTsKICB9CiAgY29uc3QgY2hhbmdlcz1bXTsKICBpZihiZWZvcmUudGl0bGUhPT10LnRpdGxlKWNoYW5nZXMucHVzaCgn2LnZhtmI2KfZhiDYp9mE2YXZh9mF2KknKTsKICBpZihiZWZvcmUuZGF0ZSE9PXQuZGF0ZSljaGFuZ2VzLnB1c2goJ9iq2KfYsdmK2K4g2KfZhNmF2YfZhdipJyk7CiAgaWYoYmVmb3JlLnN0YXJ0VGltZSE9PW0uc3RhcnRUaW1lfHxiZWZvcmUuZHVlVGltZSE9PW0uZHVlVGltZSljaGFuZ2VzLnB1c2goJ9mI2YLYqiDYp9mE2YXZh9mF2KknKTsKICBpZihiZWZvcmUucHJpb3JpdHkhPT10LnByaW9yaXR5KWNoYW5nZXMucHVzaCgn2KfZhNij2YjZhNmI2YrYqScpOwogIGlmKGJlZm9yZS5jYXNlSWQhPT10LmNhc2VJZCljaGFuZ2VzLnB1c2goJ9in2YTZgti22YrYqSDYp9mE2YXYsdiq2KjYt9ipJyk7CiAgaWYoYmVmb3JlLmxvY2F0aW9uTmFtZSE9PW0ubG9jYXRpb25OYW1lfHxiZWZvcmUucmFkaXVzIT09TnVtYmVyKG0ucmFkaXVzfHwyMDApKWNoYW5nZXMucHVzaCgn2KfZhNmF2YjZgti5INij2Ygg2YbYt9in2YIg2KfZhNit2LbZiNixJyk7CiAgaWYoYmVmb3JlLnBsYWluIT09cGxhaW4pY2hhbmdlcy5wdXNoKCfYp9mE2KrYudmE2YrZhdin2Kog2YjYp9mE2YXZhNin2K3YuNin2KonKTsKICBpZihjaGFuZ2VzLmxlbmd0aClhcHBlbmRIaXN0b3J5KG0se3R5cGU6J3VwZGF0ZScsYXQsdXNlcklkOmFwcC5nZXRVc2VySWQoKSx1c2VyTmFtZTphcHAuZ2V0VXNlck5hbWUoKSxjaGFuZ2VzfSk7Cn0KdC5ub3RlPWFwcC5wYWNrVGFza05vdGUocGxhaW4sbSk7dC51cGRhdGVkQXQ9YXQ7CmJ1dHRvbi5kaXNhYmxlZD10cnVlO2FwcC5zZXRTeW5jKCfYrNin2LHZiiDYrdmB2Lgg2KfZhNmF2YfZhdipJywnbG9hZGluZycpOwp0cnl7CiAgYXdhaXQgc2F2ZVJlY29yZCgndGFza3MnLHQpOwogIGNvbnN0IGNvdW50PWF3YWl0IHNhdmVBdHRhY2htZW50cyh0LGF0dGFjaG1lbnRzKTsKICBhcHAucmVmcmVzaFVJKCk7Y2xvc2VNb2RhbCgpO3JlbmRlcigpO2FwcC5zZXRTeW5jKCfYqtmFINit2YHYuCDYp9mE2YXZh9mF2KknLCdzdWNjZXNzJyk7CiAgYXBwLnNob3dUb2FzdCgn2KrZhSDYp9mE2K3Zgdi4Jyxjb3VudD9g2KrZhSDYrdmB2Lgg2KfZhNmF2YfZhdipINmI2LHZgdi5ICR7Y291bnR9INmF2LHZgdmCLmA6J9iq2YUg2K3Zgdi4INin2YTZhdmH2YXYqSDYqNmG2KzYp9itLicsJ3N1Y2Nlc3MnKQp9Y2F0Y2goZXJyKXsKICBhcHAuc2V0U3luYygn2KrYudiw2LEg2K3Zgdi4INin2YTZhdmH2YXYqScsJ2Vycm9yJyk7YXBwLnNob3dUb2FzdCgn2KrYudiw2LEg2KfZhNit2YHYuCcsZXJyLm1lc3NhZ2V8fCfYrti32KMg2LrZitixINmF2KrZiNmC2LknLCdlcnJvcicsNzAwMCkKfWZpbmFsbHl7YnV0dG9uLmRpc2FibGVkPWZhbHNlfQp9CmZ1bmN0aW9uIHRpbWVsaW5lQWN0b3IoZSl7CmNvbnN0IGRpcmVjdD1TdHJpbmcoZS51c2VyTmFtZXx8ZS5hY3Rvck5hbWV8fCcnKS50cmltKCk7CmNvbnN0IHJlc29sdmVkPXVzZXJOYW1lKGUudXNlcklkfHxlLmFjdG9ySWR8fGRpcmVjdCk7CnJldHVybiByZXNvbHZlZHx8ZGlyZWN0fHwn2KfZhNmG2LjYp9mFJwp9CmZ1bmN0aW9uIHRpbWVsaW5lRGF0ZVZhbHVlKHYpe2NvbnN0IGQ9bmV3IERhdGUodnx8JycpO3JldHVybiBOdW1iZXIuaXNOYU4oZC5nZXRUaW1lKCkpPzA6ZC5nZXRUaW1lKCl9CmZ1bmN0aW9uIHRpbWVsaW5lSGFzKGhpc3RvcnksdHlwZSxhdCl7Y29uc3QgdGFyZ2V0PXRpbWVsaW5lRGF0ZVZhbHVlKGF0KTtyZXR1cm4gaGlzdG9yeS5zb21lKGU9PmUudHlwZT09PXR5cGUmJighdGFyZ2V0fHxNYXRoLmFicyh0aW1lbGluZURhdGVWYWx1ZShlLmF0KS10YXJnZXQpPDIwMDApKX0KZnVuY3Rpb24gdGFza1RpbWVsaW5lKHQsbSxkb2NzKXsKY29uc3QgaGlzdG9yeT1BcnJheS5pc0FycmF5KG0uaGlzdG9yeSk/bS5oaXN0b3J5Lm1hcCh4PT4oey4uLnh9KSk6W107CmNvbnN0IGNyZWF0ZWRBdD1tLmNyZWF0ZWRBdHx8dC5jcmVhdGVkQXR8fHQuY3JlYXRlZF9hdHx8Jyc7CmlmKGNyZWF0ZWRBdCYmIXRpbWVsaW5lSGFzKGhpc3RvcnksJ2NyZWF0ZWQnLGNyZWF0ZWRBdCkpaGlzdG9yeS5wdXNoKHt0eXBlOidjcmVhdGVkJyxhdDpjcmVhdGVkQXQsdXNlcklkOm0uY3JlYXRlZEJ5SWR8fCcnLHVzZXJOYW1lOm0uY3JlYXRlZEJ5TmFtZXx8JycsYXNzaWduZWRUb0lkOnQuYXNzaWduZWRUbyxhc3NpZ25lZFRvTmFtZTp1c2VyTmFtZSh0LmFzc2lnbmVkVG8pfHx0LnRvfHwnJyxzeW50aGV0aWM6dHJ1ZX0pOwppZihtLmF0dGVuZGVkQXQmJiF0aW1lbGluZUhhcyhoaXN0b3J5LCdjaGVja2luJyxtLmF0dGVuZGVkQXQpKWhpc3RvcnkucHVzaCh7dHlwZTonY2hlY2tpbicsYXQ6bS5hdHRlbmRlZEF0LHVzZXJOYW1lOm0uYXR0ZW5kZWRCeXx8dXNlck5hbWUodC5hc3NpZ25lZFRvKXx8dC50b3x8JycsZGlzdGFuY2U6bS5hdHRlbmRhbmNlRGlzdGFuY2Usbm90ZTptLmF0dGVuZGFuY2VOb3RlLGxhdDptLmF0dGVuZGFuY2VMYXQsbG5nOm0uYXR0ZW5kYW5jZUxuZyxzeW50aGV0aWM6dHJ1ZX0pOwppZigobS5jb21wbGV0ZWRBdHx8dC5jb21wbGV0ZWRBdCkmJiF0aW1lbGluZUhhcyhoaXN0b3J5LCdjb21wbGV0ZScsbS5jb21wbGV0ZWRBdHx8dC5jb21wbGV0ZWRBdCkpaGlzdG9yeS5wdXNoKHt0eXBlOidjb21wbGV0ZScsYXQ6bS5jb21wbGV0ZWRBdHx8dC5jb21wbGV0ZWRBdCx1c2VyTmFtZTp0LmNvbXBsZXRlZEJ5fHxtLmNvbXBsZXRlZEJ5fHx1c2VyTmFtZSh0LmFzc2lnbmVkVG8pfHx0LnRvfHwnJyxkaXN0YW5jZTptLmNvbXBsZXRpb25EaXN0YW5jZSxub3RlOm0uY29tcGxldGlvbk5vdGUsbGF0Om0uY29tcGxldGlvbkxhdCxsbmc6bS5jb21wbGV0aW9uTG5nLHN5bnRoZXRpYzp0cnVlfSk7Cihkb2NzfHxbXSkuZm9yRWFjaChkPT5oaXN0b3J5LnB1c2goe3R5cGU6J2F0dGFjaG1lbnQnLGF0OmQuY3JlYXRlZEF0fHxkLmNyZWF0ZWRfYXR8fGQuZGF0ZXx8JycsdXNlck5hbWU6ZC51cGxvYWRlZEJ5fHxkLmNyZWF0ZWRCeXx8JycsZG9jSWQ6ZC5pZCxkb2NOYW1lOmQubmFtZXx8J9mF2LHZgdmCJyxkb2NUeXBlOmQudHlwZXx8ZC5taW1lVHlwZXx8JycsZG9jVXJsOmFwcC5nZXREb2NWaWV3TGluayhkKXx8YXBwLmdldERvY1ByZXZpZXdMaW5rKGQpfHwnJ30pKTsKY29uc3Qgc2Vlbj1uZXcgU2V0KCk7CnJldHVybiBoaXN0b3J5LmZpbHRlcihlPT57Y29uc3Qga2V5PVtlLnR5cGUsZS5hdCxlLnVzZXJJZHx8ZS51c2VyTmFtZSxlLm5vdGUsZS5kb2NJZF0uam9pbignfCcpO2lmKHNlZW4uaGFzKGtleSkpcmV0dXJuIGZhbHNlO3NlZW4uYWRkKGtleSk7cmV0dXJuIHRydWV9KS5zb3J0KChhLGIpPT50aW1lbGluZURhdGVWYWx1ZShhLmF0KS10aW1lbGluZURhdGVWYWx1ZShiLmF0KSkKfQpmdW5jdGlvbiB0aW1lbGluZUluZm8odHlwZSl7CmNvbnN0IG1hcD17CmNyZWF0ZWQ6WyfYpdmG2LTYp9ihINin2YTZhdmH2YXYqScsJ3NvbGFyOmFkZC1jaXJjbGUtb3V0bGluZScsJ2NyZWF0ZWQnXSwKYXNzaWduOlsn2KXYs9mG2KfYryDYp9mE2YXZh9mF2KknLCdzb2xhcjp1c2VyLXBsdXMtb3V0bGluZScsJ2Fzc2lnbiddLApyZWFzc2lnbjpbJ9iq2K3ZiNmK2YQg2KfZhNmF2LPYpNmI2YQnLCdzb2xhcjp1c2Vycy1ncm91cC1yb3VuZGVkLW91dGxpbmUnLCdyZWFzc2lnbiddLAp1cGRhdGU6WyfYqti52K/ZitmEINio2YrYp9mG2KfYqiDYp9mE2YXZh9mF2KknLCdsaW5lLW1kOmVkaXQnLCd1cGRhdGUnXSwKY2hlY2tpbjpbJ9iq2KPZg9mK2K8g2KfZhNit2LbZiNixJywnc29sYXI6bWFwLXBvaW50LXdhdmUtb3V0bGluZScsJ2NoZWNraW4nXSwKY29tcGxldGU6WyfYpdmG2KzYp9iyINin2YTZhdmH2YXYqScsJ2xpbmUtbWQ6Y29uZmlybS1jaXJjbGUnLCdjb21wbGV0ZSddLApyZW9wZW46WyfYpdi52KfYr9ipINmB2KrYrSDYp9mE2YXZh9mF2KknLCdsaW5lLW1kOnJvdGF0ZS0yNzAnLCdyZW9wZW4nXSwKYXR0YWNobWVudDpbJ9il2LbYp9mB2Kkg2YXYsdmB2YInLCdzb2xhcjpwYXBlcmNsaXAtb3V0bGluZScsJ2F0dGFjaG1lbnQnXQp9OwpyZXR1cm4gbWFwW3R5cGVdfHxbJ9il2KzYsdin2KEg2LnZhNmJINin2YTZhdmH2YXYqScsJ3NvbGFyOmhpc3Rvcnktb3V0bGluZScsJ3VwZGF0ZSddCn0KZnVuY3Rpb24gdGltZWxpbmVEZXNjcmlwdGlvbihlKXsKY29uc3QgYWN0b3I9dGltZWxpbmVBY3RvcihlKSxmcm9tPXVzZXJOYW1lKGUuZnJvbVVzZXJJZCl8fGUuZnJvbVVzZXJOYW1lfHwn2LrZitixINmF2K3Yr9ivJyx0bz11c2VyTmFtZShlLnRvVXNlcklkfHxlLmFzc2lnbmVkVG9JZCl8fGUudG9Vc2VyTmFtZXx8ZS5hc3NpZ25lZFRvTmFtZXx8J9i62YrYsSDZhdit2K/Yryc7CmlmKGUudHlwZT09PSdjcmVhdGVkJylyZXR1cm5gJHthY3Rvcn0g2KPZhti02KMg2KfZhNmF2YfZhdipINmI2KPYs9mG2K/Zh9inINil2YTZiSAke3RvfS5gOwppZihlLnR5cGU9PT0nYXNzaWduJylyZXR1cm5gJHthY3Rvcn0g2KPYs9mG2K8g2KfZhNmF2YfZhdipINil2YTZiSAke3RvfS5gOwppZihlLnR5cGU9PT0ncmVhc3NpZ24nKXJldHVybmAke2FjdG9yfSDYrdmI2ZHZhCDYp9mE2YXZh9mF2Kkg2YXZhiAke2Zyb219INil2YTZiSAke3RvfS5gOwppZihlLnR5cGU9PT0ndXBkYXRlJylyZXR1cm5gJHthY3Rvcn0g2LnYr9mR2YQ6ICR7KEFycmF5LmlzQXJyYXkoZS5jaGFuZ2VzKT9lLmNoYW5nZXM6W10pLmpvaW4oJ9iMICcpfHwn2KjZitin2YbYp9iqINin2YTZhdmH2YXYqSd9LmA7CmlmKGUudHlwZT09PSdjaGVja2luJylyZXR1cm5gJHthY3Rvcn0g2KPZg9ivINit2LbZiNix2Ycke2Uubm90ZT9gLlxu2KfZhNmF2YTYp9it2LjYqTogJHtlLm5vdGV9YDonLid9YDsKaWYoZS50eXBlPT09J2NvbXBsZXRlJylyZXR1cm5gJHthY3Rvcn0g2LPYrNmR2YQg2KXZhtis2KfYsiDYp9mE2YXZh9mF2Kkke2Uubm90ZT9gLlxu2KfZhNmG2KrZitis2Kk6ICR7ZS5ub3RlfWA6Jy4nfWA7CmlmKGUudHlwZT09PSdyZW9wZW4nKXJldHVybmAke2FjdG9yfSDYo9i52KfYryDZgdiq2K0g2KfZhNmF2YfZhdipINmE2YTZhdiq2KfYqNi52Kkg2YXZhiDYrNiv2YrYry5gOwppZihlLnR5cGU9PT0nYXR0YWNobWVudCcpcmV0dXJuYCR7YWN0b3J9INij2LbYp9mBINin2YTZhdix2YHZgjogJHtlLmRvY05hbWV8fCfZhdix2YHZgid9JHtlLmRvY1R5cGU/YCDigJQgJHtlLmRvY1R5cGV9YDonJ30uYDsKcmV0dXJuYCR7YWN0b3J9INmG2YHZkdiwINil2KzYsdin2KHZiyDYudmE2Ykg2KfZhNmF2YfZhdipLmAKfQpmdW5jdGlvbiB0aW1lbGluZUl0ZW0oZSl7CmNvbnN0IFt0aXRsZSxpY29uLHRvbmVdPXRpbWVsaW5lSW5mbyhlLnR5cGUpLGxhdD1OdW1iZXIoZS5sYXQpLGxuZz1OdW1iZXIoZS5sbmcpLGhhc0xvYz1OdW1iZXIuaXNGaW5pdGUobGF0KSYmTnVtYmVyLmlzRmluaXRlKGxuZyksbWFwVXJsPWhhc0xvYz9tYXBzVXJsKGxhdCxsbmcpOicnLGRpc3RhbmNlPWUuZGlzdGFuY2UhPT11bmRlZmluZWQmJmUuZGlzdGFuY2UhPT1udWxsJiZlLmRpc3RhbmNlIT09Jyc/YCR7ZS5kaXN0YW5jZX0g2YXYqtixYDonJyxzb3VyY2U9ZS5zb3VyY2U9PT0ncHVibGljX2xpbmsnPyfZhdmGINix2KfYqNi3INin2YTZhdmG2K/ZiNioJzonJzsKcmV0dXJuYDxhcnRpY2xlIGNsYXNzPSJ0bS10aW1lLWl0ZW0gJHt0b25lfSI+PGRpdiBjbGFzcz0idG0tdGltZS1pY29uIj48aWNvbmlmeS1pY29uIGljb249IiR7aWNvbn0iPjwvaWNvbmlmeS1pY29uPjwvZGl2PjxkaXYgY2xhc3M9InRtLXRpbWUtY2FyZCI+PGRpdiBjbGFzcz0idG0tdGltZS1oZWFkIj48Yj4ke3RpdGxlfTwvYj48dGltZT4ke2ZtdERhdGVUaW1lKGUuYXR8fCcnKX08L3RpbWU+PC9kaXY+PGRpdiBjbGFzcz0idG0tdGltZS1hY3RvciI+JHtlc2ModGltZWxpbmVBY3RvcihlKSl9PC9kaXY+PGRpdiBjbGFzcz0idG0tdGltZS10ZXh0Ij4ke2VzYyh0aW1lbGluZURlc2NyaXB0aW9uKGUpKX08L2Rpdj48ZGl2IGNsYXNzPSJ0bS10aW1lLW1ldGEiPiR7ZGlzdGFuY2U/YDxzcGFuIGNsYXNzPSJ0bS10aW1lLXRhZyI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpydWxlci1hbmd1bGFyLW91dGxpbmUiPjwvaWNvbmlmeS1pY29uPiR7ZXNjKGRpc3RhbmNlKX08L3NwYW4+YDonJ30ke3NvdXJjZT9gPHNwYW4gY2xhc3M9InRtLXRpbWUtdGFnIj48aWNvbmlmeS1pY29uIGljb249InNvbGFyOmxpbmstcm91bmQtYW5nbGUtb3V0bGluZSI+PC9pY29uaWZ5LWljb24+JHtzb3VyY2V9PC9zcGFuPmA6Jyd9PC9kaXY+JHttYXBVcmx8fGUuZG9jVXJsP2A8ZGl2IGNsYXNzPSJ0bS10aW1lLWFjdGlvbnMiPiR7bWFwVXJsP2A8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNvZnQgYnRuLXNtIiBkYXRhLXRtLWFjdGlvbj0iZG9jLW9wZW4iIGRhdGEtdXJsPSIke2VzYyhtYXBVcmwpfSI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjptYXAtcG9pbnQtd2F2ZS1vdXRsaW5lIj48L2ljb25pZnktaWNvbj7Zgdiq2K0g2KfZhNmE2YjZg9mK2LTZhjwvYnV0dG9uPmA6Jyd9JHtlLmRvY1VybD9gPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zb2Z0IGJ0bi1zbSIgZGF0YS10bS1hY3Rpb249ImRvYy1vcGVuIiBkYXRhLXVybD0iJHtlc2MoZS5kb2NVcmwpfSI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpwYXBlcmNsaXAtb3V0bGluZSI+PC9pY29uaWZ5LWljb24+2YHYqtitINin2YTZhdix2YHZgjwvYnV0dG9uPmA6Jyd9PC9kaXY+YDonJ308L2Rpdj48L2FydGljbGU+YAp9CmZ1bmN0aW9uIHRpbWVsaW5lSHRtbCh0LG0sZG9jcyl7CmNvbnN0IGV2ZW50cz10YXNrVGltZWxpbmUodCxtLGRvY3MpOwpyZXR1cm4gZXZlbnRzLmxlbmd0aD9gPGRpdiBjbGFzcz0idG0tdGltZWxpbmUtbm90ZSI+2YrYudix2LYg2YfYsNinINin2YTZhdiz2KfYsSDZhdmGINin2LPYqtmE2YUg2KfZhNmF2YfZhdipINmI2YjZgtiqINin2YTYrdi22YjYsSDZiNin2YTYpdmG2KzYp9iyINmI2KfZhNiq2K3ZiNmK2YTYp9iqINmI2KfZhNmF2LHZgdmC2KfYqiDYqNin2YTYqtiz2YTYs9mELjwvZGl2PjxkaXYgY2xhc3M9InRtLXRpbWVsaW5lIj4ke2V2ZW50cy5tYXAodGltZWxpbmVJdGVtKS5qb2luKCcnKX08L2Rpdj5gOic8ZGl2IGNsYXNzPSJ0bS10aW1lLWVtcHR5Ij7ZhNinINmK2YjYrNivINiz2KzZhCDYqtmG2YHZitiw2Yog2YTZh9iw2Ycg2KfZhNmF2YfZhdipINit2KrZiSDYp9mE2KLZhi48L2Rpdj4nCn0KZnVuY3Rpb24gZGV0YWlsKHRhc2tJZCl7CmNvbnN0IHQ9KHN0YXRlKCkudGFza3N8fFtdKS5maW5kKHg9PnguaWQ9PT10YXNrSWQpO2lmKCF0KXJldHVybjsKY29uc3QgYz1jYXNlUm93KHQuY2FzZUlkKSxtPW1ldGEodCkscz10YXNrU3RhdHVzKHQpLGRvY3M9dGFza0RvY3ModC5pZCksbG9jPW0ubG9jYXRpb25Vcmx8fG1hcHNVcmwobS50YXJnZXRMYXQsbS50YXJnZXRMbmcpOwpvcGVuTW9kYWwoYDxkaXYgY2xhc3M9InRtLWhlYWQiPjxoMz48aWNvbmlmeS1pY29uIGljb249InNvbGFyOmNsaXBib2FyZC1saXN0LW91dGxpbmUiPjwvaWNvbmlmeS1pY29uPtiq2YHYp9i12YrZhCDYp9mE2YXZh9mF2Kk8L2gzPjxkaXYgY2xhc3M9InRtLWhlYWQtYWN0aW9ucyI+PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBkYXRhLXRtLWFjdGlvbj0iZWRpdCIgZGF0YS1pZD0iJHt0LmlkfSI+2KrYudiv2YrZhDwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBidG4tZ3JlZW4iIGRhdGEtdG0tYWN0aW9uPSJzaGFyZSIgZGF0YS1pZD0iJHt0LmlkfSI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpzaGFyZS1vdXRsaW5lIj48L2ljb25pZnktaWNvbj7Zhdi02KfYsdmD2Kk8L2J1dHRvbj4keyF0LmRvbmUmJiFtLmF0dGVuZGVkQXQ/YDxidXR0b24gY2xhc3M9ImJ0biBidG4td2hpdGUiIGRhdGEtdG0tYWN0aW9uPSJjaGVja2luIiBkYXRhLWlkPSIke3QuaWR9Ij7Yqtij2YPZitivINin2YTYrdi22YjYsTwvYnV0dG9uPmA6Jyd9JHshdC5kb25lP2A8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdyZWVuIiBkYXRhLXRtLWFjdGlvbj0iY29tcGxldGUiIGRhdGEtaWQ9IiR7dC5pZH0iPtiq2YUg2KfZhNil2YbYrNin2LI8L2J1dHRvbj5gOmA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXdoaXRlIiBkYXRhLXRtLWFjdGlvbj0icmVvcGVuIiBkYXRhLWlkPSIke3QuaWR9Ij7Ypdi52KfYr9ipINmB2KrYrTwvYnV0dG9uPmB9PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1yZWQiIGRhdGEtdG0tYWN0aW9uPSJjbG9zZSI+2KXYutmE2KfZgjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InRtLWJvZHkiPjxzZWN0aW9uIGNsYXNzPSJ0bS1zZWN0aW9uIj48aDQ+JHtlc2ModC50aXRsZSl9PC9oND48ZGl2IGNsYXNzPSJ0bS1tZXRhIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4Ij4ke3BpbGwocy5sYWJlbCxzdGF0dXNUb25lKHQpKX0ke3BpbGwodC5wcmlvcml0eXx8J9i52KfYr9mK2KknKX0ke2RvY3MubGVuZ3RoP3BpbGwoYCR7ZG9jcy5sZW5ndGh9INmF2LHZgdmCYCk6Jyd9PC9kaXY+PGRpdiBjbGFzcz0idG0tZGV0YWlscyI+JHtkZXRhaWxDZWxsKCfYp9mE2KrYp9ix2YrYricsYXBwLmRhdGVUZXh0KHQuZGF0ZSkpfSR7ZGV0YWlsQ2VsbCgn2KfZhNmI2YLYqicsYCR7bS5zdGFydFRpbWV8fCctJ30g4oCUICR7bS5kdWVUaW1lfHwnLSd9YCl9JHtkZXRhaWxDZWxsKCfYp9mE2YXYs9ik2YjZhCDYp9mE2K3Yp9mE2YonLHVzZXJOYW1lKHQuYXNzaWduZWRUbyl8fHQudG98fCctJyl9JHtkZXRhaWxDZWxsKCfYp9mE2YLYttmK2KknLGM/YCR7Yy5hdXRvTm98fCctJ30g4oCUICR7Yy5jYXNlTm98fCctJ31gOictJyl9JHtkZXRhaWxDZWxsKCfYp9mE2K7YtdmFJyxjPy5vcHBvbmVudHx8Jy0nKX0ke2RldGFpbENlbGwoJ9in2YTZhdmI2YLYuScsbS5sb2NhdGlvbk5hbWV8fCctJyl9JHtkZXRhaWxDZWxsKCfYqtij2YPZitivINin2YTYrdi22YjYsSDYp9mE2K3Yp9mE2YonLG0uYXR0ZW5kZWRBdD9mbXREYXRlVGltZShtLmF0dGVuZGVkQXQpOifZhNmFINmK2KrZhScpfSR7ZGV0YWlsQ2VsbCgn2KfZhNil2YbYrNin2LIg2KfZhNit2KfZhNmKJyxtLmNvbXBsZXRlZEF0P2ZtdERhdGVUaW1lKG0uY29tcGxldGVkQXQpOifZhNmFINmK2KrZhScpfSR7ZGV0YWlsQ2VsbCgn2KfZhNmF2LPYp9mB2Kkg2LnZhtivINin2YTYrdi22YjYsScsbS5hdHRlbmRhbmNlRGlzdGFuY2UhPT11bmRlZmluZWQ/YCR7bS5hdHRlbmRhbmNlRGlzdGFuY2V9INmF2KrYsWA6Jy0nKX0ke2RldGFpbENlbGwoJ9mF2YTYp9it2LjYp9iqINin2YTZhdmH2YXYqScsbm90ZSh0KXx8Jy0nLHRydWUpfSR7ZGV0YWlsQ2VsbCgn2YXZhNin2K3YuNipINin2YTYrdi22YjYsSDYp9mE2K3Yp9mE2YrYqScsbS5hdHRlbmRhbmNlTm90ZXx8Jy0nLHRydWUpfSR7ZGV0YWlsQ2VsbCgn2YbYqtmK2KzYqSDYp9mE2KXZhtis2KfYsiDYp9mE2K3Yp9mE2YrYqScsbS5jb21wbGV0aW9uTm90ZXx8Jy0nLHRydWUpfTwvZGl2PiR7bG9jP2A8YSBjbGFzcz0iYnRuIGJ0bi1zb2Z0IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4IiBocmVmPSIke2VzYyhsb2MpfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPjxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6bWFwLXBvaW50LXdhdmUtb3V0bGluZSI+PC9pY29uaWZ5LWljb24+2YHYqtitINin2YTZhdmI2YLYuTwvYT5gOicnfTwvc2VjdGlvbj48c2VjdGlvbiBjbGFzcz0idG0tc2VjdGlvbiI+PGg0PtmF2LPYp9ixINiq2YbZgdmK2LAg2KfZhNmF2YfZhdipPC9oND4ke3RpbWVsaW5lSHRtbCh0LG0sZG9jcyl9PC9zZWN0aW9uPjxzZWN0aW9uIGNsYXNzPSJ0bS1zZWN0aW9uIj48aDQ+2YXYsdmB2YLYp9iqINin2YTZhdmH2YXYqTwvaDQ+JHtkb2NzLmxlbmd0aD9gPGRpdiBjbGFzcz0idG0tZG9jcyI+JHtkb2NzLm1hcChkPT5kb2NDYXJkKGQpKS5qb2luKCcnKX08L2Rpdj5gOic8ZGl2IGNsYXNzPSJlbXB0eSI+2YTYpyDYqtmI2KzYryDZhdix2YHZgtin2Kog2YTZhNmF2YfZhdipLjwvZGl2Pid9PC9zZWN0aW9uPjwvZGl2PmApCn0KZnVuY3Rpb24gZGV0YWlsQ2VsbChsYWJlbCx2YWx1ZSxmdWxsPWZhbHNlKXtyZXR1cm5gPGRpdiBjbGFzcz0idG0tZGV0YWlsICR7ZnVsbD8nZnVsbCc6Jyd9Ij48c21hbGw+JHtsYWJlbH08L3NtYWxsPjxzdHJvbmc+JHtlc2ModmFsdWUpfTwvc3Ryb25nPjwvZGl2PmB9CmZ1bmN0aW9uIGRvY0NhcmQoZCl7Y29uc3QgdXJsPWFwcC5nZXREb2NWaWV3TGluayhkKXx8YXBwLmdldERvY1ByZXZpZXdMaW5rKGQpO3JldHVybmA8YXJ0aWNsZSBjbGFzcz0idG0tZG9jIj48Yj4ke2VzYyhkLm5hbWV8fCfZhdix2YHZgicpfTwvYj48c21hbGw+JHtlc2MoZC50eXBlfHxkLm1pbWVUeXBlfHwnLScpfSDCtyAke2FwcC5kYXRlVGV4dChkLmRhdGUpfTwvc21hbGw+PGRpdiBjbGFzcz0idG0tZG9jLWFjdGlvbnMiPjxidXR0b24gY2xhc3M9ImJ0biBidG4tc29mdCBidG4tc20iIGRhdGEtdG0tYWN0aW9uPSJkb2Mtb3BlbiIgZGF0YS11cmw9IiR7ZXNjKHVybCl9Ij7Zgdiq2K08L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdyZWVuIGJ0bi1zbSBidG4taWNvbiIgZGF0YS10bS1hY3Rpb249ImRvYy1zaGFyZSIgZGF0YS1pZD0iJHtkLmlkfSI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpzaGFyZS1vdXRsaW5lIj48L2ljb25pZnktaWNvbj48L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gYnRuLXJlZCBidG4tc20gYnRuLWljb24iIGRhdGEtdG0tYWN0aW9uPSJkb2MtZGVsZXRlIiBkYXRhLWlkPSIke2QuaWR9Ij48aWNvbmlmeS1pY29uIGljb249InNvbGFyOnRyYXNoLWJpbi10cmFzaC1vdXRsaW5lIj48L2ljb25pZnktaWNvbj48L2J1dHRvbj48L2Rpdj48L2FydGljbGU+YH0KZnVuY3Rpb24gZ2VvKCl7cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9PntpZighbmF2aWdhdG9yLmdlb2xvY2F0aW9uKXJldHVybiByZWplY3QobmV3IEVycm9yKCfYp9mE2KzZh9in2LIg2KPZiCDYp9mE2YXYqti12YHYrSDZhNinINmK2K/YudmFINin2YTZhNmI2YPZiti02YYnKSk7bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihwPT5yZXNvbHZlKHtsYXQ6cC5jb29yZHMubGF0aXR1ZGUsbG5nOnAuY29vcmRzLmxvbmdpdHVkZSxhY2N1cmFjeTpwLmNvb3Jkcy5hY2N1cmFjeX0pLGU9PnJlamVjdChuZXcgRXJyb3IoZS5jb2RlPT09MT8n2KrZhSDYsdmB2LYg2LXZhNin2K3ZitipINin2YTZhdmI2YLYuSc6J9iq2LnYsNixINiq2K3Yr9mK2K8g2KfZhNmF2YjZgti5INin2YTYrdin2YTZiicpKSx7ZW5hYmxlSGlnaEFjY3VyYWN5OnRydWUsdGltZW91dDoxODAwMCxtYXhpbXVtQWdlOjB9KX0pfQphc3luYyBmdW5jdGlvbiBjYXB0dXJlVGFyZ2V0KGJ0bil7YnRuLmRpc2FibGVkPXRydWU7dHJ5e2NvbnN0IHA9YXdhaXQgZ2VvKCk7dXBkYXRlTG9jYXRpb25GaWVsZHMocC5sYXQscC5sbmcse21lc3NhZ2U6YNmF2YjZgti52YMg2KfZhNit2KfZhNmKIOKAlCDYr9mC2KkgJHtNYXRoLnJvdW5kKHAuYWNjdXJhY3kpfdmFYH0pO2FwcC5zaG93VG9hc3QoJ9iq2YUg2KrYrdiv2YrYryDYp9mE2YXZiNmC2LknLCfYqtmFINmI2LbYuSDYp9mE2K/YqNmI2LMg2LnZhNmJINmF2YjZgti52YMg2KfZhNit2KfZhNmKLiDYrdix2ZHZg9mHINil2LDYpyDZg9in2YYg2YXYr9iu2YQg2KfZhNis2YfYqSDZhdiu2KrZhNmB2KfZiy4nLCdzdWNjZXNzJyl9Y2F0Y2goZXJyKXthcHAuc2hvd1RvYXN0KCfYqti52LDYsSDYqtit2K/ZitivINin2YTZhdmI2YLYuScsZXJyLm1lc3NhZ2UsJ2Vycm9yJyw2MDAwKX1maW5hbGx5e2J0bi5kaXNhYmxlZD1mYWxzZX19CmZ1bmN0aW9uIHByb29mTW9kYWwodGFza0lkLGtpbmQpe2NvbnN0IHQ9KHN0YXRlKCkudGFza3N8fFtdKS5maW5kKHg9PnguaWQ9PT10YXNrSWQpLG09bWV0YSh0KSxpc0RvbmU9a2luZD09PSdjb21wbGV0ZSc7aWYoIXQpcmV0dXJuO29wZW5Nb2RhbChgPGZvcm0gaWQ9InRtUHJvb2ZGb3JtIiBkYXRhLWlkPSIke3QuaWR9IiBkYXRhLWtpbmQ9IiR7a2luZH0iPjxkaXYgY2xhc3M9InRtLWhlYWQiPjxoMz48aWNvbmlmeS1pY29uIGljb249InNvbGFyOm1hcC1wb2ludC13YXZlLW91dGxpbmUiPjwvaWNvbmlmeS1pY29uPiR7aXNEb25lPyfYpdir2KjYp9iqINil2YbYrNin2LIg2KfZhNmF2YfZhdipJzon2KrYo9mD2YrYryDYp9mE2K3YttmI2LEg2KjYp9mE2YXZiNmC2LknfTwvaDM+PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1yZWQiIHR5cGU9ImJ1dHRvbiIgZGF0YS10bS1hY3Rpb249ImNsb3NlIj7Ypdi62YTYp9mCPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz0idG0tYm9keSI+PGRpdiBjbGFzcz0idG0td2FybmluZyI+2LPZitiq2YUg2LfZhNioINin2YTZhNmI2YPZiti02YYg2KfZhNii2YYg2YjYqtiz2KzZitmEINin2YTYqtin2LHZitiuINmI2KfZhNmI2YLYqi4gJHttLnRhcmdldExhdCYmbS50YXJnZXRMbmc/YNmG2LfYp9mCINin2YTYrdi22YjYsSDYp9mE2YXYudiq2YXYryAke051bWJlcihtLnJhZGl1c3x8MjAwKX0g2YXYqtixLmA6J9mE2YUg2YrYrdiv2K8g2YTZhNmF2YfZhdipINmF2YjZgti5INmH2K/ZgdibINiz2YrYs9is2YQg2YXZiNmC2Lkg2KfZhNmF2YjYuNmBINiv2YjZhiDZhdmC2KfYsdmG2Kkg2YXYs9in2YHYqS4nfTwvZGl2PjxzZWN0aW9uIGNsYXNzPSJ0bS1zZWN0aW9uIiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4Ij48aDQ+JHtpc0RvbmU/J9mG2KrZitis2Kkg2KfZhNil2YbYrNin2LInOifYqNmK2KfZhtin2Kog2KfZhNit2LbZiNixJ308L2g0PjxkaXYgY2xhc3M9InRtLXByb29mIj48ZGl2IGNsYXNzPSJ0bS1maWVsZCBmdWxsIj48bGFiZWw+JHtpc0RvbmU/J9mF2YTYp9it2LjYp9iqINin2YTZhtiq2YrYrNipINmI2YXYpyDYqtmFINil2YbYrNin2LLZhyc6J9mF2YTYp9it2LjYqSDYp9mE2K3YttmI2LEnfTwvbGFiZWw+PHRleHRhcmVhIG5hbWU9InByb29mTm90ZSIgcmVxdWlyZWQ+PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGNsYXNzPSJ0bS1maWVsZCI+PGxhYmVsPtin2YTYqtmC2KfYtyDYtdmI2LHYqSDZhdmGINin2YTZg9in2YXZitix2Kc8L2xhYmVsPjxpbnB1dCBuYW1lPSJwcm9vZlBob3RvIiB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdlLyoiIGNhcHR1cmU9ImVudmlyb25tZW50Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0bS1maWVsZCI+PGxhYmVsPtix2YHYuSDZhdix2YHZgtin2Kog2KXYttin2YHZitipPC9sYWJlbD48aW5wdXQgbmFtZT0icHJvb2ZGaWxlcyIgdHlwZT0iZmlsZSIgbXVsdGlwbGUgYWNjZXB0PSIucGRmLC5wbmcsLmpwZywuanBlZywud2VicCwuZG9jLC5kb2N4Ij48L2Rpdj48L2Rpdj48L3NlY3Rpb24+PC9kaXY+PGRpdiBjbGFzcz0idG0tZm9vdCI+PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1ncmVlbiIgdHlwZT0ic3VibWl0Ij4ke2lzRG9uZT8n2KrYo9mD2YrYryDYp9mE2KXZhtis2KfYsic6J9iq2KPZg9mK2K8g2KfZhNit2LbZiNixJ308L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gYnRuLXdoaXRlIiB0eXBlPSJidXR0b24iIGRhdGEtdG0tYWN0aW9uPSJjbG9zZSI+2KXZhNi62KfYoTwvYnV0dG9uPjwvZGl2PjwvZm9ybT5gKX0KZnVuY3Rpb24gYXBwZW5kSGlzdG9yeShtLGV2ZW50KXtjb25zdCBoaXN0b3J5PUFycmF5LmlzQXJyYXkobS5oaXN0b3J5KT9tLmhpc3Rvcnkuc2xpY2UoLTk5KTpbXTtoaXN0b3J5LnB1c2goZXZlbnQpO20uaGlzdG9yeT1oaXN0b3J5fQphc3luYyBmdW5jdGlvbiBzdWJtaXRQcm9vZihmb3JtLGJ1dHRvbil7Y29uc3QgdGFza0lkPWZvcm0uZGF0YXNldC5pZCxraW5kPWZvcm0uZGF0YXNldC5raW5kLHQ9c3RydWN0dXJlZENsb25lKChzdGF0ZSgpLnRhc2tzfHxbXSkuZmluZCh4PT54LmlkPT09dGFza0lkKSksbT17Li4ubWV0YSh0KX0saXNEb25lPWtpbmQ9PT0nY29tcGxldGUnLG5vdGVWYWx1ZT1TdHJpbmcobmV3IEZvcm1EYXRhKGZvcm0pLmdldCgncHJvb2ZOb3RlJyl8fCcnKS50cmltKCkscGhvdG89Zm9ybS5lbGVtZW50cy5wcm9vZlBob3RvLmZpbGVzPy5bMF0sZmlsZXM9QXJyYXkuZnJvbShmb3JtLmVsZW1lbnRzLnByb29mRmlsZXMuZmlsZXN8fFtdKTtpZighbm90ZVZhbHVlKXJldHVybiBhcHAuc2hvd1RvYXN0KCfYp9mE2YXZhNin2K3YuNipINmF2LfZhNmI2KjYqScsaXNEb25lPyfYp9mD2KrYqCDZhtiq2YrYrNipINin2YTYpdmG2KzYp9iyLic6J9in2YPYqtioINmF2YTYp9it2LjYqSDYp9mE2K3YttmI2LEuJywnZXJyb3InKTtpZigoaXNEb25lP20ucmVxdWlyZUNvbXBsZXRpb25QaG90bzptLnJlcXVpcmVBdHRlbmRhbmNlUGhvdG8pJiYhcGhvdG8pcmV0dXJuIGFwcC5zaG93VG9hc3QoJ9i12YjYsdipINin2YTYpdir2KjYp9iqINmF2LfZhNmI2KjYqScsJ9in2YTYqtmC2Lcg2LXZiNix2Kkg2YXZhiDZg9in2YXZitix2Kcg2KfZhNmF2YjYqNin2YrZhCDZgtio2YQg2KfZhNiq2KPZg9mK2K8uJywnZXJyb3InKTtidXR0b24uZGlzYWJsZWQ9dHJ1ZTthcHAuc2V0U3luYygn2KzYp9ix2Yog2KfZhNiq2K3ZgtmCINmF2YYg2KfZhNmF2YjZgti5JywnbG9hZGluZycpO3RyeXtsZXQgcD1udWxsLGRpc3Q9bnVsbDtpZihtLnJlcXVpcmVMb2NhdGlvbiE9PWZhbHNlfHxtLnRhcmdldExhdCYmbS50YXJnZXRMbmcpcD1hd2FpdCBnZW8oKTtpZihwJiZtLnRhcmdldExhdCYmbS50YXJnZXRMbmcpe2Rpc3Q9ZGlzdGFuY2VNKHAubGF0LHAubG5nLE51bWJlcihtLnRhcmdldExhdCksTnVtYmVyKG0udGFyZ2V0TG5nKSk7aWYoZGlzdD5OdW1iZXIobS5yYWRpdXN8fDIwMCkpdGhyb3cgbmV3IEVycm9yKGDYo9mG2Kog2KjYudmK2K8g2LnZhiDZhdmI2YLYuSDYp9mE2YXZh9mF2KkgJHtkaXN0fSDZhdiq2LHYjCDZiNin2YTZhti32KfZgiDYp9mE2YXYs9mF2YjYrSAke051bWJlcihtLnJhZGl1c3x8MjAwKX0g2YXYqtixYCl9Y29uc3QgYXQ9bm93SXNvKCksZXZlbnQ9e3R5cGU6a2luZCxhdCx1c2VySWQ6YXBwLmdldFVzZXJJZCgpLHVzZXJOYW1lOmFwcC5nZXRVc2VyTmFtZSgpLGxhdDpwPy5sYXR8fCcnLGxuZzpwPy5sbmd8fCcnLGFjY3VyYWN5OnA/LmFjY3VyYWN5fHwnJyxkaXN0YW5jZTpkaXN0LG5vdGU6bm90ZVZhbHVlfTthcHBlbmRIaXN0b3J5KG0sZXZlbnQpO2lmKGlzRG9uZSl7bS5jb21wbGV0ZWRBdD1hdDttLmNvbXBsZXRpb25MYXQ9cD8ubGF0fHwnJzttLmNvbXBsZXRpb25Mbmc9cD8ubG5nfHwnJzttLmNvbXBsZXRpb25EaXN0YW5jZT1kaXN0O20uY29tcGxldGlvbk5vdGU9bm90ZVZhbHVlO20uc3RhdHVzPSdkb25lJzt0LmRvbmU9dHJ1ZTt0LmNvbXBsZXRlZEF0PWF0O3QuY29tcGxldGVkQnk9YXBwLmdldFVzZXJOYW1lKCl9ZWxzZXttLmF0dGVuZGVkQXQ9YXQ7bS5hdHRlbmRhbmNlTGF0PXA/LmxhdHx8Jyc7bS5hdHRlbmRhbmNlTG5nPXA/LmxuZ3x8Jyc7bS5hdHRlbmRhbmNlRGlzdGFuY2U9ZGlzdDttLmF0dGVuZGFuY2VOb3RlPW5vdGVWYWx1ZTttLnN0YXR1cz0nYXR0ZW5kZWQnfXQubm90ZT1hcHAucGFja1Rhc2tOb3RlKG5vdGUodCksbSk7dC51cGRhdGVkQXQ9YXQ7YXdhaXQgc2F2ZVJlY29yZCgndGFza3MnLHQpO2NvbnN0IGl0ZW1zPVtdO2lmKHBob3RvKWl0ZW1zLnB1c2goe21vZGU6J3VwbG9hZCcsZmlsZXM6W3Bob3RvXSx0eXBlOmlzRG9uZT8n2LXZiNix2Kkg2KXYq9io2KfYqiDYpdmG2KzYp9iyJzon2LXZiNix2Kkg2KXYq9io2KfYqiDYrdi22YjYsScsbmFtZTppc0RvbmU/J9i12YjYsdipINin2YTYpdmG2KzYp9iyJzon2LXZiNix2Kkg2KfZhNit2LbZiNixJyxub3RlOm5vdGVWYWx1ZX0pO2lmKGZpbGVzLmxlbmd0aClpdGVtcy5wdXNoKHttb2RlOid1cGxvYWQnLGZpbGVzLHR5cGU6aXNEb25lPyfZhdix2YHZgtin2Kog2KfZhNil2YbYrNin2LInOifZhdix2YHZgtin2Kog2KfZhNit2LbZiNixJyxuYW1lOicnLG5vdGU6bm90ZVZhbHVlfSk7Y29uc3QgY291bnQ9YXdhaXQgc2F2ZUF0dGFjaG1lbnRzKHQsaXRlbXMpO2FwcC5yZWZyZXNoVUkoKTtjbG9zZU1vZGFsKCk7cmVuZGVyKCk7YXBwLnNldFN5bmMoJ9iq2YUg2KrYs9is2YrZhCDYp9mE2LnZhdmE2YrYqScsJ3N1Y2Nlc3MnKTthcHAuc2hvd1RvYXN0KGlzRG9uZT8n2KrZhSDYpdmG2KzYp9iyINin2YTZhdmH2YXYqSc6J9iq2YUg2KrYo9mD2YrYryDYp9mE2K3YttmI2LEnLGAke2lzRG9uZT8n2LPZj9is2YQg2KfZhNil2YbYrNin2LInOifYs9mP2KzZhCDYp9mE2K3YttmI2LEnfSDYqNiq2KfYsdmK2K4g2YjZiNmC2Kog2KfZhNi52YXZhNmK2Kkke2NvdW50P2Ag2YjYsdmB2LkgJHtjb3VudH0g2YXYsdmB2YJgOicnfS5gLCdzdWNjZXNzJyl9Y2F0Y2goZXJyKXthcHAuc2V0U3luYygn2KrYudiw2LEg2KrYs9is2YrZhCDYp9mE2LnZhdmE2YrYqScsJ2Vycm9yJyk7YXBwLnNob3dUb2FzdCgn2KrYudiw2LEg2KfZhNiq2KPZg9mK2K8nLGVyci5tZXNzYWdlfHwn2K7Yt9ijINi62YrYsSDZhdiq2YjZgti5JywnZXJyb3InLDc1MDApfWZpbmFsbHl7YnV0dG9uLmRpc2FibGVkPWZhbHNlfX0KYXN5bmMgZnVuY3Rpb24gcmVvcGVuKGlkKXtjb25zdCB0PXN0cnVjdHVyZWRDbG9uZSgoc3RhdGUoKS50YXNrc3x8W10pLmZpbmQoeD0+eC5pZD09PWlkKSk7aWYoIXQpcmV0dXJuO2NvbnN0IG9sZD17Li4ubWV0YSh0KX0sYXQ9bm93SXNvKCksbT17Li4ub2xkLHN0YXR1czonb3BlbicscmVvcGVuZWRBdDphdH07YXBwZW5kSGlzdG9yeShtLHt0eXBlOidyZW9wZW4nLGF0LHVzZXJJZDphcHAuZ2V0VXNlcklkKCksdXNlck5hbWU6YXBwLmdldFVzZXJOYW1lKCkscHJldmlvdXNDb21wbGV0ZWRBdDpvbGQuY29tcGxldGVkQXR8fHQuY29tcGxldGVkQXR8fCcnLHByZXZpb3VzQ29tcGxldGVkQnk6b2xkLmNvbXBsZXRlZEJ5fHx0LmNvbXBsZXRlZEJ5fHwnJyxwcmV2aW91c0NvbXBsZXRpb25Ob3RlOm9sZC5jb21wbGV0aW9uTm90ZXx8JycscHJldmlvdXNBdHRlbmRlZEF0Om9sZC5hdHRlbmRlZEF0fHwnJ30pO1snY29tcGxldGVkQXQnLCdjb21wbGV0ZWRCeScsJ2NvbXBsZXRpb25Ob3RlJywnY29tcGxldGlvbkxhdCcsJ2NvbXBsZXRpb25MbmcnLCdjb21wbGV0aW9uRGlzdGFuY2UnLCdjb21wbGV0aW9uQWNjdXJhY3knLCdhdHRlbmRlZEF0JywnYXR0ZW5kYW5jZUxhdCcsJ2F0dGVuZGFuY2VMbmcnLCdhdHRlbmRhbmNlRGlzdGFuY2UnLCdhdHRlbmRhbmNlQWNjdXJhY3knLCdhdHRlbmRhbmNlTm90ZSddLmZvckVhY2goaz0+ZGVsZXRlIG1ba10pO3QuZG9uZT1mYWxzZTt0LmNvbXBsZXRlZEF0PScnO3QuY29tcGxldGVkQnk9Jyc7dC5ub3RlPWFwcC5wYWNrVGFza05vdGUobm90ZSh0KSxtKTt0LnVwZGF0ZWRBdD1hdDthd2FpdCBzYXZlUmVjb3JkKCd0YXNrcycsdCk7YXBwLnJlZnJlc2hVSSgpO3JlbmRlcigpO2FwcC5zaG93VG9hc3QoJ9iq2YXYqiDYpdi52KfYr9ipINmB2KrYrSDYp9mE2YXZh9mF2KknLCfYqtmFINiq2LXZgdmK2LEg2KfZhNit2LbZiNixINmI2KfZhNil2YbYrNin2LIg2KfZhNit2KfZhNmK2YrZhiDZhdi5INit2YHYuCDYp9mE2LPYrNmEINin2YTYs9in2KjZgiDZgdmKINin2YTYqtin2LHZitiuLicsJ3N1Y2Nlc3MnKX0KYXN5bmMgZnVuY3Rpb24gcmVtb3ZlVGFzayhpZCl7aWYoIWNvbmZpcm0oJ9iq2KPZg9mK2K8g2K3YsNmBINin2YTZhdmH2YXYqdifJykpcmV0dXJuO2NvbnN0IHQ9c3RydWN0dXJlZENsb25lKChzdGF0ZSgpLnRhc2tzfHxbXSkuZmluZCh4PT54LmlkPT09aWQpKTtpZighdClyZXR1cm47dC5kZWxldGVkPXRydWU7dC5kZWxldGVkQXQ9bm93SXNvKCk7dC51cGRhdGVkQXQ9bm93SXNvKCk7YXdhaXQgc2F2ZVJlY29yZCgndGFza3MnLHQpO2FwcC5yZWZyZXNoVUkoKTtjbG9zZU1vZGFsKCk7cmVuZGVyKCk7YXBwLnNob3dUb2FzdCgn2KrZhSDYrdiw2YEg2KfZhNmF2YfZhdipJywn2KrZhSDYqti52YTZitmFINin2YTZhdmH2YXYqSDZg9mF2K3YsNmI2YHYqS4nLCdzdWNjZXNzJyl9CmFzeW5jIGZ1bmN0aW9uIHJlbW92ZURvYyhpZCl7aWYoIWNvbmZpcm0oJ9it2LDZgSDYs9is2YQg2KfZhNmF2LHZgdmCINmF2YYg2KfZhNmF2YfZhdip2J8nKSlyZXR1cm47Y29uc3QgZD1zdHJ1Y3R1cmVkQ2xvbmUoKHN0YXRlKCkuZG9jc3x8W10pLmZpbmQoeD0+eC5pZD09PWlkKSk7aWYoIWQpcmV0dXJuO2QuZGVsZXRlZD10cnVlO2QuZGVsZXRlZEF0PW5vd0lzbygpO2QudXBkYXRlZEF0PW5vd0lzbygpO2F3YWl0IHNhdmVSZWNvcmQoJ2F0dGFjaG1lbnRzJyxkKTthcHAucmVmcmVzaFVJKCk7cmVuZGVyKCk7Y29uc3Qgb3BlbklkPSQoJ3RtTW9kYWxCb3gnKT8ucXVlcnlTZWxlY3RvcignW2RhdGEtaWRdJyk/LmRhdGFzZXQuaWQ7aWYob3BlbklkKWRldGFpbChvcGVuSWQpO2FwcC5zaG93VG9hc3QoJ9iq2YUg2K3YsNmBINin2YTZhdix2YHZgicsJ9iq2YUg2K3YsNmBINiz2KzZhCDYp9mE2YXYsdmB2YIg2YXZhiDYp9mE2YXZh9mF2KkuJywnc3VjY2VzcycpfQphc3luYyBmdW5jdGlvbiBzaGFyZShpZCl7CmNvbnN0IG9yaWdpbmFsPShzdGF0ZSgpLnRhc2tzfHxbXSkuZmluZCh4PT54LmlkPT09aWQpO2lmKCFvcmlnaW5hbClyZXR1cm47CmNvbnN0IHBvcHVwPXdpbmRvdy5vcGVuKCdhYm91dDpibGFuaycsJ19ibGFuaycpOwp0cnl7CmNvbnN0IHQ9c3RydWN0dXJlZENsb25lKG9yaWdpbmFsKSx0YXNrTGluaz1hd2FpdCBlbnN1cmVTaGFyZUxpbmsodCksYz1jYXNlUm93KHQuY2FzZUlkKSxjbGllbnQ9Y2xpZW50Um93KGM/LmNsaWVudElkKSxtPW1ldGEodCkscz10YXNrU3RhdHVzKHQpLGRvY3M9dGFza0RvY3ModC5pZCksbG9jPW0ubG9jYXRpb25Vcmx8fG1hcHNVcmwobS50YXJnZXRMYXQsbS50YXJnZXRMbmcpLGxpbmtzPWRvY3MubGVuZ3RoP2RvY3MubWFwKChkLGkpPT5gJHtpKzF9KSAke2QubmFtZXx8J9mF2LHZgdmCJ31cbiR7YXBwLmdldERvY1ZpZXdMaW5rKGQpfHxhcHAuZ2V0RG9jUHJldmlld0xpbmsoZCl8fCctJ31gKS5qb2luKCdcblxuJyk6J9mE2Kcg2KrZiNis2K8g2YXYsdmB2YLYp9iqJzsKY29uc3QgbWVzc2FnZT1g2KfZhNiz2YTYp9mFINi52YTZitmD2YXYjAoK2KrZg9mE2YrZgSDYudmF2YQg2YXZhiBMQVcgQWk6CgrYp9mE2YXZh9mF2Kk6ICR7dC50aXRsZXx8Jy0nfQrYp9mE2YXYs9ik2YjZhDogJHt1c2VyTmFtZSh0LmFzc2lnbmVkVG8pfHx0LnRvfHwnLSd9Ctin2YTYqtin2LHZitiuOiAke2FwcC5kYXRlVGV4dCh0LmRhdGUpfQrYp9mE2YjZgtiqOiAke20uc3RhcnRUaW1lfHwnLSd9INil2YTZiSAke20uZHVlVGltZXx8Jy0nfQrYp9mE2K3Yp9mE2Kk6ICR7cy5sYWJlbH0K2KfZhNij2YjZhNmI2YrYqTogJHt0LnByaW9yaXR5fHwnLSd9Ctin2YTZhdmI2YLYuTogJHttLmxvY2F0aW9uTmFtZXx8Jy0nfSR7bG9jP2AK2LHYp9io2Lcg2KfZhNmF2YjZgti5OiAke2xvY31gOicnfQrYp9mE2YXZhNin2K3YuNin2Ko6ICR7bm90ZSh0KXx8Jy0nfSR7Yz9gCgrYqNmK2KfZhtin2Kog2KfZhNmC2LbZitipOgrYp9mE2LHZgtmFINin2YTYotmE2Yo6ICR7Yy5hdXRvTm98fCctJ30K2LHZgtmFINin2YTZgti22YrYqTogJHtjLmNhc2VOb3x8Jy0nfQrYp9mE2LnZhdmK2YQ6ICR7Y2xpZW50Py5uYW1lfHwnLSd9Ctin2YTYrti12YU6ICR7Yy5vcHBvbmVudHx8Jy0nfQrYp9mE2YXYrdmD2YXYqTogJHtjLmNvdXJ0fHwnLSd9YDonJ30KCtix2KfYqNi3INiq2YbZgdmK2LAg2KfZhNmF2YfZhdipINmE2YTZhdmG2K/ZiNioOgoke3Rhc2tMaW5rfQoK2KfZhNmF2LHZgdmC2KfYqiAoJHtkb2NzLmxlbmd0aH0pOgoke2xpbmtzfQoKTEFXIEFpYDsKY29uc3Qgd2E9J2h0dHBzOi8vd2EubWUvP3RleHQ9JytlbmNvZGVVUklDb21wb25lbnQobWVzc2FnZSk7CmlmKHBvcHVwKXBvcHVwLmxvY2F0aW9uLmhyZWY9d2E7ZWxzZSB3aW5kb3cub3Blbih3YSwnX2JsYW5rJywnbm9vcGVuZXInKQp9Y2F0Y2goZXJyKXtpZihwb3B1cClwb3B1cC5jbG9zZSgpO2FwcC5zaG93VG9hc3QoJ9iq2LnYsNixINil2YbYtNin2KEg2LHYp9io2Lcg2KfZhNmF2YbYr9mI2KgnLGVyci5tZXNzYWdlfHwn2K7Yt9ijINi62YrYsSDZhdiq2YjZgti5JywnZXJyb3InLDY1MDApfQp9CmZ1bmN0aW9uIHNoYXJlRG9jKGlkKXtjb25zdCBkPShzdGF0ZSgpLmRvY3N8fFtdKS5maW5kKHg9PnguaWQ9PT1pZCk7aWYoIWQpcmV0dXJuO2NvbnN0IG1lc3NhZ2U9YNin2YTYs9mE2KfZhSDYudmE2YrZg9mF2Ixcblxu2YXYsdmB2YI6ICR7ZC5uYW1lfHwnLSd9XG7Yp9mE2YbZiNi5OiAke2QudHlwZXx8ZC5taW1lVHlwZXx8Jy0nfVxu2KfZhNix2KfYqNi3OiAke2FwcC5nZXREb2NWaWV3TGluayhkKXx8YXBwLmdldERvY1ByZXZpZXdMaW5rKGQpfHwnLSd9XG5cbkxBVyBBaWA7d2luZG93Lm9wZW4oJ2h0dHBzOi8vd2EubWUvP3RleHQ9JytlbmNvZGVVUklDb21wb25lbnQobWVzc2FnZSksJ19ibGFuaycsJ25vb3BlbmVyJyl9CmZ1bmN0aW9uIHRpY2soKXtxYSgnW2RhdGEtdGFzay10aW1lcl0nKS5mb3JFYWNoKGVsPT57Y29uc3QgdD0oc3RhdGUoKS50YXNrc3x8W10pLmZpbmQoeD0+eC5pZD09PWVsLmRhdGFzZXQudGFza1RpbWVyKTtpZih0KWVsLnRleHRDb250ZW50PXRhc2tTdGF0dXModCkubGFiZWx9KTtyZW5kZXJTdW1tYXJ5KCk7cmVuZGVyRmlsdGVycygpfQpyb290LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxhc3luYyBlPT57Y29uc3QgY2FzZU9wdD1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS10bS1jYXNlLWlkXScpO2lmKGNhc2VPcHQpe2NvbnN0IHBpY2tlcj1jYXNlT3B0LmNsb3Nlc3QoJ1tkYXRhLXRtLWNhc2UtcGlja2VyXScpO3BpY2tlci5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPWhpZGRlbl0nKS52YWx1ZT1jYXNlT3B0LmRhdGFzZXQudG1DYXNlSWQ7cGlja2VyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRtLWNhc2Utc2VhcmNoXScpLnZhbHVlPWNhc2VPcHQuZGF0YXNldC50bUNhc2VMYWJlbDtwaWNrZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO3JldHVybn1jb25zdCBlbD1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS10bS1hY3Rpb25dJyk7aWYoIWVsKXJldHVybjtjb25zdCBhPWVsLmRhdGFzZXQudG1BY3Rpb24saWQ9ZWwuZGF0YXNldC5pZDtpZihhPT09J25ldycpZm9ybSgpO2Vsc2UgaWYoYT09PSdvcGVuJylkZXRhaWwoaWQpO2Vsc2UgaWYoYT09PSdlZGl0Jylmb3JtKGlkKTtlbHNlIGlmKGE9PT0nY2xvc2UnKWNsb3NlTW9kYWwoKTtlbHNlIGlmKGE9PT0nZmlsdGVyJyl7ZmlsdGVyPWVsLmRhdGFzZXQuZmlsdGVyO3JlbmRlcigpfWVsc2UgaWYoYT09PSdyZWZyZXNoJyl7YXBwLnJlZnJlc2hEYXRhKCl9ZWxzZSBpZihhPT09J3NoYXJlJylhd2FpdCBzaGFyZShpZCk7ZWxzZSBpZihhPT09J2NoZWNraW4nKXByb29mTW9kYWwoaWQsJ2NoZWNraW4nKTtlbHNlIGlmKGE9PT0nY29tcGxldGUnKXByb29mTW9kYWwoaWQsJ2NvbXBsZXRlJyk7ZWxzZSBpZihhPT09J3Jlb3BlbicpYXdhaXQgcmVvcGVuKGlkKTtlbHNlIGlmKGE9PT0nZGVsZXRlJylhd2FpdCByZW1vdmVUYXNrKGlkKTtlbHNlIGlmKGE9PT0nY2FwdHVyZS10YXJnZXQnKWF3YWl0IGNhcHR1cmVUYXJnZXQoZWwpO2Vsc2UgaWYoYT09PSdsb2NhdGlvbi1zZWFyY2gnKWF3YWl0IHNlYXJjaE1hcExvY2F0aW9uKCk7ZWxzZSBpZihhPT09J2xvY2F0aW9uLXVzZS1yZWFkeScpYXdhaXQgdXNlUmVhZHlMb2NhdGlvbigpO2Vsc2UgaWYoYT09PSdsb2NhdGlvbi1zYXZlLXJlYWR5Jylhd2FpdCBzYXZlQ3VycmVudFJlYWR5TG9jYXRpb24oKTtlbHNlIGlmKGE9PT0nbG9jYXRpb24tcmVzdWx0Jyl7Y29uc3Qgcm93cz0kKCd0bUxvY2F0aW9uUmVzdWx0cycpPy5fcm93c3x8W10scj1yb3dzW051bWJlcihlbC5kYXRhc2V0LmluZGV4KV07aWYocil7dXBkYXRlTG9jYXRpb25GaWVsZHMoTnVtYmVyKHIubGF0KSxOdW1iZXIoci5sb24pLHtuYW1lOiQoJ3RtTG9jYXRpb25TZWFyY2gnKT8udmFsdWV8fHIubmFtZXx8JycsbWVzc2FnZTon2KrZhSDYp9iu2KrZitin2LEg2YbYqtmK2KzYqSDYp9mE2KjYrdirJ30pOyQoJ3RtTG9jYXRpb25SZXN1bHRzJykuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpfX1lbHNlIGlmKGE9PT0nYWRkLWF0dGFjaCcpe2F0dGFjaFNlcSsrOyQoJ3RtQXR0YWNoUm93cycpLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJyxhdHRhY2hSb3coYXR0YWNoU2VxKSl9ZWxzZSBpZihhPT09J3JlbW92ZS1hdHRhY2gnKWVsLmNsb3Nlc3QoJ1tkYXRhLWF0dGFjaC1yb3ddJyk/LnJlbW92ZSgpO2Vsc2UgaWYoYT09PSdkb2Mtb3Blbicpd2luZG93Lm9wZW4oZWwuZGF0YXNldC51cmwsJ19ibGFuaycsJ25vb3BlbmVyJyk7ZWxzZSBpZihhPT09J2RvYy1zaGFyZScpc2hhcmVEb2MoaWQpO2Vsc2UgaWYoYT09PSdkb2MtZGVsZXRlJylhd2FpdCByZW1vdmVEb2MoaWQpfSk7CnJvb3QuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsZT0+e2lmKGUudGFyZ2V0LmlkPT09J3RtTG9jYXRpb25TZWFyY2gnJiZlLmtleT09PSdFbnRlcicpe2UucHJldmVudERlZmF1bHQoKTtzZWFyY2hNYXBMb2NhdGlvbigpfX0pO3Jvb3QuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0Jyxhc3luYyBlPT57ZS5wcmV2ZW50RGVmYXVsdCgpO2lmKGUudGFyZ2V0LmlkPT09J3RtVGFza0Zvcm0nKWF3YWl0IHN1Ym1pdEZvcm0oZS50YXJnZXQsZS5zdWJtaXR0ZXIpO2Vsc2UgaWYoZS50YXJnZXQuaWQ9PT0ndG1Qcm9vZkZvcm0nKWF3YWl0IHN1Ym1pdFByb29mKGUudGFyZ2V0LGUuc3VibWl0dGVyKX0pOwpyb290LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxlPT57aWYoZS50YXJnZXQuaWQ9PT0ndG1TZWFyY2gnKXtzZWFyY2g9ZS50YXJnZXQudmFsdWU7cmVuZGVyTGlzdCgpfWlmKGUudGFyZ2V0Lm5hbWU9PT0ncmFkaXVzJyYmdG1SYWRpdXNDaXJjbGUpdG1SYWRpdXNDaXJjbGUuc2V0UmFkaXVzKGxvY2F0aW9uUmFkaXVzKGUudGFyZ2V0LmZvcm0pKTtpZihlLnRhcmdldC5tYXRjaGVzKCdbZGF0YS10bS1jYXNlLXNlYXJjaF0nKSl7Y29uc3QgcGlja2VyPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXRtLWNhc2UtcGlja2VyXScpLHE9ZS50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtwaWNrZXIuY2xhc3NMaXN0LmFkZCgnb3BlbicpO3FhKCdbZGF0YS10bS1jYXNlLWlkXScscGlja2VyKS5mb3JFYWNoKHg9PnguaGlkZGVuPXEmJiF4LmRhdGFzZXQudG1DYXNlU2VhcmNoLmluY2x1ZGVzKHEpKX19KTsKcm9vdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGU9PntpZihlLnRhcmdldC5pZD09PSd0bUxvY2F0aW9uQ2F0ZWdvcnknKXJlbmRlckxvY2F0aW9uRGlyZWN0b3J5KCk7aWYoZS50YXJnZXQuaWQ9PT0ndG1SZWFkeUxvY2F0aW9uJyYmZS50YXJnZXQudmFsdWUpdXNlUmVhZHlMb2NhdGlvbigpO2lmKGUudGFyZ2V0Lm5hbWU/LmVuZHNXaXRoKCdNb2RlJykmJmUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWF0dGFjaC1yb3ddJykpe2NvbnN0IHJvdz1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1hdHRhY2gtcm93XScpO3FhKCdbZGF0YS1zb3VyY2VdJyxyb3cpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QudG9nZ2xlKCdzaG93Jyx4LmRhdGFzZXQuc291cmNlPT09ZS50YXJnZXQudmFsdWUpKX19KTsKJCgndG1Nb2RhbCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxlPT57aWYoZS50YXJnZXQ9PT0kKCd0bU1vZGFsJykpY2xvc2VNb2RhbCgpfSk7CmZ1bmN0aW9uIG9wZW4oYWN0aW9uPScnLGlkPScnKXtpZihhY3Rpb249PT0nbmV3Jylmb3JtKCk7ZWxzZSBpZihhY3Rpb249PT0nb3BlbicpZGV0YWlsKGlkKTtlbHNlIGlmKGFjdGlvbj09PSdlZGl0Jylmb3JtKGlkKTtlbHNlIGlmKGFjdGlvbj09PSdzaGFyZScpc2hhcmUoaWQpO2Vsc2UgaWYoYWN0aW9uPT09J2NvbXBsZXRlJylwcm9vZk1vZGFsKGlkLCdjb21wbGV0ZScpO2Vsc2UgaWYoYWN0aW9uPT09J2RlbGV0ZScpcmVtb3ZlVGFzayhpZCk7cmVuZGVyKCl9CmZ1bmN0aW9uIGRlc3Ryb3koKXtjbGVhckludGVydmFsKHRpbWVyKX0KdGltZXI9c2V0SW50ZXJ2YWwoKCk9PntyZW5kZXJMaXN0KCk7dGljaygpfSwzMDAwMCk7cmVuZGVyKCk7d2luZG93LkxBV0FJX1RBU0tTPXtvcGVuLHJlZnJlc2g6cmVuZGVyLHRpY2ssZGVzdHJveX07Cn0pKCk7