PD9waHAKLy8gVEVNUE9SQVJZIG9wY2FjaGUgcmVzZXQgKGRpYWdub3N0aWMpLiBSZW1vdmUgYWZ0ZXIgdmVyaWZpY2F0aW9uLgppZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ29wY2FjaGVfcmVzZXQnICkgKSB7CiAgICBvcGNhY2hlX3Jlc2V0KCk7Cn0KJHRhcmdldHMgPSBhcnJheSgKICAgICcvd3d3L3d3d3Jvb3QvemFpc2hhbmd5YW5mYS5jb20vd3AtY29udGVudC9wbHVnaW5zL3phaXNoYW5nLWZlYXR1cmVzL2luY2x1ZGVzL3Nlby1nZW8tc2NoZW1hLnBocCcsCiAgICAnL3d3dy93d3dyb290L3phaXNoYW5neWFuZmEuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy96YWlzaGFuZy1mZWF0dXJlcy96YWlzaGFuZy1mZWF0dXJlcy5waHAnLAopOwppZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ29wY2FjaGVfaW52YWxpZGF0ZScgKSApIHsKICAgIGZvcmVhY2ggKCAkdGFyZ2V0cyBhcyAkZiApIHsKICAgICAgICBpZiAoIGZpbGVfZXhpc3RzKCAkZiApICkgewogICAgICAgICAgICBvcGNhY2hlX2ludmFsaWRhdGUoICRmLCB0cnVlICk7CiAgICAgICAgfQogICAgfQp9CmVjaG8gIlxuPCEtLSBPUENBQ0hFX1JFU0VUX09LICIgLiBkYXRlKCAnYycgKSAuICIgLS0+XG4iOwo=PD9waHAKLy8gVEVNUCB0ZXN0OiBkb2VzIG11LXBsdWdpbnMgbG9hZCBhdCBhbGw/CmVjaG8gIlxuPCEtLSBNVV9PS18iLmRhdGUoJ2MnKS4iIC0tPlxuIjsKPD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiDlnKjllYboqIDms5Ugwrcg5Yqf6IO95aKe5by6ICh6YWlzaGFuZy1mZWF0dXJlcykKICogRGVzY3JpcHRpb246IOW+i+W4iOWFpempuyArIOeUqOaIt+WSqOivoiArIOW4ruWKqeW3peWFt+W5s+WPsOOAguS/neeVmSBXQi1VbmlmeSDmoYbmnrbkuI3lj5jvvIzmqKHlnZfljJbmianlsZXjgIIKICogVmVyc2lvbjogMS40Ni4wCiAqIEF1dGhvcjog5bCP6b6ZCiAqLwoKaWYgKCAhIGRlZmluZWQoICdBQlNQQVRIJyApICkgewogICAgZXhpdDsgLy8g56aB5q2i55u05o6l6K6/6ZeuCn0KaWYgKCAhIGRlZmluZWQoICdaU0ZfTUFJTl9NQVJLRVInICkgKSB7IGRlZmluZSggJ1pTRl9NQUlOX01BUktFUicsICdWMTQ3XycgLiB0aW1lKCkgKTsgZWNobyAiXG48IS0tIE1BSU5fQUNUSVZFX1YxNDcgLS0+XG4iOyB9CgpkZWZpbmUoICdaU0ZfUEFUSCcsIHBsdWdpbl9kaXJfcGF0aCggX19GSUxFX18gKSApOwpkZWZpbmUoICdaU0ZfVVJMJywgcGx1Z2luX2Rpcl91cmwoIF9fRklMRV9fICkgKTsKLy8g5Y2V5LiA54mI5pys5Y+35p2l5rqQ77ya6LWE5Lqn54mI5pys44CB6YeN5YaZ6KeE5YiZ5Yi35paw44CB5ZCO5Y+w6aG16ISa57uf5LiA5byV55So77yM6YG/5YWN5aSa5aSE56Gs57yW56CB5LiN5ZCM5q2l44CCCmRlZmluZSggJ1pTRl9WRVJTSU9OJywgJzEuNDYuMCcgKTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICog5qih5Z2X5Yqg6L2977yI44q0IG1vZHVsZS1ndWFyZCDmsrvnkIYgKyDms6jlhozooajpqbHliqjvvIkKICoKICogbW9kdWxlLWd1YXJkLnBocCDlv4XpobvmnIDlhYjliqDovb3vvJrlroPlrprkuYkgenNmX2xvYWRfbW9kdWxlcygpIC8genNmX21vZHVsZV9yZWdpc3RyeSgpCiAqIOetieayu+eQhuWHveaVsOOAguWFtuS9mSA1MCsg5Liq5Lia5Yqh5qih5Z2X77yI5ZCrIOOKtSBlcnJvci1wYWdlc++8ieaUueeUseazqOWGjOihqOmhuuW6jyArCiAqIOWQjuWPsOW8gOWFs+eKtuaAgeWGs+WumuWKoOi9veS4juWQpu+8jOS4jeWGjeehrOe8lueggSByZXF1aXJl44CC6L+Z5qC35Y+v5a6e546w5YiG5om554Gw5bqm6YOo572yCiAqIOS4juWNleaooeWdl+enkue6p+WFs+WBnO+8iOivpuingeWQjuWPsOOAjOaooeWdl+W8gOWFs+OAjemhte+8ie+8jOmBv+WFjeS4gOasoeaAp+mDqOe9siAzMCDkuKrmqKHlnZcKICog5Lu75LiA5byC5bi45Y2z5YWo56uZ55m95bGP44CC6aG65bqP5pWP5oSf6YC76L6R5bey5pS25pWb6L+bIHpzZl9tb2R1bGVfcmVnaXN0cnkoKeOAggogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCnJlcXVpcmVfb25jZSBaU0ZfUEFUSCAuICdpbmNsdWRlcy9tb2R1bGUtZ3VhcmQucGhwJzsgIC8vIOOKtCDmqKHlnZfngbDluqblvIDlhbPkuI7lronlhajmqKHlvI/vvIjmsrvnkIblsYLvvIzmnIDlhYjliqDovb3vvIzkuI3kvp3otZblhbbku5bmqKHlnZfvvIkKenNmX2xvYWRfbW9kdWxlcygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmjInms6jlhozooaggKyDmsrvnkIbnirbmgIHliqDovb3lhajpg6jkuJrliqHmqKHlnZfvvIhjcHTihpLigKbihpJzaGVsbC1maWxs77yJ4oaSIOWQqyDjirUgZXJyb3ItcGFnZXMKcmVxdWlyZV9vbmNlIFpTRl9QQVRIIC4gJ2luY2x1ZGVzL3NlcnZpY2UtbmF2LXNob3J0Y29kZS5waHAnOyAgLy8g5pyN5Yqh5a+86Iiq5Lit5b+D55+t5Luj56CBIFt6c19zZXJ2aWNlX25hdl3vvIhSNDIg5pa55byPMiDpg6jnvbLvvIkKcmVxdWlyZV9vbmNlIFpTRl9QQVRIIC4gJ2luY2x1ZGVzL3Nlby1nZW8tc2NoZW1hLnBocCc7ICAgLy8gR0VPL1NFTyBTY2hlbWEub3JnIEpTT04tTEQg5rOo5YWl77yId3BfZm9vdGVyICsgd3BzZW8gYXJ0aWNsZSBmaWx0ZXLvvIkKcmVxdWlyZV9vbmNlIFpTRl9QQVRIIC4gJ2luY2x1ZGVzL3Nlby1tZXRhLWV4dHJhcy5waHAnOyAgLy8gU0VPK0dFTyBtZXRhIOihpeWFqO+8iGF1dGhvciAvIGFydGljbGU6KiAvIGdlby4qIC8gaHJlZmxhbmfvvIkKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICog6LWE5Lqn5Yqg6L2977yIQ1NTL0pT77yJCiAqCiAqIOmHjeimge+8muacrOermeS4u+mimCAvIOahhuaetihXQi1VbmlmeSnkuI3otbDmoIflh4Ygd3BfZW5xdWV1ZSDovpPlh7rnrqHpgZPvvIwKICog5o+S5Lu2IGVucXVldWUg55qEIHpzLWZlYXR1cmVzIC8genMtdG9vbHMg6LWE5rqQ5LiN5Lya6KKr5omT5Y2w5Yiw5YmN56uvCiAqIO+8iHdwX2hlYWQvd3BfZm9vdGVyIOS4jeS8mui+k+WHuuaPkuS7tiA8bGluaz4vPHNjcmlwdD7vvIxqUXVlcnkg5Lmf5pyq5Yqg6L2977yJ44CCCiAqIOWboOatpOS/neeVmeagh+WHhiBlbnF1ZXVl77yI5L6b5q2j5bi4IFdQIOS4u+mimOWFvOWuue+8ieeahOWQjOaXtu+8jAogKiDpop3lpJbnlKjjgIx0aGVfY29udGVudCDlhoXogZTmoLflvI8gKyDlrqLmiLfnq6/mjInpnIDliqDovb3ohJrmnKzjgI3lhZzlupXvvIwKICog56Gu5L+d5bel5YW35Zyo5Lu75oSP5Li76aKYL+ahhuaetuS4i+mDveiDveato+ehruagt+W8j+WMluW5tuWFt+Wkh+S6pOS6kuiDveWKm+OAggogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmFkZF9hY3Rpb24oICd3cF9lbnF1ZXVlX3NjcmlwdHMnLCBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIGlzX2FkbWluKCkgKSByZXR1cm47CiAgICB3cF9lbnF1ZXVlX3N0eWxlKCAnenMtZmVhdHVyZXMnLCBaU0ZfVVJMIC4gJ2Fzc2V0cy9jc3MvenMtZmVhdHVyZXMuY3NzJywgYXJyYXkoKSwgWlNGX1ZFUlNJT04sICdhbGwnICk7CiAgICB3cF9lbnF1ZXVlX3NjcmlwdCggJ3pzLWZlYXR1cmVzJywgWlNGX1VSTCAuICdhc3NldHMvanMvenMtZmVhdHVyZXMuanMnLCBhcnJheSggJ2pxdWVyeScgKSwgWlNGX1ZFUlNJT04sIHRydWUgKTsKICAgIHdwX2xvY2FsaXplX3NjcmlwdCggJ3pzLWZlYXR1cmVzJywgJ1pTX0FKQVgnLCBhcnJheSgKICAgICAgICAnYWpheHVybCcgPT4gYWRtaW5fdXJsKCAnYWRtaW4tYWpheC5waHAnICksCiAgICAgICAgJ25vbmNlJyAgID0+IHdwX2NyZWF0ZV9ub25jZSggJ3pzX2ZlYXR1cmVzX25vbmNlJyApLAogICAgKSApOwoKICAgIC8qIOKRqyDliJHovqnlt6Xlhbfnu4TotYTkuqfvvJrku4XlnKjlrp7pmYXkvb/nlKjliLDlt6Xlhbfnn63ku6PnoIHnmoTpobXpnaLliqDovb3vvIzpgb/lhY3lhajnq5nlpJrkvZnor7fmsYIgKi8KICAgIGlmICggZnVuY3Rpb25fZXhpc3RzKCAnenNfcGFnZV9uZWVkc190b29sc19hc3NldHMnICkgJiYgenNfcGFnZV9uZWVkc190b29sc19hc3NldHMoKSApIHsKICAgICAgICB3cF9lbnF1ZXVlX3N0eWxlKCAnenMtdG9vbHMnLCBaU0ZfVVJMIC4gJ2Fzc2V0cy9jc3MvenMtdG9vbHMuY3NzJywgYXJyYXkoICd6cy1mZWF0dXJlcycgKSwgWlNGX1ZFUlNJT04sICdhbGwnICk7CiAgICAgICAgd3BfZW5xdWV1ZV9zY3JpcHQoICd6cy10b29scycsIFpTRl9VUkwgLiAnYXNzZXRzL2pzL3pzLXRvb2xzLmpzJywgYXJyYXkoICdqcXVlcnknLCAnenMtZmVhdHVyZXMnICksIFpTRl9WRVJTSU9OLCB0cnVlICk7CiAgICB9Cn0sIDIwICk7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEYtUjMyLTAx77yIUDDvvInlhoXogZQgQ1NTIOmihOWkhOeQhu+8mndwYXV0b3Ag5YWN55arICsg5L2T56ev5Y6L57ypCiAqCiAqIOmXrumimO+8mnpzX3Rvb2xzX2lubGluZV9hc3NldHMg6L+Q6KGM5LqOIHRoZV9jb250ZW50IOS8mOWFiOe6pyA177yM5oqK5Y6f5aeLIENTUwogKiAgIO+8iOWQq+epuuihjOS4jiAvKiDms6jph4ogKlwv77yJ5ou86L+b5q2j5paH77ybd3BhdXRvcCDlnKjkvJjlhYjnuqcgMTAg5LmL5ZCO5aSE55CG5ZCM5LiA5q61CiAqICAg5q2j5paH77yM5oqKIENTUyDkuK3nmoQqKuepuuihjCoq6L2s5oiQIGA8L3A+PHA+YO+8jOazqOWFpeWIsCA8c3R5bGU+IOWGhemDqOOAggogKiAgIOe6v+S4iuWunua1iyAvYXBwZWFsLyDljZXkuKogPHN0eWxlIGlkPSJ6cy10b29scy1pbmxpbmUiPiDlhoXlkKsgNDY4IOWkhCA8cD4vPC9wPu+8jAogKiAgIOa1j+iniOWZqOaMiSBDU1Mg6K+t5rOV6Kej5p6Q5pe2IGA8L3A+YCDooqvlvZPkvZzpnZ7ms5XpgInmi6nlmagg4oaSCiAqICAgKirntKfpmo/lhbblkI7nmoTmlbTmnaHop4TliJnooqvkuKLlvIMqKu+8jOWunua1i+WPl+W9seWTjeinhOWImee6piAxOTkg5p2h77yMCiAqICAg5YW25Lit5YyF5ZCrIC56cy1jYXJkIC8gLnpzLWJ0biAvIC56cy1mb3JtIC8gLnpzLWFsZXJ0IC8gLnpzLWdyaWQg562J5qC45b+D57uE5Lu244CCCiAqCiAqIOS/ruWkje+8muWGheiBlOWJjeWFiOWBmuOAjOS/neWuiOWOi+e8qeOAjeKAlOKAlAogKiAgIDEuIOWJpeemuyAvKiAqXC8g5rOo6YeK77yI6aG65bim5raI6ZmkIEhUTUwg5rqQ56CB5Lit5b2i5aaCIFt6c194eHhdIOeahOazqOmHiuaWh+acrOWZquWjsO+8ie+8mwogKiAgIDIuIOaKiuaJgOaciei/nue7reepuueZve+8iOWQq+aNouihjO+8ieaKmOWPoOS4uuWNleS4quepuuagvCDihpIg5LiN5YaN5a2Y5Zyo56m66KGMIOKGkiB3cGF1dG9wIOaXoOS7juS4i+aJi++8mwogKiAgIDMuIOS7heWcqOWIhumalOespiB7IH0gOyA6ICwg6YK75Z+f5pS257Sn56m65qC877yI5LiN5YqoID4gKyB+ICggKSDkuI7lkI7pmo/lhpLlj7fvvIwKICogICAgICDpgb/lhY0gY2FsYygpL+WQjuS7o+mAieaLqeWZqC/kvKrnsbvor63kuYnooqvmlLnlhpnvvInjgIIKICogICDlrZfnrKbkuLLlrZfpnaLph4/vvIhjb250ZW50OiLigKYi77yJ5YWo56iL5Y6f5qC35L+d55WZ44CCCiAqCiAqIOe7k+aenOWvueWQjOS4gOS7vSBDU1Mg6K+t5LmJ562J5Lu377yM5L2T56ev57qm5YePIDI1Je+8jOS4lOW9u+W6leWFjeeWqyB3cGF1dG9wIOegtOWdj+OAggogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c19jc3NfaW5saW5lX3ByZXBhcmUnICkgKSB7CiAgICBmdW5jdGlvbiB6c19jc3NfaW5saW5lX3ByZXBhcmUoICRjc3MgKSB7CiAgICAgICAgaWYgKCAhIGlzX3N0cmluZyggJGNzcyApIHx8ICcnID09PSAkY3NzICkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkbGVuICA9IHN0cmxlbiggJGNzcyApOwogICAgICAgICRvdXQgID0gJyc7CiAgICAgICAgJGkgICAgPSAwOwogICAgICAgICRxICAgID0gJyc7ICAgLy8g5b2T5YmN5a2X56ym5Liy5a6a55WM56ym77yIJycg6KGo56S65LiN5Zyo5a2X56ym5Liy5YaF77yJCiAgICAgICAgJHRpZ2h0X3ByZXYgPSBhcnJheSggJ3snID0+IDEsICd9JyA9PiAxLCAnOycgPT4gMSwgJzonID0+IDEsICcsJyA9PiAxICk7CiAgICAgICAgJHRpZ2h0X25leHQgPSBhcnJheSggJ3snID0+IDEsICd9JyA9PiAxLCAnOycgPT4gMSwgJywnID0+IDEgKTsKCiAgICAgICAgd2hpbGUgKCAkaSA8ICRsZW4gKSB7CiAgICAgICAgICAgICRjaCA9ICRjc3NbICRpIF07CgogICAgICAgICAgICAvKiDlrZfnrKbkuLLlhoXpg6jvvJrljp/moLfpgI/kvKDvvIzlkKvovazkuYnluo/liJcgKi8KICAgICAgICAgICAgaWYgKCAnJyAhPT0gJHEgKSB7CiAgICAgICAgICAgICAgICBpZiAoICdcXCcgPT09ICRjaCAmJiAkaSArIDEgPCAkbGVuICkgewogICAgICAgICAgICAgICAgICAgICRvdXQgLj0gJGNoIC4gJGNzc1sgJGkgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgJGkgICArPSAyOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG91dCAuPSAkY2g7CiAgICAgICAgICAgICAgICBpZiAoICRjaCA9PT0gJHEgKSB7CiAgICAgICAgICAgICAgICAgICAgJHEgPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAnIicgPT09ICRjaCB8fCAiJyIgPT09ICRjaCApIHsKICAgICAgICAgICAgICAgICRxICAgID0gJGNoOwogICAgICAgICAgICAgICAgJG91dCAuPSAkY2g7CiAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIOazqOmHiu+8muaVtOauteS4ouW8gyAqLwogICAgICAgICAgICBpZiAoICcvJyA9PT0gJGNoICYmICRpICsgMSA8ICRsZW4gJiYgJyonID09PSAkY3NzWyAkaSArIDEgXSApIHsKICAgICAgICAgICAgICAgICRlbmQgPSBzdHJwb3MoICRjc3MsICcqLycsICRpICsgMiApOwogICAgICAgICAgICAgICAgJGkgICA9ICggZmFsc2UgPT09ICRlbmQgKSA/ICRsZW4gOiAkZW5kICsgMjsKICAgICAgICAgICAgICAgIC8qIOeUqOS4gOS4quepuuagvOWNoOS9je+8jOmBv+WFjeazqOmHiuS4pOS+p+eahOiusOWPt+aEj+WklueymOi/niAqLwogICAgICAgICAgICAgICAgaWYgKCAnJyAhPT0gJG91dCAmJiAnICcgIT09IHN1YnN0ciggJG91dCwgLTEgKSApIHsKICAgICAgICAgICAgICAgICAgICAkb3V0IC49ICcgJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiDnqbrnmb3mipjlj6AgKi8KICAgICAgICAgICAgaWYgKCAnICcgPT09ICRjaCB8fCAiXHQiID09PSAkY2ggfHwgIlxuIiA9PT0gJGNoIHx8ICJcciIgPT09ICRjaCB8fCAiXGYiID09PSAkY2ggKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoICRpIDwgJGxlbiApIHsKICAgICAgICAgICAgICAgICAgICAkdyA9ICRjc3NbICRpIF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCAnICcgIT09ICR3ICYmICJcdCIgIT09ICR3ICYmICJcbiIgIT09ICR3ICYmICJcciIgIT09ICR3ICYmICJcZiIgIT09ICR3ICkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRwcmV2ID0gKCAnJyA9PT0gJG91dCApID8gJycgOiBzdWJzdHIoICRvdXQsIC0xICk7CiAgICAgICAgICAgICAgICAkbmV4dCA9ICggJGkgPCAkbGVuICkgPyAkY3NzWyAkaSBdIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoICcnID09PSAkcHJldiB8fCAnJyA9PT0gJG5leHQgKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIOmmluWwvuepuueZveebtOaOpeS4ouW8gwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBpc3NldCggJHRpZ2h0X3ByZXZbICRwcmV2IF0gKSB8fCBpc3NldCggJHRpZ2h0X25leHRbICRuZXh0IF0gKSApIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8g5YiG6ZqU56ym6YK75Z+f77ya56m65qC85peg6K+t5LmJ77yM5pS257SnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0IC49ICcgJzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkb3V0IC49ICRjaDsKICAgICAgICAgICAgJGkrKzsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cmltKCAkb3V0ICk7CiAgICB9Cn0KCi8qKgogKiDor7vlj5blubbljovnvKnotYTkuqcgQ1NT77yI5bimIHRyYW5zaWVudCDnvJPlrZjvvIzplK7lkKsgbXRpbWUrc2l6Ze+8jOaWh+S7tuS4gOaUueWNs+WkseaViO+8ieOAggogKgogKiBAcGFyYW0gc3RyaW5nICRyZWwg55u45a+55o+S5Lu25qC555uu5b2V55qE6Lev5b6E44CCCiAqIEByZXR1cm4gc3RyaW5nIOWOi+e8qeWQjueahCBDU1PvvJvmlofku7bkuI3lrZjlnKjov5Tlm57nqbrkuLLjgIIKICovCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c19jc3NfaW5saW5lX2dldCcgKSApIHsKICAgIGZ1bmN0aW9uIHpzX2Nzc19pbmxpbmVfZ2V0KCAkcmVsICkgewogICAgICAgIHN0YXRpYyAkbWVtID0gYXJyYXkoKTsKICAgICAgICBpZiAoIGlzc2V0KCAkbWVtWyAkcmVsIF0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRtZW1bICRyZWwgXTsKICAgICAgICB9CgogICAgICAgICRwYXRoID0gWlNGX1BBVEggLiAkcmVsOwogICAgICAgIGlmICggISBmaWxlX2V4aXN0cyggJHBhdGggKSApIHsKICAgICAgICAgICAgJG1lbVsgJHJlbCBdID0gJyc7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICRrZXkgPSAnenNfY3NtaW5fJyAuIG1kNSggJHJlbCAuICd8JyAuIChpbnQpIGZpbGVtdGltZSggJHBhdGggKSAuICd8JyAuIChpbnQpIGZpbGVzaXplKCAkcGF0aCApIC4gJ3wnIC4gWlNGX1ZFUlNJT04gKTsKICAgICAgICAkaGl0ID0gZ2V0X3RyYW5zaWVudCggJGtleSApOwogICAgICAgIGlmICggaXNfc3RyaW5nKCAkaGl0ICkgJiYgJycgIT09ICRoaXQgKSB7CiAgICAgICAgICAgICRtZW1bICRyZWwgXSA9ICRoaXQ7CiAgICAgICAgICAgIHJldHVybiAkaGl0OwogICAgICAgIH0KCiAgICAgICAgJG1pbiA9IHpzX2Nzc19pbmxpbmVfcHJlcGFyZSggKHN0cmluZykgZmlsZV9nZXRfY29udGVudHMoICRwYXRoICkgKTsKICAgICAgICBpZiAoICcnICE9PSAkbWluICkgewogICAgICAgICAgICBzZXRfdHJhbnNpZW50KCAka2V5LCAkbWluLCBXRUVLX0lOX1NFQ09ORFMgKTsKICAgICAgICB9CiAgICAgICAgJG1lbVsgJHJlbCBdID0gJG1pbjsKICAgICAgICByZXR1cm4gJG1pbjsKICAgIH0KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiDlhZzlupXms6jlhaXvvJrlhoXogZTlt6XlhbcgQ1NTICsg5a6i5oi356uv5Yqg6L29IEpT77yIalF1ZXJ5IOe8uuWkseaXtuS7jiBDRE4g6KGl6L2977yJCiAqIOivpeaWueahiOS4jeS+nei1luS4u+mimOaYr+WQpuiwg+eUqCB3cF9oZWFkL3dwX2Zvb3Rlcu+8jOS5n+S4jeS+nei1luahhuaetuaYr+WQpuaJk+WNsCBlbnF1ZXVl77yMCiAqIOWboOatpOiDveeos+WumuS/ruWkjeOAjOW3peWFt+aXoOagt+W8jyAvIOaXoOS6pOS6kuOAjeeahOmXrumimOOAggogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmFkZF9maWx0ZXIoICd0aGVfY29udGVudCcsICd6c190b29sc19pbmxpbmVfYXNzZXRzJywgNSApOwppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnenNfdG9vbHNfaW5saW5lX2Fzc2V0cycgKSApIHsKICAgIGZ1bmN0aW9uIHpzX3Rvb2xzX2lubGluZV9hc3NldHMoICRjb250ZW50ICkgewogICAgICAgIHN0YXRpYyAkZG9uZSA9IGZhbHNlOwogICAgICAgIGlmICggJGRvbmUgfHwgaXNfYWRtaW4oKSApIHsKICAgICAgICAgICAgcmV0dXJuICRjb250ZW50OwogICAgICAgIH0KCiAgICAgICAgLyog5Lqk5LqS5Z6L5bel5YW377ya6ZyA6KaBIHpzLXRvb2xzLmNzcyArIOaPkuS7tiBKU++8iOWQqyBqUXVlcnkg5YWc5bqV6KGl6L2977yJICovCiAgICAgICAgJHRvb2xzX2NvZGVzID0gYXJyYXkoCiAgICAgICAgICAgICd6c19zZW50ZW5jZV9jYWxjJywgJ3pzX2JhaWxfYXNzZXNzJywgJ3pzX2NyaW1pbmFsX3RpbWVsaW5lJywKICAgICAgICAgICAgJ3pzX2NyaW1lX3BlbmFsdHknLCAnenNfdG9vbHNfaHViJywKICAgICAgICAgICAgJ3pzX2ZlZV9jYWxjdWxhdG9yJywgJ3pzX2xpdGlnYXRpb25fY2FsY3VsYXRvcicsICd6c19kb2NfbGliJywgJ3pzX2xhd19zZWFyY2gnLAogICAgICAgICk7CiAgICAgICAgJG5lZWRfdG9vbHMgPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICggJHRvb2xzX2NvZGVzIGFzICRjICkgewogICAgICAgICAgICBpZiAoIGhhc19zaG9ydGNvZGUoICRjb250ZW50LCAkYyApICkgewogICAgICAgICAgICAgICAgJG5lZWRfdG9vbHMgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIOWfuuehgOagt+W8j+mXqOaOp++8iOiHquWKqO+8jFIzMCDph43mnoTvvInvvJoKICAgICAgICAgICDljp/mlrnmoYjmiYvlt6Xnu7TmiqQgJGJhc2VfY29kZXMg5riF5Y2V77yM6ZqP5qih5Z2X5aKe5Yqg6ZyA5ZCM5q2l77yM5bey57Sv6K6hIDE2IOS4qiBsZWdhY3kKICAgICAgICAgICDnn63ku6PnoIHmvI/liJcg4oaSIOmVv+acn+WRiuitpuOAguaUueS4uui/kOihjOaXtuS7jiBXUCDlt7Lms6jlhoznn63ku6PnoIHmoIfnrb7kuK3or4bliKvlhajpg6ggenNfCiAgICAgICAgICAg55+t5Luj56CB77yM5a6e546w44CM5paw5aKe55+t5Luj56CB6Ieq5Yqo6I635b6X5qC35byP5YWc5bqV44CB5o6l57q/5peg6ZyA5ZCM5q2l5riF5Y2V44CN44CCCiAgICAgICAgICAg5Lqk5LqS5Z6L5bel5YW377yI6ZyAIHpzLXRvb2xzLmNzcyArIEpT77yJ5LuN55Sx5LiK5pa5ICR0b29sc19jb2RlcyDliKTlrprvvIzkv53mjIHkuI3lj5jjgIIgKi8KCiAgICAgICAgLyog44mfIOaXouaciemhteWKn+iDveWhq+WFheWxgumihOWIpO+8mgogICAgICAgICAgIOWhq+WFheWxguWcqCB0aGVfY29udGVudDoyMCDmiY3ov73liqDlip/og73ljLrvvIzmnKzlh73mlbDov5DooYzkuo7kvJjlhYjnuqcgNe+8jAogICAgICAgICAgIOatpOWIu+ato+aWh+mHjOW5tuayoeacieWug+Wwhuimgei/veWKoOeahOefreS7o+eggeOAguiLpeS4jemihOWIpO+8jAogICAgICAgICAgIOiiq+Whq+WFheeahOmhtemdouS8muWHuueOsOOAjOaciee7k+aehOOAgeaXoOagt+W8j+OAgeaXoOS6pOS6kuOAjeOAggogICAgICAgICAgIOaVheaKiuOAjOWNs+Wwhui/veWKoOeahOefreS7o+eggeS4suOAjeW5tuWFpeaOoua1i+ebruagh+S4gOi1t+WIpOaWreOAgiAqLwogICAgICAgICRwcm9iZSA9IChzdHJpbmcpICRjb250ZW50OwogICAgICAgIGlmICggZnVuY3Rpb25fZXhpc3RzKCAnenNfc2hlbGxfZmlsbF9jb2Rlc19mb3JfY3VycmVudCcgKSApIHsKICAgICAgICAgICAgJHBlbmRpbmcgPSB6c19zaGVsbF9maWxsX2NvZGVzX2Zvcl9jdXJyZW50KCk7CiAgICAgICAgICAgIGlmICggJycgIT09ICRwZW5kaW5nICkgewogICAgICAgICAgICAgICAgJHByb2JlIC49ICRwZW5kaW5nOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoICR0b29sc19jb2RlcyBhcyAkYyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGhhc19zaG9ydGNvZGUoICRwZW5kaW5nLCAkYyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmVlZF90b29scyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyog6Ieq5Yqo6K+G5Yir77ya5Lu75LiA5bey5rOo5YaMIHpzXyDnn63ku6PnoIHvvIjlkKvlj4LmlbDlnovvvInlh7rnjrDljbPms6jlhaXln7rnoYDmoLflvI/jgIIKICAgICAgICAgICAkc2hvcnRjb2RlX3RhZ3Mg5ZyoIHRoZV9jb250ZW50IOmYtuauteW3suWujOWFqOazqOWGjO+8jOWPr+WuieWFqOmBjeWOhuOAgiAqLwogICAgICAgICRuZWVkX2Jhc2UgPSAkbmVlZF90b29sczsKICAgICAgICBpZiAoICEgJG5lZWRfYmFzZSApIHsKICAgICAgICAgICAgZ2xvYmFsICRzaG9ydGNvZGVfdGFnczsKICAgICAgICAgICAgaWYgKCAhIGVtcHR5KCAkc2hvcnRjb2RlX3RhZ3MgKSAmJiBpc19hcnJheSggJHNob3J0Y29kZV90YWdzICkgKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICggYXJyYXlfa2V5cyggJHNob3J0Y29kZV90YWdzICkgYXMgJHRhZyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHN0cnBvcyggKHN0cmluZykgJHRhZywgJ3pzXycgKSA9PT0gMCAmJiBoYXNfc2hvcnRjb2RlKCAkcHJvYmUsICR0YWcgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5lZWRfYmFzZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICEgJG5lZWRfYmFzZSAmJiBwcmVnX21hdGNoKCAnL1xbenNfW2Etel9dK1xdLycsICRwcm9iZSApICkgewogICAgICAgICAgICAgICAgJG5lZWRfYmFzZSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggISAkbmVlZF9iYXNlICkgewogICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICAgICAgfQogICAgICAgICRkb25lID0gdHJ1ZTsKCiAgICAgICAgLyog5YaF6IGUIENTU++8iOimhuebluahhuaetuacqui+k+WHuuaPkuS7tuagt+W8j+eahOaDheWGte+8iSAqLwogICAgICAgICRjc3NfZmlsZXMgPSBhcnJheSggJ2Fzc2V0cy9jc3MvenMtZmVhdHVyZXMuY3NzJyApOwogICAgICAgIGlmICggJG5lZWRfdG9vbHMgKSB7CiAgICAgICAgICAgICRjc3NfZmlsZXNbXSA9ICdhc3NldHMvY3NzL3pzLXRvb2xzLmNzcyc7CiAgICAgICAgfQogICAgICAgIC8qIEYtUjMyLTAx77ya5pS555So5Y6L57yp5ZCO55qEIENTU++8iOaXoOazqOmHiuOAgeaXoOepuuihjO+8ieKGkiB3cGF1dG9wIOaXoOepuuihjOWPr+i9rO+8jAogICAgICAgICAgIOS4jeWGjeWQkSA8c3R5bGU+IOWGheazqOWFpSA8cD4vPC9wPu+8m+i1hOS6p+etvuWQjeaUueeUqOS4jeWQqyAvKiAqXC8g55qE5bGe5oCn5qCH6K6w77yMCiAgICAgICAgICAg5L6bIGFzc2V0LWZpeCDliKTph43vvIjljp/jgIwvKiB6cy1hc3NldDog5paH5Lu25ZCNICpcL+OAjeazqOmHiuW3sumaj+WOi+e8qeWJpeemu++8ieOAgiAqLwogICAgICAgICRjc3MgID0gJyc7CiAgICAgICAgJHNpZyAgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCAkY3NzX2ZpbGVzIGFzICRyZWwgKSB7CiAgICAgICAgICAgICRjID0genNfY3NzX2lubGluZV9nZXQoICRyZWwgKTsKICAgICAgICAgICAgaWYgKCAnJyAhPT0gJGMgKSB7CiAgICAgICAgICAgICAgICAkY3NzICAuPSAkYyAuICJcbiI7CiAgICAgICAgICAgICAgICAkc2lnW10gPSBiYXNlbmFtZSggJHJlbCApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRzdHlsZSA9ICRjc3MKICAgICAgICAgICAgPyAiXG48c3R5bGUgaWQ9XCJ6cy10b29scy1pbmxpbmVcIiBkYXRhLXpzLWFzc2V0cz1cIiIgLiBlc2NfYXR0ciggaW1wbG9kZSggJywnLCAkc2lnICkgKSAuICJcIj4iIC4gJGNzcyAuICI8L3N0eWxlPlxuIgogICAgICAgICAgICA6ICcnOwoKICAgICAgICAvKiDku4XkuqTkupLlnovlt6XlhbfmiY3liqDovb0gSlPvvJrnvLogalF1ZXJ5IOWImeS7jiBDRE4g6KGl6L2977yM5YaN5oyJ5bqP5Yqg6L295o+S5Lu26ISa5pys44CCCiAgICAgICAgICAg55SoIGNyZWF0ZUVsZW1lbnQg5rOo5YWl77yM6YG/5YWN6KKr5qGG5p626L6T5Ye657yT5Yay5b2T5L2c5o+S5Lu2IDxzY3JpcHQgc3JjPiDliaXnprvjgIIgKi8KICAgICAgICAkanMgPSAnJzsKICAgICAgICBpZiAoICRuZWVkX3Rvb2xzICkgewogICAgICAgICAgICAkYWpheHVybCA9IGFkbWluX3VybCggJ2FkbWluLWFqYXgucGhwJyApOwogICAgICAgICAgICAkbm9uY2UgICA9IHdwX2NyZWF0ZV9ub25jZSggJ3pzX2ZlYXR1cmVzX25vbmNlJyApOwogICAgICAgICAgICAkZl9qcyAgICA9IFpTRl9VUkwgLiAnYXNzZXRzL2pzL3pzLWZlYXR1cmVzLmpzJzsKICAgICAgICAgICAgJHRfanMgICAgPSBaU0ZfVVJMIC4gJ2Fzc2V0cy9qcy96cy10b29scy5qcyc7CiAgICAgICAgICAgICRqcSAgICAgID0gJ2h0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0zLjcuMS5taW4uanMnOwoKICAgICAgICAgICAgJGpzID0gIlxuPHNjcmlwdCBpZD1cInpzLXRvb2xzLWxvYWRlclwiPiIKICAgICAgICAgICAgICAgIC4gIndpbmRvdy5aU19BSkFYPXthamF4dXJsOiIgLiBqc29uX2VuY29kZSggJGFqYXh1cmwgKSAuICIsbm9uY2U6IiAuIGpzb25fZW5jb2RlKCAkbm9uY2UgKSAuICJ9OyIKICAgICAgICAgICAgICAgIC4gIihmdW5jdGlvbigpe2Z1bmN0aW9uIEwocyxjYil7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7ZS5zcmM9cztlLmFzeW5jPWZhbHNlO2Uub25sb2FkPWNiO2Uub25lcnJvcj1jYjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpO30iCiAgICAgICAgICAgICAgICAuICJmdW5jdGlvbiB0b29sKCl7TCgiIC4ganNvbl9lbmNvZGUoICRmX2pzICkgLiAiLGZ1bmN0aW9uKCl7TCgiIC4ganNvbl9lbmNvZGUoICR0X2pzICkgLiAiKTt9KTt9IgogICAgICAgICAgICAgICAgLiAiaWYod2luZG93LmpRdWVyeSl7dG9vbCgpO31lbHNle0woIiAuIGpzb25fZW5jb2RlKCAkanEgKSAuICIsdG9vbCk7fSIKICAgICAgICAgICAgICAgIC4gIn0pKCk7PC9zY3JpcHQ+XG4iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzdHlsZSAuICRjb250ZW50IC4gJGpzOwogICAgfQp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIOa/gOa0u+aXtuWIt+aWsOmHjeWGmeinhOWIme+8iENQVCDpnIDopoHvvIkKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpyZWdpc3Rlcl9hY3RpdmF0aW9uX2hvb2soIF9fRklMRV9fLCBmdW5jdGlvbiAoKSB7CiAgICBkb19hY3Rpb24oICd6c19yZWdpc3Rlcl9jcHRzJyApOwogICAgZmx1c2hfcmV3cml0ZV9ydWxlcygpOwp9ICk7CnJlZ2lzdGVyX2RlYWN0aXZhdGlvbl9ob29rKCBfX0ZJTEVfXywgZnVuY3Rpb24gKCkgewogICAgZmx1c2hfcmV3cml0ZV9ydWxlcygpOwp9ICk7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIOimhuebluW8j+abtOaWsOS4jeS8muinpuWPkea/gOa0u+mSqeWtkO+8jOaVheS7peeJiOacrOWPt+WBmuS4gOasoeaAp+mHjeWGmeinhOWImeWIt+aWsO+8iOS/ruWkjSBDUFQg5Y2V6aG1IDQwNO+8iQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmFkZF9hY3Rpb24oICdpbml0JywgZnVuY3Rpb24gKCkgewogICAgJHYgPSBaU0ZfVkVSU0lPTjsKICAgIGlmICggZ2V0X29wdGlvbiggJ3pzX2ZlYXR1cmVzX3Jld3JpdGVfdicgKSAhPT0gJHYgKSB7CiAgICAgICAgZmx1c2hfcmV3cml0ZV9ydWxlcygpOwogICAgICAgIHVwZGF0ZV9vcHRpb24oICd6c19mZWF0dXJlc19yZXdyaXRlX3YnLCAkdiApOwogICAgfQp9LCAyMCApOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBTRU8g5LyY5YyW77ya5LuOIG1ldGEgLyBPRyAvIFR3aXR0ZXIg5o+P6L+w5Lit5YmU6Zmk5pys5o+S5Lu255+t5Luj56CB5qCH6K6w77yI6YG/5YWN6KO45rqQ56CB5rOE5ryP77yJCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3pzX3N0cmlwX3Nob3J0Y29kZV9kZXNjJyApICkgewogICAgZnVuY3Rpb24genNfc3RyaXBfc2hvcnRjb2RlX2Rlc2MoICRkZXNjICkgewogICAgICAgICRjbGVhbiA9IHRyaW0oIHByZWdfcmVwbGFjZSggJy9cW3pzX1teXF1dKlxdPy8nLCAnJywgKHN0cmluZykgJGRlc2MgKSApOwogICAgICAgIC8vIOWJlOmZpOWQjuS4uuepuu+8iOmhtemdouato+aWh+S7heacieefreS7o+egge+8ieaXtu+8jOWbnumAgOS4uuermeeCueagh+mimO+8jOmBv+WFjSBPRy9Ud2l0dGVyIOaYvuekuuepuuaIlua6kOeggQogICAgICAgIGlmICggJycgPT09ICRjbGVhbiApIHsKICAgICAgICAgICAgJGNsZWFuID0gZ2V0X2Jsb2dpbmZvKCAnbmFtZScgKSAuICcgwrcg5YiR5LqL6L6p5oqk5LiO5rOV5b6L5ZKo6K+i5bmz5Y+wJzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjbGVhbjsKICAgIH0KfQphZGRfZmlsdGVyKCAnd3BzZW9fbWV0YWRlc2MnLCAnenNfc3RyaXBfc2hvcnRjb2RlX2Rlc2MnLCAyMCApOwphZGRfZmlsdGVyKCAnd3BzZW9fb3BlbmdyYXBoX2Rlc2MnLCAnenNfc3RyaXBfc2hvcnRjb2RlX2Rlc2MnLCAyMCApOwphZGRfZmlsdGVyKCAnd3BzZW9fdHdpdHRlcl9kZXNjcmlwdGlvbicsICd6c19zdHJpcF9zaG9ydGNvZGVfZGVzYycsIDIwICk7CmFkZF9maWx0ZXIoICd0aGVfZXhjZXJwdCcsIGZ1bmN0aW9uICggJGV4Y2VycHQgKSB7CiAgICByZXR1cm4gdHJpbSggcHJlZ19yZXBsYWNlKCAnL1xbenNfW2Etel9dK1xdLycsICcnLCAoc3RyaW5nKSAkZXhjZXJwdCApICk7Cn0sIDIwICk7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIOWFnOW6lea4heeQhu+8muS4u+mimCAvIFlvYXN0IC8g5YW25LuWIFNFTyDmj5Lku7blnYflj6/og73ovpPlh7rlkKvoo7jnn63ku6PnoIHnmoQKICogZGVzY3JpcHRpb24gLyBvZzpkZXNjcmlwdGlvbiAvIHR3aXR0ZXI6ZGVzY3JpcHRpb27jgILnlKjovpPlh7rnvJPlhrLnu5/kuIDmuIXmtJfvvIwKICog56Gu5L+d5Lu75L2V5p2l5rqQ6YO95LiN5Lya5oqKIFt6c194eHhdIOazhOa8j+WIsOWJjeerryBtZXRh44CCCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KYWRkX2FjdGlvbiggJ3RlbXBsYXRlX3JlZGlyZWN0JywgZnVuY3Rpb24gKCkgewogICAgaWYgKCBpc19hZG1pbigpICkgeyByZXR1cm47IH0KICAgIG9iX3N0YXJ0KCAnenNfY2xlYW5fbWV0YV9vYicgKTsKfSwgOTk5OSApOwoKaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3pzX2NsZWFuX21ldGFfb2InICkgKSB7CiAgICBmdW5jdGlvbiB6c19jbGVhbl9tZXRhX29iKCAkaHRtbCApIHsKICAgICAgICBpZiAoICEgaXNfc3RyaW5nKCAkaHRtbCApIHx8ICcnID09PSAkaHRtbCApIHsgcmV0dXJuICRodG1sOyB9CiAgICAgICAgJGZiID0gZ2V0X2Jsb2dpbmZvKCAnbmFtZScgKSAuICcgwrcg5YiR5LqL6L6p5oqk5LiO5rOV5b6L5ZKo6K+i5bmz5Y+wJzsKICAgICAgICAkaHRtbCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjayggJy88bWV0YVxiW14+XSo+L2knLCBmdW5jdGlvbiAoICRtICkgdXNlICggJGZiICkgewogICAgICAgICAgICAkdGFnID0gJG1bMF07CiAgICAgICAgICAgIGlmICggISBwcmVnX21hdGNoKCAnLyg/Om5hbWV8cHJvcGVydHkpXHMqPVxzKlsiXCddKD86ZGVzY3JpcHRpb258b2c6ZGVzY3JpcHRpb258dHdpdHRlcjpkZXNjcmlwdGlvbilbIlwnXS9pJywgJHRhZyApICkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0YWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAhIHByZWdfbWF0Y2goICcvY29udGVudFxzKj1ccypbIlwnXShbXiJcJ10qKVsiXCddL2knLCAkdGFnLCAkYyApICkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0YWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNsZWFuID0gdHJpbSggcHJlZ19yZXBsYWNlKCAnL1xbenNfW15cXV0qXF0/LycsICcnLCAkY1sxXSApICk7CiAgICAgICAgICAgIGlmICggJycgPT09ICRjbGVhbiApIHsgJGNsZWFuID0gJGZiOyB9CiAgICAgICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2UoICcvY29udGVudFxzKj1ccypbIlwnXShbXiJcJ10qKVsiXCddL2knLCAnY29udGVudD0iJyAuIGVzY19hdHRyKCAkY2xlYW4gKSAuICciJywgJHRhZywgMSApOwogICAgICAgIH0sICRodG1sICk7CgogICAgICAgIC8qIOe7n+S4gOeahOaVtOmhtSBIVE1MIOi/h+a7pOWFpeWPo++8muKRriBhc3NldC1maXgg562J5qih5Z2X5oyC5Zyo6L+Z6YeM77yMCiAgICAgICAgICAg5aSN55So5ZCM5LiA5bGC6L6T5Ye657yT5Yay77yM6YG/5YWN5bWM5aWXIG9iX3N0YXJ044CCICovCiAgICAgICAgcmV0dXJuIGFwcGx5X2ZpbHRlcnMoICd6c19vYl9odG1sJywgJGh0bWwgKTsKICAgIH0KfQo=
在商言法(北京)文化有限公司官网 | 法律知识与服务平台
10万+问答
5万+专业文章
50+实用工具
100+合作律师
📞 18511835733
✉ 18511835733@163.com
在商言法 · 法律知识与咨询平台
找答案、找律师、查法规,一站式法律服务入口
围绕问答、文章、工具、案例与律师咨询,构建可搜索、可转化、可运营的法律门户。
💬📞
在商言法(北京)文化有限公司负责本平台运营与技术服务;具体法律服务由用户实际委托的律师或机构提供。
了解平台
扫码添加微信
微信号:18511835733