2021年第四季度12月CTF-巅峰赛 解题思路

Track-子羽   ·   发表于 2021-12-29 14:28:30   ·   CTF&WP专版
W1RPQ10KCiMjIENURi04MgoqKumhtemdoueahOespuWPt+aYrwpKb3RoZXLnvJbnoIEqKgoqKmh0dHBzOi8vYmxvZy5jc2RuLm5ldC9ncmV5ZnJlZWRvbS9hcnRpY2xlL2RldGFpbHMvNDUwNzA2NjcqKgoqKuebtOaOpeaKiue8lueggeaUvuWIsOa1j+iniOWZqOaOp+WItuWPsOi/kOihjOWNs+WPr+iOt+WPlmZsYWcqKgojIyBDVEYtODMKKipmbGFn6KKr6ZqQ5YaZ5Zyo5LqG5Zu+54mH6YeMCuaMiUYxMuWPr+S7peeci+WIsOaPkOekuu+8mgpodHRwOi8vd3d3LmF0b29sYm94Lm5ldC9Ub29sLnBocD9JZD02OTkK5Y+v5Lul55So6L+Z5Liq56uZ54K56L+b6KGM5Zu+54mH55qE6Kej5a+G55yL5YiwZmxhZyoqCiMjIENURi04NAoqKuaKimhlbGxvd29ybGTmlofku7bkuIvovb3kuIvmnaUK6YeN5ZG95ZCN57uZ5a6D5Yqg5LiK5ZCO57yACi43eiDmiJbogIUgLnppcCDmiJbogIUucmFyCueEtuWQjuino+WOi+W+l+WIsOS6huWHoOS4quaWh+S7tgrnlKjorrDkuovmnKzmiZPlvIB6YW5zZGpvcHfmlofku7YK57+75Yiw5pyA5LiL6Z2i5om+5YiwZmxhZyoqCiMjIENURi04NQoqKuagueaNruaPkOekugoxMOi/m+WIti0+5a2X56ymIOS7peWPiiAg5rOo5oSP6aKc6ImyCuWwhuavj+S4quminOiJsuS7o+eggemHjOeahOS4pOS9jeaVsOWtl+i9rOaNouaIkOWtl+espgrlsLHlj6/ku6Xojrflj5bliLBmbGFn5LqGKioKYGBgQwojaW5jbHVkZSA8c3RkaW8uaD4KCmludCBtYWluKCkKewogICAgaW50IGFbXSA9IHs3OSw1Myw1Myw0NCw3OCw3OCw3OCw5NCw4NSw3OH07Cglmb3IoaW50IGk9MDtpPDEwO2krKyl7CgkJICAgcHJpbnRmKCIlYyIsYVtpXSk7Cgl9CiAgIAogICByZXR1cm4gMDsKfQpgYGAKIyMgQ1RGLTg2CioqZmxhZ+WcqOmfs+mikeeahOmikeiwseWbvumHjArpnIDopoHkuIvovb3kuIDkuKrova/ku7YKQXVkYWNpdHnlt6XlhbfvvIjlnKjpmYTku7bph4zvvIkK5Y675p+l55yL6Z+z5LmQ5paH5Lu255qE6aKR6LCx5Zu+KioKKirlj4LogIPvvJpodHRwczovL3d3dy5waWFuc2hlbi5jb20vYXJ0aWNsZS8yNTM1NjAzNDQ2LyoqCiMjIENURi04NwoqKuaKinR4dOaWh+acrOmHjOeahOWtl+espuaMieeFp+mhtemdouaPkOekuui/m+ihjOi9rOaNoioqCmBgYArlt6bmraPouawgLT4gLgrlj7Ppnq3ohb8gLT4gIQrlt6bliLrmi7MgLT4gPwpgYGAKKirojrflj5bliLDkuobooqtPb2vliqDlr4bnmoRmbGFnKioKKirop6Plr4blkI7lvpfliLBmbGFnKioKKipodHRwczovL3d3dy5zcGxpdGJyYWluLm9yZy9zZXJ2aWNlcy9vb2sqKgojIyBDVEYtODgKKirmjIlGMTLmn6XnnIvmupDnoIHlj6/ku6XnnIvliLDooqvliqDlr4blkI7nmoRmbGFnCue7meWHuuS6huS4gOmBk+WKoOazleaVsOWtpumimOeul+WHuuadpeWQjuW+l+WIsCAyMAoyMOaYr2ZsYWfliqDlr4bml7bnmoTlr4bpkqUqKgoKKirnlKh6ZnVhe2txY3lrcWlyaHd5ZnhleGVxcX3ljrvop6Plr4blvpfliLBmbGFnCuWvhumSpeaYrzIwKioKIyMgQ1RGLTg5Cioq5oyJRjEy5L+u5pS55rqQ56CB5Lit55qEbWF4bGVuZ3Ro55qE5YC8CmBtYXhsZW5ndGg9IjMiYArnhLblkI7lho3ovpPlhaUxMDDljbPlj6/ojrflj5bliLBmbGFnKioKIyMgQ1RGLTkwCioqRjEy5p+l55yL5rqQ56CB55yL5Yiw5LqG6KKr5Yqg5a+G55qEZmxhZyoqCmBgYApmdW5jdGlvbiBpZngoeCkKewoJaWYoeCA+PSAxMDAwMDAwMDAwMDAwMDAwKQoJewoJCWFsZXJ0KCLnnIvliLDkuoblsLHop6PkuKrlr4blkKchIOWKoOWvhueahGZsYWfvvJpldmF3dnNjZHZjcGJ5eGRncnZ3ICDnu7TlkInlsLzkupp6a2FxIik7Cgl9Cn0gICAKYGBgCioq6L+Z6YeM5piv57u05ZCJ5bC85Lqa5Yqg5a+GCuWvhumSpeaYrzp6a2FxKioKIyMgQ1RGLTkxCioq562+5Yiw6aKY6Zq+5bqm6Kej5a+G6aKYKioKCioq5bCG5Lit5paH6L+b6KGM5Lit5paH55S156CB57yW56CBCuS4reaWh+eUteegge+8mmh0dHA6Ly9jb2RlLm1jZHZpc2EuY29tLwrljbPlj6/ojrflj5ZmbGFnKioKIyMgQ1RGLTkyCiMjIyDmupDnoIEKYGBgCjxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgo8P3BocAppZiAoaXNzZXQoJF9HRVRbJ3VybCddKSl7CiAgICAkaXA9JF9HRVRbJ3VybCddOwogICAgaWYocHJlZ19tYXRjaCgiLygnfD58XXwmfFxcJHxcXHxyZXZ8bW9yZXx0YWlsZnxoZWFkfG5sfHRhaWx8dGFjfGNhdHxybXxjcHxtdnxcKnxceykvaSIsICRpcCkpewogICAgICAgIGRpZSgiPHN0cm9uZz48Y2VudGVyPumdnuazleWtl+espjwvY2VudGVyPjwvc3Ryb25nPiIpOwogICAgfQogICAgaWYocHJlZ19tYXRjaCgiLy4qZi4qbC4qYS4qZy4qLyIsICRpcCkpewogICAgICAgIGRpZSgiPHN0cm9uZz48Y2VudGVyPumdnuazleWtl+espjwvY2VudGVyPjwvc3Ryb25nPiIpOwogICAgfQogICAgJGEgPSBzaGVsbF9leGVjKCJwaW5nIC1jIDQgIi4kaXApOwogICAgZWNobygkYSk7Cn1lbHNlewogICAgZWNobyAiPHNjcmlwdD5hbGVydCgnTm8uLi4uLi4uJyk8L3NjcmlwdD4iOwp9Cj8+CmBgYAoqKueUqDvnu5PmnZ9waW5nIC1jIDQgMTI3LjAuMC4xKioKCioqY2F06L+H5ruk55SoY2FcdCoqCgoqKmZsYWcgKiDov4fmu6TnlKjpgJrphY3nrKY/Pz8/KioKCiMjIyBwYXlsb2Fk77yaCgpgMTI3LjAuMC4xO2NhXHQgPz8/Py4/Pz9gCgojIyBDVEYtOTMKKirlrqHorqHmupDnoIEqKgpgYGAKPD9waHAgCgloaWdobGlnaHRfZmlsZShfX0ZJTEVfXyk7IAoJaW5pX3NldCgiZGlzcGxheV9lcnJvciIsIGZhbHNlKTsgIAoJZXJyb3JfcmVwb3J0aW5nKDApOyAgCgkkc3RyID0gaXNzZXQoJF9HRVRbJ0FfQSddKT8kX0dFVFsnQV9BJ106J0FfQSc7IAoJaWYgKHN0cnBvcygkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10sICJBX0EiKSAhPT1mYWxzZSkgeyAKCQllY2hvICdBX0EsaGF2ZSBmdW4nOyAKCX0gCgllbHNlaWYgKCRzdHI8OTk5OTk5OTk5OSkgeyAKCQllY2hvICdBX0EsdG9vIHNtYWxsJzsgCgl9IAoJZWxzZWlmICgoc3RyaW5nKSRzdHI+MCkgeyAKCQllY2hvICdBX0EsdG9vIGJpZyc7IAoJfSAKCWVsc2V7IAoJCWVjaG8gZmlsZV9nZXRfY29udGVudHMoJ2ZsYWcucGhwJyk7IAoKfSAKYGBgCioq6aaW5YWI56ys5LiA5LiqaWbliKTmlq3vvIzlj6/ku6XnlKh1cmxlbmNvZGXnu5Xov4cK54S25ZCO5oiR5Lus6ZyA6KaB55+l6YGTcGhw5Lit55qE6L+Z5qC35LiA5Liq54m55oCnKioKYGBgCnBocCA+IHZhcl9kdW1wKFtdPjk5OTk5OTk5OTkpOwpib29sKHRydWUpCnBocCA+IHZhcl9kdW1wKChzdHJpbmcpW10+MCk7CmJvb2woZmFsc2UpCjEKMgozCjQK5ZyocGhw5Lit77yM5pWw57uEW13lpKfkuo7ku7vkvZXkuIDkuKrmlbAKYGBgCioq6L+Z5qC35bCx5Y+v5Lul5oiQ5Yqf57uV6L+H6aqM6K+B5LqGKioKYGBgCnBheWxvYWQ6Cj9BK0FbXT1hZG1pbgpgYGAKIyMgQ1RGLTk0Cioq5bCG5rGJ5a2XKioKYOeajuiLpeS6kemXtOaciGAKaHR0cDovL2diay5oc2pzai5jbi8KKirov5vooYzlhYjov5vooYxnYmvnhLblkI7lho0xNui/m+WItue8lueggeiOt+WPlmZsYWcqKgojIyBDVEYtOTUKKirlj7Plh7vpobXpnaLmn6XnnIvliLDnvJbnoIHlkI7nmoRmbGFnCuaIluiAheS/ruaUuWJvZHnnmoTpopzoibLkuZ/lj6/ku6Xmn6XnnIvliLDooqvnvJbnoIHnmoRmbGFnKioKKipodHRwOi8vd3d3LmhpZW5jb2RlLmNvbS9iYXNlOTEuaHRtbCoqCioq6L+b6KGMYmFzZTkx6Kej56CBKioKIyMgQ1RGLTk2CiMjIyDmupDnoIHlrqHorqEKCmBgYHBocAo8P3BocApzaG93X3NvdXJjZShfX0ZJTEVfXyk7CiR1c2VybmFtZSAgPSAiYWRtaW4iOwokcGFzc3dvcmQgID0gInBhc3N3b3JkIjsKaW5jbHVkZSgiZmxhZy5waHAiKTsKJGRhdGEgPSBpc3NldCgkX1BPU1RbJ2RhdGEnXSk/ICRfUE9TVFsnZGF0YSddOiAiIiA7CiRkYXRhX3Vuc2VyaWFsaXplID0gdW5zZXJpYWxpemUoJGRhdGEpOwppZiAoJGRhdGFfdW5zZXJpYWxpemVbJ3VzZXJuYW1lJ109PSR1c2VybmFtZSYmJGRhdGFfdW5zZXJpYWxpemVbJ3Bhc3N3b3JkJ109PSRwYXNzd29yZCl7CiAgICBlY2hvICRmbGFnOwp9ZWxzZXsKICAgIGVjaG8gInVzZXJuYW1lIG9yIHBhc3N3b3JkIGVycm9yISI7Cn0gCmBgYAoK55u05o6l5Y+N5bqP5YiX5YyW5LiN6KGMIOeMnOa1i+WcqOWMheWQq+eahOaXtuWAmeaUueS6hiDnm7TmjqXlvLHnsbvlnosKCiMjIyDohJrmnKw6CgpgYGBwaHAKPD9waHAKJGEgPSBhcnJheSgndXNlcm5hbWUnPT4wLCdwYXNzd29yZCc9PjApOwplY2hvIHNlcmlhbGl6ZSgkYSk7CgovL+i/kOihjOe7k+aenAphOjI6e3M6ODoidXNlcm5hbWUiO2k6MDtzOjg6InBhc3N3b3JkIjtpOjA7fQpgYGAKIVtdKGh0dHBzOi8vbmMwLmNkbi56a2FxLmNuL21kLzU1OTcvNzk4YTAzYzdjMDZjNTdhNGY5NzJjODAwZDYzMjFiM2VfMTIyMDguanBnKQojIyMgcGF5bG9hZDoKCmBgYApQT1NUOiBkYXRhPWE6Mjp7czo4OiJ1c2VybmFtZSI7aTowO3M6ODoicGFzc3dvcmQiO2k6MDt9CmBgYAojIyBDVEYtOTcK6YCa6L+H6K6/6ZeuL3d3dy5yYXLojrflj5bmupDnoIEKIyMjIOa6kOeggQoKYGBgcGhwCjw/cGhwCiRjID0gcmFuZCg2NSwgMTIyKTsKaWYocHJlZ19tYXRjaF9hbGwoJy9bMS05XS8nLCBAJF9HRVRbJ3gnXSkgPT0gMCl7CglpZihjaHIoJGMpID09IEAkX0dFVFsneCddKXsKCQllY2hvICdmbGFnOnt4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eH0nOwoJfWVsc2V7CgkJZWNobyAnP3ggPT0gJy4iJGMiOwoJfQp9ZWxzZXsKCWVjaG8gJ05vIDAtOSc7Cn0KPz4KYGBgCioq6ZqP5py655Sf5oiQNjUtMTIy55qE5pWw5a2X77yM5L2G5piv5Lyg5Y+C5LiN5YWB6K645Lyg5YWl5pWw5a2XKioKCioq55SoYnVycOWKoOS4ijI25Liq5a2X5q+N55qE5aSn5bCP5YaZ6L+b6KGM54iG56C05bCx5Y+v5Lul6I635b6XZmxhZ+S6hioqCgohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvNTU5Ny84YTk2NjkxNDhiM2VhYjQ3YjdlMzk4ODExNTI5ZmEwOV85Mzk4NS5wbmcpCiFbXShodHRwczovL25jMC5jZG4uemthcS5jbi9tZC81NTk3LzBmOThjMDE1NGIxMmFjODJhMWZjMmQyNmI1MDM2MDZmXzkxMTQ4LmpwZykKIyMgQ1RGLTk4Cioq6aG16Z2i5o+Q56S66ZyA6KaB546p5YiwMjA0OOaJjeiDveiOt+WPlmZsYWcqKgoKKirnm7TmjqVGMTLkv67mlLnmupDnoIHkuK0KdmFs55qE5YC85pS55oiQMjA0OCoqCmB2YWw9IjIwNDgiYAoqKueEtuWQjuWGjeaMieS4gOS4i0FXU0Tku7vmhI/kuIDplK7ljbPlj6/ojrflj5ZmbGFnKioKIyMgQ1RGLTk5Cioq5Y+z5Ye76aG16Z2i5p+l55yL5rqQ56CB5Y+v5Lul55yL5YiwZmxhZy5wbmcqKgoqKmZsYWflnKhmbGFnLnBuZ+S4rSoqCioqZmxhZ+WBmuS6huWPjOmHjeWKoOWvhgrkuI7kvZvorrrnpoUtPmJhc2U2NCAg5Yqg5a+GKioKKirmjInpobrluo/op6PlvIDljbPlj6/ojrflvpdmbGFnKioKYOS4juS9m+iuuuemhe+8mmh0dHBzOi8vd3d3LmtleWZjLm5ldC9iYnMvdG9vbHMvdHVkb3Vjb2RlLmFzcHhgCmBiYXNlNjQ6aHR0cDovL3d3dy5lYzk1LmNvbS9gCgojIyBDVEYtMTAwCiMjIyDmupDnoIEKCmBgYHBocAogPD9waHAKaW5jbHVkZSAnZmxhZy5waHAnOwokeWRzID0gIuaeq+WPtiI7CiRpcyA9ICLmsrPmtYEiOwokaGFuZHNvbWUgPSAneWRzJzsKCmZvcmVhY2goJF9QT1NUIGFzICR4ID0+ICR5KXsKICAgICQkeCA9ICR5Owp9CmZvcmVhY2goJF9HRVQgYXMgJHggPT4gJHkpewogICAgJCR4ID0gJCR5Owp9CmZvcmVhY2goJF9HRVQgYXMgJHggPT4gJHkpewogICAgaWYoJF9HRVRbJ2ZsYWcnXSA9PT0gJHggJiYgJHggIT09ICdmbGFnJyl7CS8vR0VU5pa55byP5LygZmxhZ+WPquiDveS8oOS4gOS4qmZsYWc9ZmxhZwogICAgICAgIGV4aXQoJGhhbmRzb21lKTsKICAgIH0KfQppZighaXNzZXQoJF9HRVRbJ2ZsYWcnXSkgJiYgIWlzc2V0KCRfUE9TVFsnZmxhZyddKSl7CS8vR0VU5ZKMUE9TVOWFtuS4reS5i+S4gOW/hemhu+S8oGZsYWcKICAgIGV4aXQoJHlkcyk7Cn0KaWYoJF9QT1NUWydmbGFnJ10gPT09ICdmbGFnJyAgfHwgJF9HRVRbJ2ZsYWcnXSA9PT0gJ2ZsYWcnKXsJLy9HRVTlkoxQT1NU5LygZmxhZyzlv4XpobvkuI3og73mmK9mbGFnPWZsYWcKICAgIGV4aXQoJGlzKTsKfQplY2hvICJ0aGUgZmxhZyBpczogIi4kZmxhZzsKYGBgCgoqKumcgOimgei/m+ihjOebruW9leaJq+aPj+aJvuWIsOa6kOeggQpOb0hhY2sucmFyCuino+WOi+W+l+WIsOa6kOeggQrov5vooYzku6PnoIHlrqHorqEKcGhw5Y+v5Y+Y5Y+Y6YeP77yM5LuU57uG5YiG5p6Q5LiA5LiL77yM5Y+R546w5Y+v5Lul5p6E6YCg5LiL6Z2i55qEcGF5bG9hZCoqCgojIyMgcGF5bG9hZDoKCmBgYAo/aGFuZHNvbWU9ZmxhZyZmbGFnPWhhbmRzb21lCgovL+i/meagt+eahOivne+8jOe7j+i/h+esrOS6jOS4qmZvcmVhY2jlvqrnjq/vvIwkaGFuZHNvbWXlsLHkvJrnrYnkuo4kZmxhZ++8jCRmbGFn562J5LqOJGhhbmRzb21l5Lya5LiN5Y+Y77yM57uP6L+H56ys5LiJ5Liq5b6q546v56ys5LiA5qyh6YGN5Y6GJF9HRVRbJ2ZsYWcnXT0iaGFuZHNvbWUiPSR4PSJoYW5kc29tZSIhPSdmbGFnJ++8jOmAgOWHuui+k+WHuiRoYW5kc29tZeWNsyRmbGFn55qE5YC8Cgo/eWRzPWZsYWcgCgovL+i/meagt+eahOivne+8jOWcqOe7j+i/h+esrOS6jOS4qmZvcmVhY2jlvqrnjq/ml7bvvIwkeWRz5bCx5Lya562J5LqOJGZsYWcs5Zyo57uP6L+H56ys5LiJ5LiqZm9yZWFjaOW+queOr+aXtu+8jOayoeS8oGZsYWfnm7TmjqXot7Pov4fvvIznhLblkI5pZua7oei2s+adoeS7tu+8jOmAgOWHuui+k+WHuiR5ZHPljbMkZmxhZwpgYGAKIyMgQ1RGLTEwMQojIyMgaW5kZXgucGhw5rqQ56CBCgpgYGBwaHAKPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+Cjw/cGhwCkAkYSA9ICRfR0VUWydhJ107CkAkYiA9ICRfR0VUWydiJ107CmlmKCRhICE9ICRiICYmIG1kNSgkYSkgPT0gbWQ1KCRiKSkKewoJZWNobyAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiOwoJZWNobyAnZmxhZ+WPjOmHjeWKoOWvhuS6hic7Cn0KZWxzZXsKCWVjaG8gJ+aJq+aPj+S4gOS4iz8nOwp9Cj8+CmBgYAoqKuiuv+mXrmZsYWcucGhw6L+b6KGM5Lyg5Y+CCuS4pOenjeaWueW8jyoqCiMjIyBwYXlsb2FkOgoKYGBgCj9hW109MSZiW109CQkvL+aVsOe7hOe7lei/hwoKP2E9UU5LQ0RaTyZiPXM4Nzg5MjYxOTlhCS8vbWQ15byx5q+U6L6DCmBgYAoqKuW+l+WIsOiiq+WKoOWvhueahGZsYWctPmJhc2U2NOino+Wvhi0+bWQ16Kej5a+GKioKIyMgQ1RGLTEwMgojIyMg5rqQ56CBCgpgYGBwaHAKIDw/cGhwCmhpZ2hsaWdodF9maWxlKF9fRklMRV9fKTsKZXJyb3JfcmVwb3J0aW5nKDApOyAKCiRmaWxlID0gImluZGV4LnBocCI7CiRzaGFuYSA9ICRfR0VUWydzaGFuYSddOwokcGFzc3dkID0gJF9HRVRbJ3Bhc3N3ZCddOwokYXJnID0gJyc7CiRjb2RlID0gJyc7CgplY2hvICI8YnIgLz48Zm9udCBjb2xvcj1yZWQ+PEI+VGhpcyBpcyBhIHZlcnkgc2ltcGxlIGNoYWxsZW5nZSBhbmQgaWYgeW91IHNvbHZlIGl0IEkgd2lsbCBnaXZlIHlvdSBhIGZsYWcuIEdvb2QgTHVjayE8L0I+PGJyPjwvZm9udD4iOwoKaWYoJF9TRVJWRVIpIHsgCiAgICBpZiAoCiAgICAgICAgcHJlZ19tYXRjaCgnL3NoYW5hfGRlYnV8YXF1YXxjdXRlfGFyZ3xjb2RlfGZsYWd8c3lzdGVtfGV4ZWN8cGFzc3dkfGFzc3xldmFsfHNvcnR8c2hlbGx8b2J8c3RhcnR8bWFpbHxcJHxzb3V8c2hvd3xjb250fGhpZ2h8cmV2ZXJzZXxmbGlwfHJhbmR8c2NhbnxjaHJ8bG9jYWx8c2Vzc3xpZHxzb3VyY2V8YXJyYXxoZWFkfGxpZ2h0fHJlYWR8aW5jfGluZm98YmlufGhleHxvY3R8ZWNob3xwcmludHxwaXxcLnxcInxcJ3xsb2cvaScsICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkKICAgICAgICApICAKICAgICAgICBkaWUoJ1lvdSBzZWVtIHRvIHdhbnQgdG8gZG8gc29tZXRoaW5nIGJhZD8nKTsgCn0KaWYgKCFwcmVnX21hdGNoKCcvaHR0cHxodHRwcy9pJywgJF9HRVRbJ2ZpbGUnXSkpIHsKICAgIGlmIChwcmVnX21hdGNoKCcvXmFxdWFfaXNfY3V0ZSQvJywgJF9HRVRbJ2RlYnUnXSkgJiYgJF9HRVRbJ2RlYnUnXSAhPT0gJ2FxdWFfaXNfY3V0ZScpIHsgCiAgICAgICAgJGZpbGUgPSAkX0dFVFsiZmlsZSJdOyAKICAgICAgICBlY2hvICJOZWVlZWVlISBHb29kIEpvYiE8YnI+IjsKICAgIH0gCn0gZWxzZSBkaWUoJ2Z4Y2sgeW91ISBXaGF0IGRvIHlvdSB3YW50IHRvIGRvID8hJyk7CgppZigkX1JFUVVFU1QpIHsgCiAgICBmb3JlYWNoKCRfUkVRVUVTVCBhcyAkdmFsdWUpIHsgCiAgICAgICAgaWYocHJlZ19tYXRjaCgnL1thLXpBLVpdL2knLCAkdmFsdWUpKSAgCiAgICAgICAgICAgIGRpZSgnZnhjayB5b3UhIEkgaGF0ZSBFbmdsaXNoIScpOyAKICAgIH0gCn0gCgppZiAoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpICE9PSAnZGVidV9kZWJ1X2FxdWEnKQogICAgZGllKCJBcXVhIGlzIHRoZSBjdXRlc3QgZml2ZS15ZWFyLW9sZCBjaGlsZCBpbiB0aGUgd29ybGQhIElzbid0IGl0ID88YnI+Iik7CgoKaWYgKCBzaGExKCRzaGFuYSkgPT09IHNoYTEoJHBhc3N3ZCkgJiYgJHNoYW5hICE9ICRwYXNzd2QgKXsKICAgIGV4dHJhY3QoJF9HRVRbImZsYWciXSk7CiAgICBlY2hvICJWZXJ5IGdvb2QhIHlvdSBrbm93IG15IHBhc3N3b3JkLiBCdXQgd2hhdCBpcyBmbGFnPzxicj4iOwp9IGVsc2V7CiAgICBkaWUoImZ4Y2sgeW91ISB5b3UgZG9uJ3Qga25vdyBteSBwYXNzd29yZCEgQW5kIHlvdSBkb24ndCBrbm93IHNoYTEhIHdoeSB5b3UgY29tZSBoZXJlISIpOwp9CmlmKHByZWdfbWF0Y2goJy9eW2EtejAtOV0qJC9pc0QnLCAkY29kZSkgfHwgCnByZWdfbWF0Y2goJy9maWx8Y2F0fG1vcmV8dGFpbHx0YWN8bGVzc3xoZWFkfG5sfHRhaWxmfGFzc3xldmFsfHNvcnR8c2hlbGx8b2J8c3RhcnR8bWFpbHxcYHxce3xcJXx4fFwmfFwkfFwqfFx8fFw8fFwifFwnfFw9fFw/fHNvdXxzaG93fGNvbnR8aGlnaHxyZXZlcnNlfGZsaXB8cmFuZHxzY2FufGNocnxsb2NhbHxzZXNzfGlkfHNvdXJjZXxhcnJhfGhlYWR8bGlnaHR8cHJpbnR8ZWNob3xyZWFkfGluY3xmbGFnfDFmfGluZm98YmlufGhleHxvY3R8cGl8Y29ufHJvdHxpbnB1dHxcLnxsb2d8XF4vaScsICRhcmcpICkgeyAKICAgIGRpZSgiPGJyIC8+TmVlZWVlZX4hIEkgaGF2ZSBkaXNhYmxlZCBhbGwgZGFuZ2Vyb3VzIGZ1bmN0aW9ucyEgWW91IGNhbid0IGdldCBteSBmbGFnID13PSIpOyAKfSBlbHNlIHsgCiAgICBpbmNsdWRlICJmbGFnLnBocCI7CiAgICAkY29kZSgnJywgJGFyZyk7IAp9ID8+IApgYGAKCioq6L+Z6YGT6aKY6ICD55qE55+l6K+G54K55q+U6L6D5aSa77yM5YiG5byA6K6w5LiA5LiLKioKCmBgYAokX1NFUlZFUlvigJhRVUVSWV9TVFJJTkfigJld5Yy56YWN57uV6L+HCiRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXei/lOWbnnVybOS4reafpeivoueahOWtl+espuS4su+8jOS4juatpOexu+S8vOeahOi/mOacie+8mgoKJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ13ov5Tlm57orr/pl67mraTpobXpnaLmiYDpnIDnmoRVUkkKJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ13ov5Tlm57ljIXlkKvlvZPliY3ohJrmnKznmoTot6/lvoQKJF9TRVJWRVJbJ1BIUF9TRUxGJ13lvZPliY3mraPlnKjmiafooYzohJrmnKznmoTmlofku7blkI0K5Li+5Liq5L6L5a2Q77yaKOa1j+iniOWZqOiHquWKqOWwhmZpbGXnmoR1cmznvJbnoIHop6PnoIHkuoYpCmBgYAoKKirlj6/ku6XnnIvliLDvvIwkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ13lkowkX1NFUlZFUlsnUkVRVUVTVF9VUkknXeWcqOS8oOi+k+aXtuS4jeS8mnVybOino+egge+8jOiAjCRfR0VULCRfUE9TVOS8mnVybOino+egge+8jOWboOatpOaIkeS7rOWPr+S7pXVybOe8lueggee7lei/h+S4i+mdouS7o+egge+8mioqCgpgYGAKaWYoJF9TRVJWRVIpIHsgCiAgICBpZiAoICAgIHByZWdfbWF0Y2goJy9zaGFuYXxkZWJ1fGFxdWF8Y3V0ZXxhcmd8Y29kZXxmbGFnfHN5c3RlbXxleGVjfHBhc3N3ZHxhc3N8ZXZhbHxzb3J0fHNoZWxsfG9ifHN0YXJ0fG1haWx8XCR8c291fHNob3d8Y29udHxoaWdofHJldmVyc2V8ZmxpcHxyYW5kfHNjYW58Y2hyfGxvY2FsfHNlc3N8aWR8c291cmNlfGFycmF8aGVhZHxsaWdodHxyZWFkfGluY3xpbmZvfGJpbnxoZXh8b2N0fGVjaG98cHJpbnR8cGl8XC58XCJ8XCd8bG9nL2knLCAkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pCiAgICAgICAgKSAgCiAgICAgICAgZGllKCdZb3Ugc2VlbSB0byB3YW50IHRvIGRvIHNvbWV0aGluZyBiYWQ/Jyk7IAp9CmBgYAoKKirlrZfnrKbkuLLljLnphY3nu5Xov4cqKgoKYGBgCmlmIChwcmVnX21hdGNoKCcvXmFxdWFfaXNfY3V0ZSQvJywgJF9HRVRbJ2RlYnUnXSkgJiYgJF9HRVRbJ2RlYnUnXSAhPT0gJ2FxdWFfaXNfY3V0ZScpIHsgCiAgICBlY2hvICJOZWVlZWVlISBHb29kIEpvYiE8YnI+IjsKfSAKYGBgCgrnlLHkuo7msqHmnIkvc+S/rumlsOespueUqOadpeWcqOWMuemFjeaXtuWMuemFjeaNouihjOespu+8jOaIkeS7rOWPr+S7peS9v+eUqCUwYeaNouihjOaxoeafk+e7lei/hwoKKiokX1JFUVVFU1TlrZfmr43ljLnphY3nu5Xov4cqKgoKYGBgCmlmKCRfUkVRVUVTVCkgeyAKICAgIGZvcmVhY2goJF9SRVFVRVNUIGFzICR2YWx1ZSkgeyAKICAgICAgICBpZihwcmVnX21hdGNoKCcvW2EtekEtWl0vaScsICR2YWx1ZSkpICAKICAgICAgICAgICAgZGllKCdmeGNrIHlvdSEgSSBoYXRlIEVuZ2xpc2ghJyk7IAogICAgfSAKfQpgYGAKCioq5LmL5YmN55qE5Y+C5pWw6YO95pivR0VU5Z6L55qE77yM6ICMUE9TVOeahOS8mOWFiOe6p+avlEdFVOeahOimgemrmO+8jOWboOatpOaIkeS7rOWPr+S7pVBPU1TlkIzmoLflkI3np7Dmu6HotrPmnaHku7bnmoTlgLzvvIzmr5TlpoLmlbDlrZcsKioKCioq5pWw57uE57G75Z6L55qE5pWw5o2u5LiN6ZyA6KaBUE9TVO+8jHByZWdfbWF0Y2goKeWPquiDveWMuemFjeWtl+espuS4su+8jOaVsOe7hOW+l+S7pee7lei/hyoqCgoqKmZpbGVfZ2V0X2NvbnRlbnRz5q+U5a+557uV6L+HKioKCmBgYAppZiAoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpICE9PSAnZGVidV9kZWJ1X2FxdWEnKQogICAgZGllKCJBcXVhIGlzIHRoZSBjdXRlc3QgZml2ZS15ZWFyLW9sZCBjaGlsZCBpbiB0aGUgd29ybGQhIElzbid0IGl0ID88YnI+Iik7CmBgYAoK5Yia5byA5aeL5oOz55qE5pivcGhwOi8vaW5wdXTvvIzlkI7mnaXlj5HnjrDopoFQT1NU5pWw5o2u77yM5Zug5q2k5L6/5LiN6IO955So5LqG77yM6L+Z6YeM5Y+v5Lul55SoZGF0YTovL++8jArnpLrkvovvvJoKCmBgYApkYXRhOi8vdGV4dC9wbGFpbiw8P3BocCBwaHBpbmZvKCk/PgpkYXRhOi8vdGV4dC9wbGFpbjtiYXNlNjQsUEQ5d2FIQWdjR2h3YVc1bWJ5Z3BQejQ9CmBgYAoKKipzaGEx5q+U6L6D57uV6L+HKioKCmBgYAppZiAoIHNoYTEoJHNoYW5hKSA9PT0gc2hhMSgkcGFzc3dkKSAmJiAkc2hhbmEgIT0gJHBhc3N3ZCApewogICAgZXh0cmFjdCgkX0dFVFsiZmxhZyJdKTsKICAgIGVjaG8gIlZlcnkgZ29vZCEgeW91IGtub3cgbXkgcGFzc3dvcmQuIEJ1dCB3aGF0IGlzIGZsYWc/PGJyPiI7Cn0gZWxzZXsKICAgIGRpZSgiZnhjayB5b3UhIHlvdSBkb24ndCBrbm93IG15IHBhc3N3b3JkISBBbmQgeW91IGRvbid0IGtub3cgc2hhMSEgd2h5IHlvdSBjb21lIGhlcmUhIik7Cn0KYGBgCgoqKuebtOaOpeaVsOe7hOe7lei/h++8jOaIluiAhXNoYTHnorDmkp4qKgoKZXh0cmFjdOWPmOmHj+imhueblgrlm6DkuLpleHRyYWN0KCnlh73mlbDkvb/nlKjmlbDnu4TplK7lkI3kvZzkuLrlj5jph4/lkI3vvIzkvb/nlKjmlbDnu4TplK7lgLzkvZzkuLrlj5jph4/lgLzvvIzpkojlr7nmlbDnu4TkuK3nmoTmr4/kuKrlhYPntKDvvIzlsIblnKjlvZPliY3nrKblj7fooajkuK3liJvlu7rlr7nlupTnmoTkuIDkuKrlj5jph4/vvIzmiYDku6Xov5nph4zmiJHku6zlj6/ku6XkvKDmlbDnu4TvvIzljbNmbGFnW2NvZGVd5ZKMZmxhZ1thcmdd55qE5b2i5byPCgoqKmNyZWF0ZV9mdW5jdGlvbuS7o+eggeazqOWFpSoqCgpgYGAKaWYocHJlZ19tYXRjaCgnL15bYS16MC05XSokL2lzRCcsICRjb2RlKSB8fCAKcHJlZ19tYXRjaCgnL2ZpbHxjYXR8bW9yZXx0YWlsfHRhY3xsZXNzfGhlYWR8bmx8dGFpbGZ8YXNzfGV2YWx8c29ydHxzaGVsbHxvYnxzdGFydHxtYWlsfFxgfFx7fFwlfHh8XCZ8XCR8XCp8XHx8XDx8XCJ8XCd8XD18XD98c291fHNob3d8Y29udHxoaWdofHJldmVyc2V8ZmxpcHxyYW5kfHNjYW58Y2hyfGxvY2FsfHNlc3N8aWR8c291cmNlfGFycmF8aGVhZHxsaWdodHxwcmludHxlY2hvfHJlYWR8aW5jfGZsYWd8MWZ8aW5mb3xiaW58aGV4fG9jdHxwaXxjb258cm90fGlucHV0fFwufGxvZ3xcXi9pJywgJGFyZykgKSB7IAogICAgZGllKCI8YnIgLz5OZWVlZWVlfiEgSSBoYXZlIGRpc2FibGVkIGFsbCBkYW5nZXJvdXMgZnVuY3Rpb25zISBZb3UgY2FuJ3QgZ2V0IG15IGZsYWcgPXc9Iik7IAp9IGVsc2UgeyAKICAgIGluY2x1ZGUgImZsYWcucGhwIjsKICAgICRjb2RlKCcnLCAkYXJnKTsgCn0gCmBgYAoKKirmnIDlkI7kuIDkuKrov4fmu6TmiJHku6zlj6/ku6XnlKhjcmVhdGVfZnVuY3Rpb24oKee7lei/hzoqKgoKYGBgCjw/cGhwCiRteUZ1bmMgPSBjcmVhdGVfZnVuY3Rpb24oJyRhLCAkYicsICdyZXR1cm4oJGErJGIpO31ldmFsKCRfUE9TVFsxXSk7Ly8nKTsKYGBgCgoqKuaJp+ihjOaXtuebuOW9k+S6ju+8mioqCgpgYGAKZnVuY3Rpb24gbXlGdW5jKCRhLCAkYil7CglyZXR1cm4gJGErJGI7Cn0KZXZhbCgkX1BPU1RbMV0pOy8vfQpgYGAKCiMjIyBwYXlsb2FkCgoqKuWFiOeci+S4i+aJgOacieWPmOmHjzoqKgoKIVtdKGh0dHBzOi8vbmMwLmNkbi56a2FxLmNuL21kLzU1OTcvZDQ0YmM4NTFmM2Q4NGNlY2NmZWJmODM3ZGExY2M4NDJfNzIyMzIucG5nKQoKYGBgCj8lNjQlNjUlNjIlNzU9JTYxJTcxJTc1JTYxJTVmJTY5JTczJTVmJTYzJTc1JTc0JTY1JTBhJmZpbGU9ZGF0YTovL3RleHQvcGxhaW4sJTY0JTY1JTYyJTc1JTVmJTY0JTY1JTYyJTc1JTVmJTYxJTcxJTc1JTYxJiU3MyU2OCU2MSU2ZSU2MVtdPTEmJTcwJTYxJTczJTczJTc3JTY0W109MiYlNjYlNmMlNjElNjclNWIlNjMlNmYlNjQlNjUlNWQ9Y3JlYXRlX2Z1bmN0aW9uJiU2NiU2YyU2MSU2NyU1YiU2MSU3MiU2NyU1ZD19dmFyX2R1bXAoZ2V0X2RlZmluZWRfdmFycygpKTsvLwoKUE9TVDoJZGVidT0xJnBhc3N3ZD0xJmZpbGU9MQpgYGAKIyMgQ1RGLTEwMwojIyMg5rqQ56CBCgpgYGBwaHAKPGltZyBzcmM9J2N0Zi5ibXAnLz4KPD9waHAKaW5jbHVkZSAnZmxhZy5waHAnOwppZihpc3NldCgkX0dFVFsnZ2cnXSkmJmlzc2V0KCRfR0VUWydpZCddKSkgewogICAgJGlkPSRfR0VUWydpZCddOwogICAgJGdnPSRfR0VUWydnZyddOwogICAgaWYgKG1kNSgkaWQpID09PSBtZDUoJGdnKSAmJiAkaWQgIT09ICRnZykgewogICAgICAgIGVjaG8gJ1lvdSBnb3QgdGhlIGZpcnN0IHN0ZXAnOwogICAgICAgIGlmKGlzc2V0KCRfUE9TVFsncGFzc3dkJ10pKSB7CiAgICAgICAgICAgICRwYXNzd2Q9JF9QT1NUWydwYXNzd2QnXTsKICAgICAgICAgICAgaWYgKCFpc19udW1lcmljKCRwYXNzd2QpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYoJHBhc3N3ZD09MTIzNDU2NykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGVjaG8gJ0dvb2QgSm9iISc7CiAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodF9maWxlKCdmbGFnLnBocCcpOwogICAgICAgICAgICAgICAgICAgICBkaWUoJ0J5IFJldHJfMCcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBlY2hvICJjYW4geW91IHRoaW5rIHR3aWNlPz8iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgZWNobyAnWW91IGNhbiBub3QgZ2V0IGl0ICEnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGRpZSgnb25seSBvbmUgd2F5IHRvIGdldCB0aGUgZmxhZycpOwogICAgICAgIH0KfQogICAgZWxzZSB7CiAgICAgICAgZWNobyAiWW91IGFyZSBub3QgYSByZWFsIGhhY2tlciEiOwogICAgfQp9CmVsc2V7CiAgICBkaWUoJ1BsZWFzZSBpbnB1dCBmaXJzdCcpOwp9Cj8+CmBgYAoqKuesrOS4gOWxgu+8mioqIGBtZDUoJGlkKSA9PT0gbWQ1KCRnZykgJiYgJGlkICE9PSAkZ2dgIAoKKipNRDXlvLrnm7jnrYnvvIzmlbDnu4Tnu5Xov4fljbPlj68qKiBgL2luZGV4LnBocD9pZFtdPTEmZ2dbXT0yYCAKCioq56ys5LqM5bGC77yaKiogYCFpc19udW1lcmljKCRwYXNzd2QpICYmICAkcGFzc3dkPT0xMjM0NTY3YCAKCioqaXNfbnVtZXJpYygp57uV6L+H77ya5Y2B5YWt6L+b5Yi257uV6L+H44CBJTAw5oiq5pat57uV6L+H44CB5byx57G75Z6L5q+U6L6D57uV6L+H5Z2H5Y+vICoqIGBQT1NUOiBwYXNzd2Q9MTIzNDU2N2FgCgojIyMgcGF5bG9hZAohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvNTU5Ny9iNjdiZjRiYzg3MjI1NGRhZGUxNTM0YjYxNmMyNTgzNF84MDEzNC5wbmcpCmBgYAo/aWRbXT0xJmdnW109MgoKUE9TVDoJcGFzc3dkPTEyMzQ1NjdhCmBgYAojIyBDVEYtMTA0CmBgYAppbmNsdWRlICRfR0VUWydmaWxlJ10g5aSN5Yi2CmBgYAoK55uu5rWL5Li65paH5Lu25YyF5ZCr77yM5bCd6K+V6K+7aW5kZXgucGhw55qE5rqQ56CB77yMCgo+IGluZGV4LnBocD9maWxlPXBocDovL2ZpbHRlci9yZWFkPWNvbnZlcnQuYmFzZTY0LWVuY29kZS9yZXNvdXJjZT1pbmRleC5waHAKCuWPkeeOsOiiq+WKoOWvhui/mOWOn+WQjuWmguS4i++8mgoKYGBgcGhwCjw/cGhwCiRhID0gQCRfR0VUWydmaWxlJ107CmlmICghJGEpIHsKICAgICRhID0gJ2luZGV4Lmh0bWwnOwp9CmVjaG8gJ2luY2x1ZGUgJF9HRVRbXCdmaWxlXCddJzsKaWYgKHN0cnBvcygnZmxhZycsJGEpIT09ZmFsc2UpIHsKICAgIGRpZSgnbm9ub25vJyk7Cn0KaW5jbHVkZSAkYTsKPz4KIAo8IS0tYmFzZTY0OiBaR2x5TG5Cb2NBPT0gLS0+CmBgYAoK5Y+R546w5o+Q56S677yM5YW25a6e5Y+z5Ye75p+l55yL5rqQ5Luj56CB5Lmf5Y+v5Lul55yL5YiwLi4KCmA8IS0tYmFzZTY0OiBaR2x5TG5Cb2NBPT0gLS0+YAoKYmFzZTY06Kej56CB5ZCO5b6X5YiwZGlyLnBocAoK6K+7ZGlyLnBocAoKPiBpbmRleC5waHA/ZmlsZT1waHA6Ly9maWx0ZXIvcmVhZD1jb252ZXJ0LmJhc2U2NC1lbmNvZGUvcmVzb3VyY2U9ZGlyLnBocAoKYGBgCjw/cGhwCiRhID0gQCRfR0VUWydkaXInXTsKaWYoISRhKXsKJGEgPSAnL3RtcCc7Cn0KdmFyX2R1bXAoc2NhbmRpcigkYSkpOwpgYGAKCuW+l+efpeivpeaWh+S7tuWPr+S7peWIl+ebruW9le+8jOWwneivleWIl+ebruW9lQoKPiBkaXIucGhwP2Rpcj0vCgohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvNTU5Ny81ODMwMmViZGY0MjUyZDE3MWYxZWJmYmRhNzVmZTNjZl81NDExMS5wbmcpCgrliJfnm67lvZXnnIvliLDlrZjmlL7nq5nngrnmlofku7bnmoTmlofku7blpLl3d3cKCuWGjeWIl+ebruW9lQoKYGRpci5waHA/ZGlyPS93d3dgCgohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvNTU5Ny8xNTBjMzRjMTU5N2E0MGMwYzU4NTNjNDA1NTA3MDU3M184MTM2Mi5wbmcpCgrov5nmoLflvpfliLBmbGFnMTIzLnBocOaWh+S7tgoK5L2/55SoZmlsZeivu+WPlu+8jOW+l+WIsGZsYWcKCj4gYGluZGV4LnBocC8/ZmlsZT1waHA6Ly9maWx0ZXIvcmVhZD1jb252ZXJ0LmJhc2U2NC1lbmNvZGUvcmVzb3VyY2U9ZmxhZzEyMy5waHBgCgojIyBDVEYtMTA1CiMjIyMg6ICD54K5CgpgYGAK5rOo5oSP57uZaGludCA/c291cmNlPTEKYGBgCgoxLiDlj5jph4/opobnm5YKMi4gcGhw5byx57G75Z6LIOeIhuegtHNoYTHvvIxtZDXlvLHnsbvlnosKMy4gcGhw5aSN5p2C5Y+Y6YePZ2V0c2hlbGwKCiMjIyMg5Luj56CBCgpgYGBwaHAKIDw/cGhwCiAKJGFkbWluUGFzc3dvcmQgPSAnZDhiOGNhZjRkZjY5YTgxZjI4MTVwYmNiNzRjZDczYWInOwppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZnV4a1NRTCcpKSB7CiAgICBmdW5jdGlvbiBmdXhrU1FMKCRpVGV4dCkKICAgIHsKICAgICAgICAkb1RleHQgPSAkaVRleHQ7CiAgICAgICAgJG9UZXh0ID0gc3RyX3JlcGxhY2UoJ1xcXFwnLCAnXFwnLCAkb1RleHQpOwogICAgICAgICRvVGV4dCA9IHN0cl9yZXBsYWNlKCdcIicsICciJywgJG9UZXh0KTsKICAgICAgICAkb1RleHQgPSBzdHJfcmVwbGFjZSgiXCciLCAiJyIsICRvVGV4dCk7CiAgICAgICAgJG9UZXh0ID0gc3RyX3JlcGxhY2UoIiciLCAiJyciLCAkb1RleHQpOwogICAgICAgIHJldHVybiAkb1RleHQ7CiAgICB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2dldFZhcnMnKSkgewogICAgZnVuY3Rpb24gZ2V0VmFycygpCiAgICB7CiAgICAgICAgJHRvdGFscyA9IGFycmF5X21lcmdlKCRfR0VULCAkX1BPU1QpOwogICAgICAgIGlmIChjb3VudCgkX0dFVCkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9HRVQgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgIGdsb2JhbCAkeyRrZXl9OwogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGVtcF9hcnJheSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICRrZXkyID0+ICR2YWx1ZTIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZW1wX2FycmF5WyRrZXkyXSA9IGZ1eGtTUUwodHJpbSgkdmFsdWUyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGVtcF9hcnJheVska2V5Ml0gPSBzdHJfcmVwbGFjZSgnIicsICdcIicsIHN0cl9yZXBsYWNlKCInIiwgIlwnIiwgKHRyaW0oJHZhbHVlMikpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHska2V5fSA9ICRfR0VUWyRrZXldID0gJHRlbXBfYXJyYXk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ215c3FsX3JlYWxfZXNjYXBlX3N0cmluZycpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR7JGtleX0gPSBmdXhrU1FMKHRyaW0oJHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHska2V5fSA9ICRfR0VUWyRrZXldID0gc3RyX3JlcGxhY2UoJyInLCAnXCInLCBzdHJfcmVwbGFjZSgiJyIsICJcJyIsICh0cmltKCR2YWx1ZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CiAKZ2V0VmFycygpOwppZiAoaXNzZXQoJHNvdXJjZSkpIHsKICAgIGhpZ2hsaWdodF9maWxlKF9fRklMRV9fKTsKfQogCi8v5Y+q5pyJYWRtaW7miY3og73orr7nva7njq/looPlj5jph48KaWYgKG1kNSgkcGFzc3dvcmQpID09PSAkYWRtaW5QYXNzd29yZCAmJiBzaGExKCR2ZXJpZikgPT0gJHZlcmlmKSB7CiAgICBlY2hvICd5b3UgY2FuIHNldCBjb25maWcgdmFyaWFibGVzISEnIC4gJzwvYnI+JzsKICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJEdMT0JBTFMpIGFzICRrZXkpIHsKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL3ZhclxkezEsMn0vJywgJGtleSkgJiYgc3RybGVuKCRHTE9CQUxTWyRrZXldKSA8IDEyKSB7CiAgICAgICAgICAgIEBldmFsKCJcJCRrZXkiIC4gJz0iJyAuICRHTE9CQUxTWyRrZXldIC4gJyI7Jyk7CiAgICAgICAgfQogICAgfQp9IGVsc2UgewogICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkR0xPQkFMUykgYXMgJGtleSkgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcvdmFyXGR7MSwyfS8nLCAka2V5KSkgewogICAgICAgICAgICBlY2hvICgkR0xPQkFMU1ska2V5XSkgLiAnPC9icj4nOwogICAgICAgIH0KICAgIH0KfQpgYGAKCiMjIyMg5aWH5aWH5oCq5oCq55qEd2FmCgrlm6DkuLrnjq/looPmmK9waHA377yM5omA5Lul5rKh5pyJbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5n5Ye95pWw77yM55u05o6l5YiG5p6Q5LiL6Z2i5LiA5Y2K77yM55u45b2T5LqO5a+55Y2V5byV5Y+35ZKM5Y+M5byV5Y+36L+b6KGM6L2s5LmJ77yM5L2G5piv5Y+N5pac5p2g5rKh5pyJ5YGa5Lu75L2V5pON5L2c44CCCgojIyMjIOWPmOmHj+imhueblgoKYGBgcGhwCiRhZG1pblBhc3N3b3JkID0gJ2Q4YjhjYWY0ZGY2OWE4MWYyODE1cGJjYjc0Y2Q3M2FiJzsKZm9yZWFjaCAoJF9HRVQgYXMgJGtleSA9PiAkdmFsdWUpIHsKICBnbG9iYWwgJHska2V5fTsKfQpgYGAKCi0g6L+Z5Liq5Yqf6IO95Y+v5Lul5bCGJF9HRVTkuK3nmoTplK7lgLznm7TmjqXovazkuLrlj5jph4/nsbvkvLzkuo4geHh4P3Bhc3N3b3JkPTEg6YKj5LmI5bCx6IO96KaG55uWJGFkbWlu5Y+Y6YeP44CCCi0g5oiR5Lus5Y+R546w5LqG6L+Z5LiqYWRtaW5QYXNzd29yZOacieW+iOWkp+eahOmXrumimO+8jOi/meWOi+agueWwseS4jeaYr21kNeOAggoK6KaB5rGCCgpgYGBwaHAKbWQ1KCRwYXNzd29yZCkgPT09ICRhZG1pblBhc3N3b3JkIOWkjeWItgpgYGAKCi0g6YKj5LmI5oiR5Lus5bCGJHBhc3N3b3Jk6KaG55uW5Li65Lu75oSP5YC877yM54S25ZCO5bCGJGFkbWluUGFzc3dvcmTopobnm5bkuLrlhbZtZDXlgLzjgILljbPlj6/ov4fnrKzkuIDlhbPjgIIKCiMjIyMgcGhw5byx57G75Z6LCgpwaHDlvLHnsbvlnovmr5TovoPvvIzogIPomZHkuIDnp43nibnmrormg4XlhrXvvIxzaGExKCRhKT0wZXh4eO+8jOebuOW9k+S6juenkeWtpuiuoeaVsOazlTDvvIzpgqPkuYjvvIzniIbnoLTmib7lh7rku7vmhI8wZXh4eOeahOWPmOmHj+eahHNoYTHov5jmmK8wZXh4eOOAggoKYGBgcGhwCjw/cGhwCmZvciAoJGk1ID0gMDsgJGk1IDw9IDk5OTk5OTk5OTk7ICRpNSsrKSB7CiAgICAkcmVzID0gJzBlJyAuICRpNTsKICAgIC8vMGUxMjkwNjMzNzA0CiAgICBpZiAoJHJlcyA9PSBoYXNoKCdzaGExJywgJHJlcykpIHsKICAgICAgICBwcmludF9yKCRyZXMpOwogICAgfQp9CmBgYAoKIyMjIyBwaHDlpI3mnYLlj5jph48KCmBgYHBocApmb3JlYWNoIChhcnJheV9rZXlzKCRHTE9CQUxTKSBhcyAka2V5KSB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy92YXJcZHsxLDJ9LycsICRrZXkpICYmIHN0cmxlbigkR0xPQkFMU1ska2V5XSkgPCAxMikgewogICAgICAgICAgICBAZXZhbCgiXCQka2V5IiAuICc9IicgLiAkR0xPQkFMU1ska2V5XSAuICciOycpOwogICAgICAgIH0KICAgIH0KYGBgCgotIOi/meauteaYr+Wwhuiuvue9rnZhcuW8gOWktO+8jOWQjumdouW4pjHliLAy5Liq5pWw5a2X5Y+Y6YeP55qE5YC877yM57G75Ly85LqOdmFyMT14eHg76L+Z5qC355qECi0g55Sx5LqO5Y+Y6YeP6KaG55uW55qE546v6IqC6ZmQ5Yi25LqG5Y2V5Y+M5byV5Y+355qE6L6T5YWl77yM5omA5Lul6L+Z6YeM55qE6Kej5rOV5Li65Yip55SocGhw5aSN5p2CCgojIyMjIOacgOe7iHBheWxvYWQKCmBgYHBocAo/c291cmNlPTEmYWRtaW5QYXNzd29yZD1jNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiZwYXNzd29yZD0xJnZlcmlmPTBlMTI5MDYzMzcwNCZ2YXIxPSR7JGEoJGIpfSZhPXN5c3RlbSZiPWNhdCBmbGFnLnBocApgYGAKCiMjIyMg5YW25LuWUGF5bG9hZDoKCmBgYArlj5jph4/opobnm5Ygc2hhMeW8seavlOi+gyBwYXlsb2FkOgpgP2FkbWluUGFzc3dvcmQ9MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzAmcGFzc3dvcmQ9MTIzJnZlcmlmPTBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwODE2MTQ2MTczMDAwMDAwMDBgCuWPquaYr+WvueWAvOi/m+ihjOS6hui/h+a7pCDlj6/ku6XnlKjplK7mnaXor7vlj5ZmbGFnCgoKP2FkbWluUGFzc3dvcmQ9MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzAmcGFzc3dvcmQ9MTIzJnZlcmlmPTBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwODE2MTQ2MTczMDAwMDAwMDAmR0xPQkFMU1t2YXIxO3N5c3RlbSgnY2F0IGZsYWcucGhwJyk7JGFdPTEKYGBgCgojIyBDVEYtMTA2Cioq6K6/6ZeuZmxhZy5waHAqKgoKKirlubbmnKrmiqU0MDTvvIxmbGFnLnBocOWtmOWcqO+8jOmcgOimgeivu+WPlumHjOmdoueahOWGheWuueiOt+WPlmZsYWcqKgohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvNTU5Ny9hYzFjNGQ5N2Y2ZDcyNzYxMDVkYzg3NGJiODI3YjI3Nl82MTc1OC5wbmcpCgoqKuWPr+S7peeci+WIsOmhtemdouaYvuekuueahOaYr+a6kOeggeeahOS6jOi/m+WItue8lueggSoqCgoqKjLov5vliLbovazmjaLkuLoxMOi/m+WItue8lueggSoqCgoqKjEw6L+b5Yi257yW56CB5ZCO5YaN6L+b6KGMQVNDSUnop6PnoIHvvIzlvpfliLDmupDnoIEqKgoKIyMg5rqQ56CBCgpgYGBwaHAKPD9waHAKQCRzdHIgPSAkX0dFVFsnZiddOwpAJHIgPSAkX0dFVFsnciddOwokcmFuZCA9IHJhbmQoMSw1MCk7CnZhcl9kdW1wKCRyYW5kKTsKJGlzTWF0Y2hlZCA9IHByZWdfbWF0Y2hfYWxsKCcvXCRfR0VUfFwkX1BPU1R8XCRfUkVRVUVTVHxmaWxlX3B1dF9jb250ZW50c3xmaWxlX2dldF9jb250ZW50c3x0eXBlfGRpci9pJywgJHN0cik7CmlmKCRpc01hdGNoZWQgIT0gMCl7CglkaWUoJ2JhZCBoYWNrZXIhJyk7Cn0KaWYoJHIgPT0gJHJhbmQpewoJZWNobyAnR08hPGJyPic7CglzeXN0ZW0oJHN0cik7Cn0KPz4KYGBgCgoqKuWPr+S7peeci+WIsOa6kOeggeS4reaciXN5c3RlbSgp5ZG95Luk5omn6KGM77yM5L2G5piv5q2j5YiZ6L+H5ruk5LqG6YOo5YiG5ZG95LukKioKCioq6L+Z6YeM5Y+v5Lul5L2/55SoY29weeWRveS7pCoqCgoqKuWwhmZsYWcucGhwIOWkjeWItuWIsOS4gOS4qnR4dOaWh+S7tuS4re+8jOebtOaOpeivu+WPlnR4dOaWh+S7tuWNs+WPr+iOt+W+l2ZsYWcqKgoKYGBgY21kCmNvcHkgZmxhZy5waHAgMS50eHQKYGBgCgoqKuimgeaJp+ihjHN5c3RlbemcgOimgea7oei2syoqCgpgYGBwaHAKaWYoJHIgPT0gJHJhbmQpCmBgYAoK5oiR5Lus5Lyg5YWlcueahOWPguaVsOmcgOimgeWSjOmaj+acuuaVsCRyYW5k55u45ZCMCgpgYGBwaHAKJHJhbmQgPSByYW5kKDEsNTApOwoK55Sf5oiQMS01MOeahOmaj+acuuaVsApgYGAKCui/memHjOS9v+eUqGJ1cnDmipPljIXov5vooYzniIbnoLTpmo/mnLrmlbAKCioq5p6E6YCgcGF5bG9hZDoqKgoKYGBgCmluZGV4LnBocD9mPWNvcHkgZmxhZy5waHAgMS50eHQmcj0xCmBgYAoKKirmipPljIXlkI7ov5vooYxwYXlsb2Fk6K6+572uKioKCiFbXShodHRwczovL25jMC5jZG4uemthcS5jbi9tZC81NTk3LzUxN2I3ZTViMzBmM2MxYWJkY2NiOTljMDQ2YzM2ZjMzXzg4ODMxLnBuZykKCiFbXShodHRwczovL25jMC5jZG4uemthcS5jbi9tZC81NTk3L2M0YWEwY2FiYTU2YTM3YjA4NTkwZjc2NzI4ODkxYWZjXzQ3NzYzLnBuZykKCioq6LeR5YyF57uT5p2f77yM6L+b6KGM5o6S5bqPKioKCiFbXShodHRwczovL25jMC5jZG4uemthcS5jbi9tZC81NTk3LzQ5ZmNkODYyMTk2ZWJhMmZiYmNhMDlhMDZjN2YzYmE4XzUxMDY4LnBuZykKCioq6K6/6ZeuLzEudHh05Y2z5Y+v6I635b6XZmxhZyoqCiFbXShodHRwczovL25jMC5jZG4uemthcS5jbi9tZC81NTk3L2ExZmEzNzlkZTMzZWQ4YzI3M2ZlOWNmYTYwMTk0MjA0XzI0Mzc0LnBuZykKIyMgQ1RGLTEwNwojIyMg5rqQ56CBCgpgYGBwaHAKPD9waHAKaW5jbHVkZSAnZmxhZy5waHAnOwpoaWdobGlnaHRfZmlsZSggX19GSUxFX18pOwpmdW5jdGlvbiBmaWx0ZXIoJHN0cmluZyl7CiAgICAkZmlsdGVyID0gJy9mbGFnL2knOwogICAgcmV0dXJuIHByZWdfcmVwbGFjZSgkZmlsdGVyLCdmbGFnY2MnLCRzdHJpbmcpOwp9CiR1c2VybmFtZT0kX0dFVFsnbmFtZSddOwokcGFzcz0iVjEzdE40bV9udW1iZXJfb25lIjsKJHBhc3M9IkZsNGdfaW5fVjEzdE40bSI7CiRzZXI9J2E6Mjp7aTowO3M6Jy5zdHJsZW4oJHVzZXJuYW1lKS4iOlwiJHVzZXJuYW1lXCI7aToxO3M6Ii5zdHJsZW4oJHBhc3MpLiI6XCIkcGFzc1wiO30iOwoKJGF1dGhlbiA9IHVuc2VyaWFsaXplKGZpbHRlcigkc2VyKSk7CgppZigkYXV0aGVuWzFdPT09IlYxM3RONG1fbnVtYmVyX29uZSAiKXsKICAgIGVjaG8gJGZsYWc7Cn0KaWYgKCFpc3NldCgkX0dFVFsnZGVidWcnXSkpIHsKICAgIGVjaG8oIlBMU1NTIERPTlQgSEFDSyBNRSEhISEhISIpLlBIUF9FT0w7Cn0gZWxzZSB7CiAgICBoaWdobGlnaHRfZmlsZSggX19GSUxFX18pOwp9Cj8+CjwhLS0gZGVidWcgLS0+CiAKYGBgCioq5Y+Y6ZW/55qE5Y+N5bqP5YiX5YyW6YCD6YC4KioKCiMjIyBwYXlsb2FkCgpgYGAKaW5kZXgucGhwLz9kZWJ1ZyZuYW1lPWZsYWdmbGFnZmxhZ2ZsYWdmbGFnZmxhZ2ZsYWdmbGFnZmxhZ2ZsYWdmbGFnZmxhZ2ZsYWdmbGFnZmxhZ2ZsYWdmbGFnIjtpOjE7czoxOToiVjEzdE40bV9udW1iZXJfb25lICI7fQpgYGAKIyMgQ1RGLTEwOAojIyMg5rqQ56CBCgpgYGBwaHAKPCFkb2N0eXBlIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiPgo8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy5jc3MiPgo8dGl0bGU+56m655m96aG16Z2iPC90aXRsZT4KPC9oZWFkPgo8ZGl2IGNsYXNzPSJvdmVybGF5Ij4KICAgIDxkaXYgY2xhc3M9Imhlcm8iPgogICAgICAgIDxoMT7ov5nmmK/kuIDkuKo8c3Bhbj7nqbrnmb3pobXpnaI8L3NwYW4+PC9oMT4KICAgICAgICA8aDM+5Yir5om+5LqG5bCPaGFja2VyLCDov5nph4zku4DkuYjpg73msqHmnIk8L2gzPgoJCTxoMz5wICAg5oiR5piv5Lyg5Y+C5ZCNLS0tLS0tLS0tLS0tLTEwMDg277ya55yL55yL5oiRPC9oMz4KICAgIDwvZGl2Pgo8L2Rpdj4KPC9odG1sPgo8P3BocAplcnJvcl9yZXBvcnRpbmcoMCk7CiRwID0gJF9HRVRbInAiXTsKCiAgICBpZiAoaXNzZXQoJHApKSB7CgkJZWNobyAn5oGt5Zac5L2g6I635b6X5LqGZmxhZyHvvIzljrvorr/pl65mbGFnLnR4dOWQpyc7CgkJJGkgPSAxOwoJCXdoaWxlKCRpICE9IDEwMCl7CgkJCWZpbGVfcHV0X2NvbnRlbnRzKCdmbGFnL2ZsYWcnLiRpLicudHh0Jywn6K6/6Zeu5LiL5LiA5Liq5ZCn77yBZmxhZycuKCRpKzEpLicudHh0Jyk7CgkJCSRpID0gJGkrMTsKCQl9CgkJZmlsZV9wdXRfY29udGVudHMoJ2ZsYWcvZmxhZzEwMDg2LnR4dCcsJ2ZsYWd7Rk9SRklWRUFTSkRMQUpTTFFXRU9JQVN9Jyk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gIk5PTk9OTyI7CiAgICB9Cj8+CgpgYGAKKirlr7lw5Lu75oSP5Lyg5Y+C77yM55Sf5oiQ5LqGMTAy5LiqZmxhZy50eHQK5q2j56Gu55qEZmxhZ+WcqGZsYWcxMDA4Ni50eHTph4zpnaIqKgoKKirorr/pl65gZmxhZy9mbGFnMTAwODYudHh0YCoqCiMjIENURi0xMDkKIyMg5rqQ56CBCmBgYHBocAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4KPGgzPkphY2sgTG92ZSBSb3NlPGgzLz4KPGgzPuatpOmimOacieS4gOWumumavuW6pu+8jOacieWFs+WPjeW6j+WIl+WMljxoMy8+Cjw/cGhwCmhpZ2hsaWdodF9maWxlKF9fZmlsZV9fKTsKCmNsYXNzIEphY2sKewogICAgcHJpdmF0ZSAkYWN0aW9uOwoKICAgIGZ1bmN0aW9uIF9fc2V0KCRhLCAkYikKICAgIHsKICAgICAgICAkYi0+JGEoKTsKICAgIH0KfQpjbGFzcyBMb3ZlIHsKICAgIHB1YmxpYyAkdmFyOwogICAgZnVuY3Rpb24gX19jYWxsKCRhLCRiKQogICAgewogICAgICAgICRyb3NlID0gJHRoaXMtPnZhcjsKICAgICAgICBjYWxsX3VzZXJfZnVuYygkcm9zZSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGFjdGlvbigpewogICAgICAgIGVjaG8gImphY2sgbG92ZSByb3NlIjsKICAgIH0KfQpjbGFzcyBUaXRhbmljewogICAgcHVibGljICRwZW9wbGU7CiAgICBwdWJsaWMgJHNoaXA7CiAgICBmdW5jdGlvbiBfX2Rlc3RydWN0KCl7CiAgICAgICAgJHRoaXMtPnBlb3BsZS0+YWN0aW9uPSR0aGlzLT5zaGlwOwogICAgfQp9CmNsYXNzIFJvc2V7CiAgICBwdWJsaWMgJHZhcjE7CiAgICBwdWJsaWMgJHZhcjI7CiAgICBmdW5jdGlvbiBfX2ludm9rZSgpewogICAgICAgIGlmKCAoJHRoaXMtPnZhcjEgIT0gJHRoaXMtPnZhcjIpICYmIChtZDUoJHRoaXMtPnZhcjEpID09PSBtZDUoJHRoaXMtPnZhcjIpKSAmJiAoc2hhMSgkdGhpcy0+dmFyMSk9PT0gc2hhMSgkdGhpcy0+dmFyMikpICl7CiAgICAgICAgICAgIGV2YWwoJHRoaXMtPnZhcjEpOwogICAgICAgIH0KICAgIH0KfQppZihpc3NldCgkX0dFVFsnbG92ZSddKSl7CiAgICAkc2FpbD0kX0dFVFsnbG92ZSddOwogICAgdW5zZXJpYWxpemUoJHNhaWwpOwp9Cj8+CmBgYAoK6aKY55uu5omA5raJ5Y+K5Yiw55qE6a2U5pyv5pa55rOV77yaCgpgYGAKUEhQCl9fY2FsbCgpICAgLy8g5Zyo5a+56LGh5LiK5LiL5paH5Lit6LCD55So5LiN5Y+v6K6/6Zeu55qE5pa55rOV5pe26Kem5Y+RCl9fc2V0KCkgICAvLyDnlKjkuo7lsIbmlbDmja7lhpnlhaXkuI3lj6/orr/pl67nmoTlsZ7mgKcKX19pbnZva2UoKSAgIC8v5b2T5bCd6K+V5bCG5a+56LGh6LCD55So5Li65Ye95pWw5pe26Kem5Y+RIApgYGAKCummluWFiOeci+WIsCBSb3NlIOexu+S4reacieS4gOS4qiBldmFsIOWHveaVsOWPr+S7peaJp+ihjOS7u+aEj+S7o+egge+8jOS9huaYr+mcgOimgee7lei/h++8mgoKYGBgClBIUAppZiggKCR0aGlzLT52YXIxICE9ICR0aGlzLT52YXIyKSAmJiAobWQ1KCR0aGlzLT52YXIxKSA9PT0gbWQ1KCR0aGlzLT52YXIyKSkgJiYgKHNoYTEoJHRoaXMtPnZhcjEpPT09IHNoYTEoJHRoaXMtPnZhcjIpKSApCmBgYAoK6L+Z5Liq5LmN55yL5LiA55y85ZyoIENURiDnmoTln7rnoYDpopjnm67kuK3pnZ7luLjluLjop4HvvIzkuIDoiKzmg4XlhrXkuIvlj6rpnIDopoHkvb/nlKjmlbDnu4TljbPlj6/nu5Xov4fjgILkvYbmmK/ov5nph4zmmK/lnKjnsbvph4zpnaLvvIzmiJHku6zlvZPnhLbkuI3og73ov5nkuYjlgZrjgIIKCui/memHjOeahOiAg+eCueaYryBtZDUoKSDlkowgc2hhMSgpIOWPr+S7peWvueS4gOS4quexu+i/m+ihjGhhc2jvvIzlubbkuJTkvJrop6blj5Hov5nkuKrnsbvnmoQgYF9fdG9TdHJpbmdgIOaWueazle+8m+S4lOW9k2V2YWwoKeWHveaVsOS8oOWFpeS4gOS4quexu+WvueixoeaXtu+8jOS5n+S8muinpuWPkei/meS4quexu+mHjOeahCBgX190b1N0cmluZ2Ag5pa55rOV44CCCgrmiYDku6XmiJHku6zlj6/ku6Xkvb/nlKjlkKvmnIkgYF9fdG9TdHJpbmdgIOaWueazleeahFBIUOWGhee9ruexu+adpee7lei/h++8jOeUqOeahOS4pOS4quavlOi+g+WkmueahOWGhee9ruexu+WwseaYryBgRXhjZXB0aW9uYCDlkowgYEVycm9yYCDvvIzku5bku6zkuYvkuK3mnInkuIDkuKogYF9fdG9TdHJpbmdgIOaWueazle+8jOW9k+exu+iiq+W9k+WBmuWtl+espuS4suWkhOeQhuaXtu+8jOWwseS8muiwg+eUqOi/meS4quWHveaVsOOAggoK6L+Z6YeM5LulYEVycm9yYCDnsbvkuLrkvovvvIzmiJHku6zmnaXnnIvnnIvlvZPop6blj5Hku5bnmoQgYF9fdG9TdHJpbmdgIOaWueazleaXtuS8muWPkeeUn+S7gOS5iO+8mgoKYGBgClBIUAo8P3BocAokYSA9IG5ldyBFcnJvcigicGF5bG9hZCIsMSk7CmVjaG8gJGE7CmBgYAoK6L6T5Ye65aaC5LiL77yaCgpgYGAKUEhQCkVycm9yOiBwYXlsb2FkIGluIC91c2VyY29kZS9maWxlLnBocDoyClN0YWNrIHRyYWNlOgojMCB7bWFpbn0KYGBgCgrlj5HnjrDkvJrku6XlrZfnrKbkuLLnmoTlvaLlvI/ovpPlh7rlvZPliY3miqXplJnvvIzljIXlkKvlvZPliY3nmoTplJnor6/kv6Hmga/vvIhwYXlsb2Fk77yJ5Lul5Y+K5b2T5YmN5oql6ZSZ55qE6KGM5Y+377yIMu+8ie+8jOiAjOS8oOWFpSBgRXJyb3IoInBheWxvYWQiLDEpYCDkuK3nmoTplJnor6/ku6PnoIHigJwx4oCd5YiZ5rKh5pyJ6L6T5Ye65Ye65p2l44CCCgrlnKjmnaXnnIvnnIvkuIvkuIDkuKrkvovlrZDvvJoKCmBgYApQSFAKPD9waHAKJGEgPSBuZXcgRXJyb3IoInBheWxvYWQiLDEpOyRiID0gbmV3IEVycm9yKCJwYXlsb2FkIiwyKTsKZWNobyAkYTsKZWNobyAiXHJcblxyXG4iOwplY2hvICRiOwpgYGAKCui+k+WHuuWmguS4i++8mgoKYGBgClBIUApFcnJvcjogcGF5bG9hZCBpbiAvdXNlcmNvZGUvZmlsZS5waHA6MgpTdGFjayB0cmFjZToKIzAge21haW59CkVycm9yOiBwYXlsb2FkIGluIC91c2VyY29kZS9maWxlLnBocDoyClN0YWNrIHRyYWNlOgojMCB7bWFpbn0KYGBgCgrlj6/op4HvvIxgJGFgIOWSjCBgJGJgIOi/meS4pOS4quWvueixoeacrOi6q+aYr+S4jeWQjOeahO+8jOS9huaYryBgX190b1N0cmluZ2Ag5pa55rOV6L+U5Zue55qE57uT5p6c5piv55u45ZCM55qE44CC5rOo5oSP77yM6L+Z6YeM5LmL5omA5Lul6ZyA6KaB5Zyo5ZCM5LiA6KGM5piv5Zug5Li6IGBfX3RvU3RyaW5nYCDov5Tlm57nmoTmlbDmja7ljIXlkKvlvZPliY3ooYzlj7fjgIIKCmBFeGNlcHRpb25gIOexu+S4jiBgRXJyb3JgIOeahOS9v+eUqOWSjOe7k+aenOWujOWFqOS4gOagt++8jOWPquS4jei/hyBgRXhjZXB0aW9uYCDnsbvpgILnlKjkuo5QSFAgNeWSjDfvvIzogIwgYEVycm9yYCDlj6rpgILnlKjkuo4gUEhQIDfjgIIKCumCo+S5iOaIkeS7rOeahOaAnei3r+WwseadpeS6hu+8jOaIkeS7rOWPr+S7peWwhumimOebruS7o+eggeS4reeahCBgJHN5Y2Ag5ZKMIGAkbG92ZXJgIOWIhuWIq+WjsOaYjuS4uuexu+S8vOS4iumdoueahOWGhee9ruexu+eahOWvueixoe+8jOiuqei/meS4pOS4quWvueixoeacrOi6q+S4jeWQjO+8iOS8oOWFpeeahOmUmeivr+S7o+eggeWNs+WPr++8ie+8jOS9huaYryBgX190b1N0cmluZ2Ag5pa55rOV6L6T5Ye655qE57uT5p6c55u45ZCM5Y2z5Y+v44CC5omA5Lul57uV6L+H6L+Z5LiA5q2l5YiG55qEIFBheWxvYWQg5aSn6Ie05aaC5LiL77yaCgpgYGAKUEhQCiRwYXlsb2FkID0gIj8+PD89c3lzdGVtKCdjYXQgL2ZsYWcnKT8+IjsKJGE9bmV3IEVycm9yKCRwYXlsb2FkLDEpOyRiPW5ldyBFcnJvcigkcGF5bG9hZCwyKTsKJGV2YWwgPSBuZXcgUm9zZSgpOwokZXZhbCAtPiB2YXIxID0gJGE7CiRldmFsIC0+IHZhcjIgPSAkYjsKYGBgCgrmjqXkuIvmnaXmiJHku6zop6PlhrPnmoTkvr/mmK/lpoLkvZXosIPnlKggUm9zZSDnsbvkuK3nmoQgYF9faW52b2tlYCDmlrnms5XmnaXmiafooYwgZXZhbCDkuobjgILlnKggTG92ZSDnsbvnmoQgYF9fY2FsbGAg5pa55rOV5Lit5pyJ5LiA5LiqIGNhbGxfdXNlcl9mdW5jIOWHveaVsO+8jOaIkeS7rOWPr+S7pemAmui/h+i/meS4quWHveaVsOadpeinpuWPkSBSb3NlIOexu+S4reeahCBgX19pbnZva2VgIOaWueazleOAggoK54S25ZCO5L6/5piv5Y675om+6IO95aSf6Kem5Y+RIExvdmUg57G75LitIGBfX2NhbGxgIOaWueazleeahOWcsOaWue+8jOeci+WIsOS6hiBKYWNrIOexu+eahCBgX19zZXRgIOaWueazleS4reeahCBgJGItPiRhKCk7YCDmiJHku6zlj6/ku6XlsIbov5nph4znmoQgYCRiYCDotYvkuLogYExvdmVgIOexu+eahOS4gOS4quWvueixoe+8jOi/meagt+S+v+WPr+S7peinpuWPkSBgTG92ZWAg57G75Lit55qEIGBfX2NhbGxgIOS6huOAglRpdGFuaWMg57G75Lit55qEIGAkdGhpcy0+cGVvcGxlLT5hY3Rpb249JHRoaXMtPnNoaXA7YCDlj6/ku6Xop6blj5EgSmFjayDnsbvnmoQgYF9fc2V0YCDmlrnms5XjgIIKCiMjIyBQT0MK5omA5Lul5pyA57uI55qEIFBPQyDlpoLkuIvvvJoKCmBgYHBocApQSFAKPD9waHAKCmNsYXNzIEphY2sKewogICAgcHJpdmF0ZSAkYWN0aW9uOwogICAgZnVuY3Rpb24gX19zZXQoJGEsICRiKQogICAgewogICAgICAgICRiLT4kYSgpOwogICAgfQp9CmNsYXNzIExvdmUgewogICAgcHVibGljICR2YXI7CiAgICBmdW5jdGlvbiBfX2NhbGwoJGEsJGIpCiAgICB7CiAgICAgICAgJHJvc2UgPSAkdGhpcy0+dmFyOwogICAgICAgIGNhbGxfdXNlcl9mdW5jKCRyb3NlKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gYWN0aW9uKCl7CiAgICAgICAgZWNobyAiamFjayBsb3ZlIHJvc2UiOwogICAgfQp9CmNsYXNzIFRpdGFuaWN7CiAgICBwdWJsaWMgJHBlb3BsZTsKICAgIHB1YmxpYyAkc2hpcDsKICAgIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKXsKICAgICAgICAkdGhpcy0+cGVvcGxlLT5hY3Rpb249JHRoaXMtPnNoaXA7CiAgICB9Cn0KY2xhc3MgUm9zZXsKICAgIHB1YmxpYyAkdmFyMTsKICAgIHB1YmxpYyAkdmFyMjsKICAgIGZ1bmN0aW9uIF9faW52b2tlKCl7CiAgICAgICAgdmFyX2R1bXAoc2hhMSgkdGhpcy0+dmFyMSkpOwogICAgICAgIHZhcl9kdW1wKHNoYTEoJHRoaXMtPnZhcjIpKTsKICAgICAgICBpZiggKCR0aGlzLT52YXIxICE9ICR0aGlzLT52YXIyKSAmJiAobWQ1KCR0aGlzLT52YXIxKSA9PT0gbWQ1KCR0aGlzLT52YXIyKSkgJiYgKHNoYTEoJHRoaXMtPnZhcjEpPT09IHNoYTEoJHRoaXMtPnZhcjIpKSApewogICAgICAgICAgICBldmFsKCR0aGlzLT52YXIxKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgZWNobyAnbm9ub25vJzsKICAgICAgICB9CiAgICB9Cn0KJHBvYyA9IG5ldyBUaXRhbmljKCk7CiRwb2MgLT4gcGVvcGxlID0gbmV3IEphY2soKTsKJHBvYyAtPiBzaGlwID0gbmV3IExvdmUoKTsKCiRwYXlsb2FkID0gIj8+PD89c3lzdGVtKCdjYXQgZmxhZy5waHAnKT8+IjsKJGE9bmV3IEVycm9yKCRwYXlsb2FkLDEpOyRiPW5ldyBFcnJvcigkcGF5bG9hZCwyKTsKJGV2YWwgPSBuZXcgUm9zZSgpOwokZXZhbCAtPiB2YXIxID0gJGE7CiRldmFsIC0+IHZhcjIgPSAkYjsKCiRwb2MgLT4gc2hpcCAtPiB2YXIgPSAkZXZhbDsKZWNobyB1cmxlbmNvZGUoc2VyaWFsaXplKCRwb2MpKS4iXG4iOwoKLy8g6L6T5Ye6OiBPJTNBNyUzQSUyMlRpdGFuaWMlMjIlM0EyJTNBJTdCcyUzQTYlM0ElMjJwZW9wbGUlMjIlM0JPJTNBNCUzQSUyMkphY2slMjIlM0ExJTNBJTdCcyUzQTEyJTNBJTIyJTAwSmFjayUwMGFjdGlvbiUyMiUzQk4lM0IlN0RzJTNBNCUzQSUyMnNoaXAlMjIlM0JPJTNBNCUzQSUyMkxvdmUlMjIlM0ExJTNBJTdCcyUzQTMlM0ElMjJ2YXIlMjIlM0JPJTNBNCUzQSUyMlJvc2UlMjIlM0EyJTNBJTdCcyUzQTQlM0ElMjJ2YXIxJTIyJTNCTyUzQTUlM0ElMjJFcnJvciUyMiUzQTclM0ElN0JzJTNBMTAlM0ElMjIlMDAlMkElMDBtZXNzYWdlJTIyJTNCcyUzQTI5JTNBJTIyJTNGJTNFJTNDJTNGJTNEc3lzdGVtJTI4JTI3Y2F0K2ZsYWcucGhwJTI3JTI5JTNGJTNFJTIyJTNCcyUzQTEzJTNBJTIyJTAwRXJyb3IlMDBzdHJpbmclMjIlM0JzJTNBMCUzQSUyMiUyMiUzQnMlM0E3JTNBJTIyJTAwJTJBJTAwY29kZSUyMiUzQmklM0ExJTNCcyUzQTclM0ElMjIlMDAlMkElMDBmaWxlJTIyJTNCcyUzQTI5JTNBJTIyQyUzQSU1Q3BocFN0dWR5JTVDV1dXJTVDd3d3JTVDaW5kZXgucGhwJTIyJTNCcyUzQTclM0ElMjIlMDAlMkElMDBsaW5lJTIyJTNCaSUzQTUzJTNCcyUzQTEyJTNBJTIyJTAwRXJyb3IlMDB0cmFjZSUyMiUzQmElM0EwJTNBJTdCJTdEcyUzQTE1JTNBJTIyJTAwRXJyb3IlMDBwcmV2aW91cyUyMiUzQk4lM0IlN0RzJTNBNCUzQSUyMnZhcjIlMjIlM0JPJTNBNSUzQSUyMkVycm9yJTIyJTNBNyUzQSU3QnMlM0ExMCUzQSUyMiUwMCUyQSUwMG1lc3NhZ2UlMjIlM0JzJTNBMjklM0ElMjIlM0YlM0UlM0MlM0YlM0RzeXN0ZW0lMjglMjdjYXQrZmxhZy5waHAlMjclMjklM0YlM0UlMjIlM0JzJTNBMTMlM0ElMjIlMDBFcnJvciUwMHN0cmluZyUyMiUzQnMlM0EwJTNBJTIyJTIyJTNCcyUzQTclM0ElMjIlMDAlMkElMDBjb2RlJTIyJTNCaSUzQTIlM0JzJTNBNyUzQSUyMiUwMCUyQSUwMGZpbGUlMjIlM0JzJTNBMjklM0ElMjJDJTNBJTVDcGhwU3R1ZHklNUNXV1clNUN3d3clNUNpbmRleC5waHAlMjIlM0JzJTNBNyUzQSUyMiUwMCUyQSUwMGxpbmUlMjIlM0JpJTNBNTMlM0JzJTNBMTIlM0ElMjIlMDBFcnJvciUwMHRyYWNlJTIyJTNCYSUzQTAlM0ElN0IlN0RzJTNBMTUlM0ElMjIlMDBFcnJvciUwMHByZXZpb3VzJTIyJTNCTiUzQiU3RCU3RCU3RCU3RApgYGAKIyMjIHBheWxvYWQ6CmBgYAo/bG92ZT1PJTNBNyUzQSUyMlRpdGFuaWMlMjIlM0EyJTNBJTdCcyUzQTYlM0ElMjJwZW9wbGUlMjIlM0JPJTNBNCUzQSUyMkphY2slMjIlM0ExJTNBJTdCcyUzQTEyJTNBJTIyJTAwSmFjayUwMGFjdGlvbiUyMiUzQk4lM0IlN0RzJTNBNCUzQSUyMnNoaXAlMjIlM0JPJTNBNCUzQSUyMkxvdmUlMjIlM0ExJTNBJTdCcyUzQTMlM0ElMjJ2YXIlMjIlM0JPJTNBNCUzQSUyMlJvc2UlMjIlM0EyJTNBJTdCcyUzQTQlM0ElMjJ2YXIxJTIyJTNCTyUzQTUlM0ElMjJFcnJvciUyMiUzQTclM0ElN0JzJTNBMTAlM0ElMjIlMDAlMkElMDBtZXNzYWdlJTIyJTNCcyUzQTI5JTNBJTIyJTNGJTNFJTNDJTNGJTNEc3lzdGVtJTI4JTI3Y2F0K2ZsYWcucGhwJTI3JTI5JTNGJTNFJTIyJTNCcyUzQTEzJTNBJTIyJTAwRXJyb3IlMDBzdHJpbmclMjIlM0JzJTNBMCUzQSUyMiUyMiUzQnMlM0E3JTNBJTIyJTAwJTJBJTAwY29kZSUyMiUzQmklM0ExJTNCcyUzQTclM0ElMjIlMDAlMkElMDBmaWxlJTIyJTNCcyUzQTI5JTNBJTIyQyUzQSU1Q3BocFN0dWR5JTVDV1dXJTVDd3d3JTVDaW5kZXgucGhwJTIyJTNCcyUzQTclM0ElMjIlMDAlMkElMDBsaW5lJTIyJTNCaSUzQTUzJTNCcyUzQTEyJTNBJTIyJTAwRXJyb3IlMDB0cmFjZSUyMiUzQmElM0EwJTNBJTdCJTdEcyUzQTE1JTNBJTIyJTAwRXJyb3IlMDBwcmV2aW91cyUyMiUzQk4lM0IlN0RzJTNBNCUzQSUyMnZhcjIlMjIlM0JPJTNBNSUzQSUyMkVycm9yJTIyJTNBNyUzQSU3QnMlM0ExMCUzQSUyMiUwMCUyQSUwMG1lc3NhZ2UlMjIlM0JzJTNBMjklM0ElMjIlM0YlM0UlM0MlM0YlM0RzeXN0ZW0lMjglMjdjYXQrZmxhZy5waHAlMjclMjklM0YlM0UlMjIlM0JzJTNBMTMlM0ElMjIlMDBFcnJvciUwMHN0cmluZyUyMiUzQnMlM0EwJTNBJTIyJTIyJTNCcyUzQTclM0ElMjIlMDAlMkElMDBjb2RlJTIyJTNCaSUzQTIlM0JzJTNBNyUzQSUyMiUwMCUyQSUwMGZpbGUlMjIlM0JzJTNBMjklM0ElMjJDJTNBJTVDcGhwU3R1ZHklNUNXV1clNUN3d3clNUNpbmRleC5waHAlMjIlM0JzJTNBNyUzQSUyMiUwMCUyQSUwMGxpbmUlMjIlM0JpJTNBNTMlM0JzJTNBMTIlM0ElMjIlMDBFcnJvciUwMHRyYWNlJTIyJTNCYSUzQTAlM0ElN0IlN0RzJTNBMTUlM0ElMjIlMDBFcnJvciUwMHByZXZpb3VzJTIyJTNCTiUzQiU3RCU3RCU3RCU3RApgYGAKWyFbaW1hZ2UtMjAyMTA2MDQxODQ1NDQzODddKGh0dHBzOi8vd2hvYW1pYW5vbnkub3NzLWNuLWJlaWppbmcuYWxpeXVuY3MuY29tL2ltZy8yMDIxMDYwNDE5MjM0OC5wbmcpXShodHRwczovL3dob2FtaWFub255Lm9zcy1jbi1iZWlqaW5nLmFsaXl1bmNzLmNvbS9pbWcvMjAyMTA2MDQxOTIzNDgucG5nKQojIyBDVEYtMTEwCiMjIyDmupDnoIEKCmBgYGh0bWwKPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CjxoMj7mi7zmiYvpgJ/nmoTml7blgJnliLDkuobvvIzlhrLpuK3vvIHvvIHvvIE8aDIvPgo8c2NyaXB0PmFsZXJ0KCfngrnlh7vmu6ExMDAwd+S4i+WwseWPr+S7peiOt+W+l2ZsYWcnKTwvc2NyaXB0Pgo8aHRtbD4KPHRpdGxlPuaJi+mAn+Wwj+a4uOaIjzwvdGl0bGU+CjxoZWFkPgo8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vbG9jYWxob3N0L2l1dWlpdXFpd2V1aXF3dWVpcWl1d2V1cXdpZXV1bml1cXdlaGl1cXdoaWV1Ij48L1NDUklQVD4KPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgbWF4dGltZSA9IDMwICogNjA7IC8v5LiA5Liq5bCP5pe277yM5oyJ56eS6K6h566X77yM6Ieq5bex6LCD5pW0ISAgIApmdW5jdGlvbiBDb3VudERvd24oKSB7CglpZiAobWF4dGltZSA+PSAwKSB7CgkJbWludXRlcyA9IE1hdGguZmxvb3IobWF4dGltZSAvIDYwKTsKCQlzZWNvbmRzID0gTWF0aC5mbG9vcihtYXh0aW1lICUgNjApOwoJCW1zZyA9ICLot53nprvpobXpnaLliLfmlrDov5jmnIkiICsgbWludXRlcyArICLliIYiICsgc2Vjb25kcyArICLnp5IiOwoJCWRvY3VtZW50LmFsbFsidGltZXIiXS5pbm5lckhUTUwgPSBtc2c7CgkJaWYgKG1heHRpbWUgPT0gNSAqIDYwKWFsZXJ0KCLov5jliak15YiG6ZKfIik7CgkJIC0tbWF4dGltZTsKCX0gZWxzZXsKCQljbGVhckludGVydmFsKHRpbWVyKTsKCQlsb2NhdGlvbi5yZWxvYWQoKTsKCX0KfQp0aW1lciA9IHNldEludGVydmFsKCJDb3VudERvd24oKSIsIDEwMDApOyAgCgp2YXIgeD0wOwpmdW5jdGlvbiBDUygpCnsKCXgrPTE7CgoJZGl2LmlubmVyVGV4dD14OwoJaWYoeCA+PSAxMDAwMDAwMCkKCXsKCQlhbGVydChmbGFnKTsKCX0KfSAgICAgICAgICAKPC9TQ1JJUFQ+CjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InRpbWVyIiBzdHlsZT0iY29sb3I6cmVkIj48L2Rpdj4KPGRpdiBpZD0id2FycmluZyIgc3R5bGU9ImNvbG9yOnJlZCI+PC9kaXY+Cgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i6LW25b+r54K55oiR5ZCn77yBIiBvbmNsaWNrPSJDUygpIi8+CjxkaXYgaWQ9ZGl2PjwvZGl2Pgo8L2JvZHk+CjxzY3JpcHQ+PC9zY3JpcHQ+CjwvaHRtbD4KYGBgCioq6L+Z6YGT6aKY55u45a+5566A5Y2V77yM5Y+q6ZyA6KaB5p+l55yL5rqQ56CBKioKCioq5Y+v5Lul5ZyoKioKYGBgCjxzY3JpcHQ+PC9zY3JpcHQ+CmBgYAoqKuS4remXtOWKoOS4imBhbGVydChmbGFnKTtgCuWwseWPr+S7peW8ueWHumZsYWcqKgoKKirkuZ/lj6/ku6Xnm7TmjqXorr/pl65pdXVpaXVxaXdldWlxd3VlaXFpdXdldXF3aWV1dW5pdXF3ZWhpdXF3aGlldeWNs+WPr+iOt+W+l2ZsYWcqKgpgYGAKL2l1dWlpdXFpd2V1aXF3dWVpcWl1d2V1cXdpZXV1bml1cXdlaGl1cXdoaWV1CmBgYAojIyBDVEYtMTExCioqZmxhZ+WBmuS6huWPjOmHjeWKoOWvhioqCgoqKumfs+espuWKoOWvhi0+55uy5paH5Yqg5a+GKioKKirmjInpobrluo/op6Plr4bljbPlj68qKgpg6Z+z56ym6Kej5a+G77yaaHR0cHM6Ly93d3cucXF4aXV6aS5jbi9iaWFubWEvd2VuYmVuamlhbWkucGhwP3M9eWlueXVlYApg55uy5paH6Kej5a+G77yaaHR0cHM6Ly93d3cucXF4aXV6aS5jbi9iaWFubWEvd2VuYmVuamlhbWkucGhwP3M9bWFuZ3dlbmA=
用户名金币积分时间理由
牛宝宝 4.00 0 2022-04-02 15:03:04 一个受益终生的帖子~~

打赏我,让我更有动力~

附件列表

audacity_3.1.2_64bit.rar   文件大小:32.584M (下载次数:6)

0 条回复   |  直到 2021-12-29 | 7026 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2026 掌控者 All Rights Reserved.