IyDkuI3lronlhajnmoRKYXZh5Luj56CBCgrigIsJCeW8gOWPkeW3peeoi+W4iOS4jua4l+mAj+W3peeoi+W4iOS5i+mXtOaYr+W+iOW+ruWmmeeahOWFs+ezu++8jOWcqOaJk+mdtuWcuueahOWQjOaXtu+8jOmcgOimgeaDs+S4gOS4i+WmguaenOS9oOaYr+W8gOWPkeS6uuWRmOS9oOS8muaAjuagt+WOu+mYsuW+oei/meenjea8j+a0nu+8jOiAjOS9nOS4uuaUu+WHu+aWueS9oOWPiOaAjuS5iOWOu+e7lei/h+W8gOWPkeS6uuWRmOeahOmYsuW+oeOAggoKCgojIyDnjq/looPmkK3lu7oKCmh0dHBzOi8vZ2l0aHViLmNvbS9qM2VyczMvSGVsbG8tSmF2YS1TZWMKCgohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvMTc5NDAvOWY0YzAyYWJhNTBjZWM5YzVkNDYwZjEyYzViNWM5MDNfOTQ4OTMucG5nKQoKCgojIyBTUUzms6jlhaUKCuKAiwkJU1FMSShTUUwgSW5qZWN0aW9uKe+8jCBTUUzms6jlhaXmmK/lm6DkuLrnqIvluo/mnKrog73mraPnoa7lr7nnlKjmiLfnmoTovpPlhaXov5vooYzmo4Dmn6XvvIzlsIbnlKjmiLfnmoTovpPlhaXku6Xmi7zmjqXnmoTmlrnlvI/luKblhaVTUUzor63lj6XvvIzlr7zoh7TkuoZTUUzms6jlhaXnmoTkuqfnlJ/jgILmlLvlh7vogIXlj6/pgJrov4dTUUzms6jlhaXnm7TmjqXojrflj5bmlbDmja7lupPkv6Hmga/vvIzpgKDmiJDkv6Hmga/ms4TmvI/jgIIKCiMjIyBTUUzms6jlhaXkuYtKREJD5rOo5YWlCgrigIsJCUpEQkPmnInkuKTkuKrmlrnms5XmiafooYxTUUzor63lj6XvvIzliIbliKvmmK9QcmVwYXJlU3RhdGVtZW505ZKMU3RhdGVtZW5044CCCgrmvI/mtJ7ku6PnoIHvvJoKCmBgYGphdmEKLy8g6YeH55So5Y6f5aeL55qEU3RhdGVtZW505ou85o6l6K+t5Y+l77yM5a+86Ie05ryP5rSe5Lqn55SfCgpwdWJsaWMgU3RyaW5nIGpkYmNWdWwoU3RyaW5nIGlkKSB7CiAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICB0cnkgewogICAgICAgIENsYXNzLmZvck5hbWUoImNvbS5teXNxbC5jai5qZGJjLkRyaXZlciIpOwogICAgICAgIENvbm5lY3Rpb24gY29ubiA9IERyaXZlck1hbmFnZXIuZ2V0Q29ubmVjdGlvbihkYl91cmwsIGRiX3VzZXIsIGRiX3Bhc3MpOwoKICAgICAgICBTdGF0ZW1lbnQgc3RtdCA9IGNvbm4uY3JlYXRlU3RhdGVtZW50KCk7CiAgICAgICAgLy8g5ou85o6l6K+t5Y+l5Lqn55SfU1FM5rOo5YWlCiAgICAgICAgU3RyaW5nIHNxbCA9ICJzZWxlY3QgKiBmcm9tIHVzZXJzIHdoZXJlIGlkID0gJyIgKyBpZCArICInIjsKICAgICAgICBSZXN1bHRTZXQgcnMgPSBzdG10LmV4ZWN1dGVRdWVyeShzcWwpOwoKICAgICAgICB3aGlsZSAocnMubmV4dCgpKSB7CiAgICAgICAgICAgIFN0cmluZyByZXNfbmFtZSA9IHJzLmdldFN0cmluZygidXNlciIpOwogICAgICAgICAgICBTdHJpbmcgcmVzX3Bhc3MgPSBycy5nZXRTdHJpbmcoInBhc3MiKTsKICAgICAgICAgICAgU3RyaW5nIGluZm8gPSBTdHJpbmcuZm9ybWF0KCLmn6Xor6Lnu5PmnpwgJXM6ICVzIiwgcmVzX25hbWUsIHJlc19wYXNzKTsKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmZvKTsKICAgICAgICB9ICAgICAgICAgICAgICAgICAgCmBgYAoK5ryP5rSe5Luj56CB5LqM77yaCgpgYGBqYXZhCi8vIFByZXBhcmVTdGF0ZW1lbnTkvJrlr7lTUUzor63lj6Xov5vooYzpooTnvJbor5HvvIzkvYbmnInml7blvIDlj5HogIXkuLrkuobkvr/liKnvvIznm7TmjqXph4flj5bmi7zmjqXnmoTmlrnlvI/mnoTpgKBTUUzvvIzmraTml7bov5vooYzpooTnvJbor5HkuZ/ml6DnlKjjgIIKCkNvbm5lY3Rpb24gY29ubiA9IERyaXZlck1hbmFnZXIuZ2V0Q29ubmVjdGlvbihkYl91cmwsIGRiX3VzZXIsIGRiX3Bhc3MpOwpTdHJpbmcgc3FsID0gInNlbGVjdCAqIGZyb20gdXNlcnMgd2hlcmUgaWQgPSAiICsgaWQ7ClByZXBhcmVkU3RhdGVtZW50IHN0ID0gY29ubi5wcmVwYXJlU3RhdGVtZW50KHNxbCk7ClN5c3RlbS5vdXQucHJpbnRsbigiWypdIOaJp+ihjFNRTOivreWPpe+8miIgKyBzdCk7ClJlc3VsdFNldCBycyA9IHN0LmV4ZWN1dGVRdWVyeSgpOyAgICAgCmBgYAoK4oCLICAgICAgCgojIyMgU1FM5rOo5YWl5LmLTXlCYXRpcwoK4oCLCQlNeUJhdGlz5qGG5p625bqV5bGC5bey57uP5a6e546w5LqG5a+5U1FM5rOo5YWl55qE6Ziy5b6h77yM5L2G5a2Y5Zyo5L2/55So5LiN5b2T55qE5oOF5Ya15LiL77yM5LuN54S25a2Y5ZyoU1FM5rOo5YWl55qE6aOO6Zmp44CCCgrmvI/mtJ7ku6PnoIHvvJoKCmBgYGphdmEKLy8g5q2k5ryP5rSe5Ye6546w6aKR546H6L6D6auY5bm25LiU5b6I5Lil6YeN77yBCi8vIOS4uuS9leS6p+eUn++8mueUseS6juS9v+eUqCAje30g5Lya5bCG5a+56LGh6L2s5oiQ5a2X56ym5Liy77yM5b2i5oiQIG9yZGVyIGJ5ICJ1c2VyIiBkZXNjIOmAoOaIkOmUmeivr++8jOWboOatpOW+iOWkmueglOWPkeS8mumHh+eUqCR7feadpeino+WGs++8jOS7juiAjOmAoOaIkFNRTOazqOWFpQovLyDngrnlh7vov5DooYzlj6/pgJrov4fmiqXplJnor63lj6Xojrflj5bmlbDmja7lupN1c2VyCgo8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtcHJpbWFyeSI+QFJlcXVlc3RNYXBwaW5nKDwvc3Bhbj4iL215YmF0aXMvdnVsL29yZGVyIikKcHVibGljIExpc3Qgb3JkZXJCeShTdHJpbmcgZmllbGQsIFN0cmluZyBzb3J0KSB7CiAgICByZXR1cm4gdXNlck1hcHBlci5vcmRlckJ5KGZpZWxkLCBzb3J0KTsKfQoKLy8gbWFwcGVyLnhtbOivreWPpQoKICAgIHNlbGVjdCAqIGZyb20gdXNlcnMgb3JkZXIgYnkgJHtmaWVsZH0gJHtzb3J0fQoKYGBgCgrmvI/mtJ7ku6PnoIHkuozvvJoKCmBgYGphdmEKLy8g5qih57OK5pCc57Si5pe277yM55u05o6l5L2/55SoJyUje3F9JScg5Lya5oql6ZSZ77yM6YOo5YiG56CU5Y+R5Zu+5pa55L6/55u05o6l5pS55oiQJyUke3F9JSfku47ogIzpgKDmiJDms6jlhaUKCjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1wcmltYXJ5Ij5AU2VsZWN0KDwvc3Bhbj4ic2VsZWN0ICogZnJvbSB1c2VycyB3aGVyZSB1c2VyIGxpa2UgJyUke3F9JSciKQpMaXN0IHNlYXJjaChTdHJpbmcgcSk7CgovLyDlronlhajku6PnoIEs6YeH55SoY29uY2F0CjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1wcmltYXJ5Ij5AU2VsZWN0KDwvc3Bhbj4ic2VsZWN0ICogZnJvbSB1c2VycyB3aGVyZSB1c2VyIGxpa2UgY29uY2F0KCclJywje3F9LCclJykiKQpMaXN0IHNlYXJjaChTdHJpbmcgcSk7IApgYGAKCuKAiyAgICAgICAgICAgICAgICAKCiMjIOaWh+S7tuS4iuS8oAoK4oCLCQnmlofku7bkuIrkvKDmvI/mtJ7vvIzmmK/mjIfnlKjmiLfkuIrkvKDkuobkuIDkuKrlj6/miafooYznmoTohJrmnKzmlofku7Yo5aaCanNwXHBocFxhc3Ap77yM5bm26YCa6L+H5q2k6ISa5pys5paH5Lu26I635b6X5LqG5omn6KGM5pyN5Yqh5Zmo56uv5ZG95Luk55qE6IO95Yqb44CC5bi46KeB5Zy65pmv5pivd2Vi5pyN5Yqh5Zmo5YWB6K6455So5oi35LiK5Lyg5Zu+54mH5oiW6ICF5pmu6YCa5paH5pys5paH5Lu25L+d5a2Y77yM6L+Z56eN5ryP5rSe5bGe5LqO5L2O5oiQ5pys6auY5p2A5Lyk5YqbCgrmvI/mtJ7ku6PnoIHvvJoKCmBgYGphdmEKLy8g5YWB6K645LiK5Lyg5Lu75oSP5paH5Lu25a+86Ie055qE5a6J5YWo6aOO6ZmpCgpwdWJsaWMgU3RyaW5nIHNpbmdsZUZpbGVVcGxvYWQoPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkBSZXF1ZXN0UGFyYW0oPC9zcGFuPiJmaWxlIikgTXVsdGlwYXJ0RmlsZSBmaWxlLCBSZWRpcmVjdEF0dHJpYnV0ZXMgcmVkaXJlY3RBdHRyaWJ1dGVzKSB7CiAgICB0cnkgewogICAgICAgIGJ5dGVbXSBieXRlcyA9IGZpbGUuZ2V0Qnl0ZXMoKTsKICAgICAgICBQYXRoIGRpciA9IFBhdGhzLmdldChVUExPQURFRF9GT0xERVIpOwogICAgICAgIFBhdGggcGF0aCA9IFBhdGhzLmdldChVUExPQURFRF9GT0xERVIgKyBmaWxlLmdldE9yaWdpbmFsRmlsZW5hbWUoKSk7CgogICAgICAgIEZpbGVzLndyaXRlKHBhdGgsIGJ5dGVzKTsKICAgICAgICByZWRpcmVjdEF0dHJpYnV0ZXMuYWRkRmxhc2hBdHRyaWJ1dGUoIm1lc3NhZ2UiLCLkuIrkvKDmlofku7bmiJDlip/vvJoiICsgcGF0aCArICIiKTsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgIHJldHVybiBlLnRvU3RyaW5nKCk7CiAgICB9CiAgICByZXR1cm4gInJlZGlyZWN0OnVwbG9hZF9zdGF0dXMiOwp9CmBgYAoKCgojIyDnm67lvZXpgY3ljoYKCuKAiwkJ55uu5b2V6YGN5Y6GLCDlupTnlKjns7vnu5/lnKjlpITnkIbkuIvovb3mlofku7bml7bmnKrlr7nmlofku7bov5vooYzov4fmu6TvvIzns7vnu5/lkI7lj7DnqIvluo/nqIvluo/kuK3lpoLmnpzkuI3og73mraPnoa7lnLDov4fmu6TlrqLmiLfnq6/mj5DkuqTnmoQuLi/lkowuL+S5i+exu+eahOebruW9lei3s+i9rOespu+8jOaUu+WHu+iAheWPr+S7pemAmui/h+i+k+WFpS4uL+i/m+ihjOebruW9lei3s+i9rO+8jOS7juiAjOS4i+i9veOAgeWIoOmZpOS7u+aEj+aWh+S7tuOAggoKYGBgamF2YQovLyDmlofku7bot6/lvoTmsqHlgZrpmZDliLbvvIzpgJrov4cuLi/pgJLlvZLkuIvovb3ku7vmhI/mlofku7YKLy8gUG9D77yaL1RyYXZlcnNhbC9kb3dubG9hZD9maWxlbmFtZT0uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcGFzc3dkCgo8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtcHJpbWFyeSI+QEdldE1hcHBpbmcoPC9zcGFuPiIvZG93bmxvYWQiKQpwdWJsaWMgU3RyaW5nIGRvd25sb2FkKFN0cmluZyBmaWxlbmFtZSwgSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UpIHsKICAgIFN0cmluZyBmaWxlUGF0aCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgidXNlci5kaXIiKSArICIvbG9ncy8iICsgZmlsZW5hbWU7CiAgICB0cnkgewogICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGZpbGVQYXRoKTsKICAgICAgICBJbnB1dFN0cmVhbSBpcyA9IG5ldyBCdWZmZXJlZElucHV0U3RyZWFtKG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZSkpOwogICAgICAgIGJ5dGVbXSBidWZmZXIgPSBuZXcgYnl0ZVtpcy5hdmFpbGFibGUoKV07CiAgICAgICAgZmlzLnJlYWQoYnVmZmVyKTsKICAgICAgICBmaXMuY2xvc2UoKTsKICAgICAgICByZXNwb25zZS5yZXNldCgpOwogICAgICAgIHJlc3BvbnNlLmFkZEhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsICJhdHRhY2htZW50O2ZpbGVuYW1lPSIgKyBmaWxlbmFtZSk7CiAgICAgICAgcmVzcG9uc2UuYWRkSGVhZGVyKCJDb250ZW50LUxlbmd0aCIsICIiICsgZmlsZS5sZW5ndGgoKSk7CiAgICAgICAgT3V0cHV0U3RyZWFtIHRvQ2xpZW50ID0gbmV3IEJ1ZmZlcmVkT3V0cHV0U3RyZWFtKHJlc3BvbnNlLmdldE91dHB1dFN0cmVhbSgpKTsKICAgICAgICByZXNwb25zZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgICAgdG9DbGllbnQud3JpdGUoYnVmZmVyKTsKICAgICAgICB0b0NsaWVudC5mbHVzaCgpOwogICAgICAgIHRvQ2xpZW50LmNsb3NlKCk7CiAgICAgICAgcmV0dXJuICLkuIvovb3mlofku7bmiJDlip/vvJoiICsgZmlsZVBhdGg7CmBgYAoKCgojIyBYU1MKCuKAiwkJWFNTKENyb3NzIFNpdGUgU2NyaXB0aW5nKSDot6jnq5nohJrmnKzmlLvlh7vvvIzmlLvlh7vogIXmj5LlhaXmgbbmhI9TY3JpcHTku6PnoIEs5b2T55So5oi35rWP6KeI6K+l6aG15LmL5pe2LOW1jOWFpeWFtuS4rVdlYumHjOmdoueahFNjcmlwdOS7o+eggeS8muiiq+aJp+ihjCzku47ogIzovr7liLDmgbbmhI/mlLvlh7vnlKjmiLfnmoTnm67nmoTjgIIKCua8j+a0nuS7o+egge+8mgoKYGBgamF2YQovLyDnroDljZXnmoTlj43lsITlnotYU1PvvIzmsqHlr7novpPlh7rlgZrlpITnkIbjgILlvZPmlLvlh7vogIXovpPlhaXmgbbmhI9qc+ivreWPpeaXtuWPr+inpuWPkQoKPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkBHZXRNYXBwaW5nKDwvc3Bhbj4iL3JlZmxlY3QiKQpwdWJsaWMgc3RhdGljIFN0cmluZyBpbnB1dChTdHJpbmcgY29udGVudCkgewogICAgcmV0dXJuIGNvbnRlbnQ7Cn0KYGBgCgoKCiMjIFNTUkYKCuKAiwkJU1NSRihTZXJ2ZXItU2lkZSBSZXF1ZXN0IEZvcmdlcnkpIOacjeWKoeWZqOerr+ivt+axguS8qumAoO+8jOaYr+S4gOenjeeUseaUu+WHu+iAheaehOmAoOW9ouaIkOeUseacjeWKoeerr+WPkei1t+ivt+axgueahOS4gOS4quWuieWFqOa8j+a0nuOAggoK5ryP5rSe5Luj56CBOgoKYGBgamF2YQovLyB1cmzlj4LmlbDmsqHlgZrpmZDliLbvvIzlj6/osIPnlKhVUkxDb25uZWN0aW9u5Y+R6LW35Lu75oSP6K+35rGC77yM5q+U5aaC6K+35rGC5YaF572R77yM5oiW5L2/55SoZmlsZeetieWNj+iuruivu+WPluaWh+S7tgoKcHVibGljIHN0YXRpYyBTdHJpbmcgVVJMQ29ubmVjdGlvbihTdHJpbmcgdXJsKSB7CiAgICB0cnkgewogICAgICAgIFVSTCB1ID0gbmV3IFVSTCh1cmwpOwogICAgICAgIFVSTENvbm5lY3Rpb24gY29ubiA9IHUub3BlbkNvbm5lY3Rpb24oKTsKICAgICAgICBCdWZmZXJlZFJlYWRlciByZWFkZXIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKGNvbm4uZ2V0SW5wdXRTdHJlYW0oKSkpOwoKICAgICAgICBTdHJpbmcgY29udGVudDsKICAgICAgICBTdHJpbmdCdWZmZXIgaHRtbCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKCiAgICAgICAgd2hpbGUgKChjb250ZW50ID0gcmVhZGVyLnJlYWRMaW5lKCkpICE9IG51bGwpIHsKICAgICAgICAgICAgaHRtbC5hcHBlbmQoY29udGVudCk7CiAgICAgICAgfQogICAgICAgIHJlYWRlci5jbG9zZSgpOwogICAgICAgIHJldHVybiBodG1sLnRvU3RyaW5nKCk7CgogICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICByZXR1cm4gZS5nZXRNZXNzYWdlKCk7CiAgICB9Cn0KYGBgCgrmvI/mtJ7ku6PnoIHkuozvvJoKCmBgYGphdmEKLy8gU1NSRuS/ruWkjee7j+W4uOeisOWIsOeahOmXrumimO+8jOiZveeEtui/h+a7pOS6huWGhee9keWcsOWdgO+8jOS9humAmui/h+efremTvuaOpei3s+i9rOeahOaWueW8j+WPr+S7pee7lei/hwoKcHVibGljIFN0cmluZyBVUkxDb25uZWN0aW9uU2FmZShTdHJpbmcgdXJsKSB7CiAgICBpZiAoIVNlY3VyaXR5LmlzX2h0dHAodXJsKSl7CiAgICAgICAgcmV0dXJuICLkuI3lhYHorrjpnZ5odHRwL2h0dHBz5Y2P6K6uISEhIjsKICAgIH1lbHNlIGlmIChTZWN1cml0eS5pc0ludHJhbmV0KHVybCkpIHsKICAgICAgICByZXR1cm4gIuS4jeWFgeiuuOiuv+mXruWGhee9kSEhISI7CiAgICB9ZWxzZXsKICAgICAgICByZXR1cm4gSHR0cC5VUkxDb25uZWN0aW9uKHVybCk7CiAgICB9Cn0KYGBgCgoKCiMjIOi/nOeoi+S7o+eggeaJp+ihjAoK4oCLCQlSQ0UgKFJlbW90ZSBDb2RlIEV4ZWN1dGlvbiksIOi/nOeoi+S7o+eggeaJp+ihjOa8j+a0nu+8jOi/memHjOWMheWQq+S4pOenjeexu+Wei+a8j+a0njoKCi0g5ZG95Luk5rOo5YWl77yIQ29tbWFuZCBJbmplY3Rpb27vvInvvIzlnKjmn5Dnp43lvIDlj5HpnIDmsYLkuK3vvIzpnIDopoHlvJXlhaXlr7nns7vnu5/mnKzlnLDlkb3ku6TnmoTmlK/mjIHmnaXlrozmiJDnibnlrprlip/og73vvIzlvZPmnKrlr7novpPlhaXlgZrov4fmu6Tml7bvvIzliJnkvJrkuqfnlJ/lkb3ku6Tms6jlhaUKLSDku6PnoIHms6jlhaXvvIhDb2RlIEluamVjdGlvbu+8ie+8jOWcqOato+W4uOeahGphdmHnqIvluo/kuK3ms6jlhaXkuIDmrrVqYXZh5Luj56CB5bm25omn6KGM77yM5Y2z55So5oi36L6T5YWl55qE5pWw5o2u5b2T5L2camF2YeS7o+eggei/m+ihjOaJp+ihjOOAggoK5ryP5rSe5Luj56CB77yaCgpgYGBqYXZhCi8vIOWKn+iDveaYr+WIqeeUqFByb2Nlc3NCdWlsZGVy5omn6KGMbHPlkb3ku6Tmn6XnnIvmlofku7bvvIzkvYbmlLvlh7vogIXpgJrov4fmi7zmjqU7ICZhbXA7IHznrYnov57mjqXnrKbmnaXmiafooYzoh6rlt7HnmoTlkb3ku6TjgIIKCjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1wcmltYXJ5Ij5AUmVxdWVzdE1hcHBpbmcoPC9zcGFuPiIvUHJvY2Vzc0J1aWxkZXIiKQpwdWJsaWMgc3RhdGljIFN0cmluZyBjbWQoU3RyaW5nIGZpbGVwYXRoKSB7CiAgICBTdHJpbmdbXSBjbWRMaXN0ID0geyJzaCIsICItYyIsICJscyAtbCAiICsgZmlsZXBhdGh9OwogICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CgogICAgUHJvY2Vzc0J1aWxkZXIgcGIgPSBuZXcgUHJvY2Vzc0J1aWxkZXIoY21kTGlzdCk7CiAgICBwYi5yZWRpcmVjdEVycm9yU3RyZWFtKHRydWUpOwogICAgLi4uCmBgYAoK5ryP5rSe5Luj56CB5LqM77yaCgpgYGBqYXZhCi8vIGdldFJ1bnRpbWUoKeW4uOeUqOS6juaJp+ihjOacrOWcsOWRveS7pO+8jOS9v+eUqOmikeeOh+i+g+mrmOOAggoKPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkBSZXF1ZXN0TWFwcGluZyg8L3NwYW4+Ii9ydW50aW1lIikKcHVibGljIHN0YXRpYyBTdHJpbmcgY21kMihTdHJpbmcgY21kKSB7CiAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgIHRyeSB7CiAgICAgICAgUHJvY2VzcyBwcm9jID0gUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhjbWQpOwogICAgICAgIElucHV0U3RyZWFtIGZpcyA9IHByb2MuZ2V0SW5wdXRTdHJlYW0oKTsKICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpc3IgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoZmlzKTsKICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihpc3IpOwogICAgIC4uLgpgYGAKCua8j+a0nuS7o+eggeS4ie+8mgoKYGBgamF2YQovLyDpgJrov4fliqDovb3ov5znqItqc+aWh+S7tuadpeaJp+ihjOS7o+egge+8jOWmguaenOWKoOi9veS6huaBtuaEj2pz5YiZ5Lya6YCg5oiQ5Lu75oSP5ZG95Luk5omn6KGMCi8vIOi/nOeoi+aBtuaEj2pzOiB2YXIgYSA9IG1haW5PdXRwdXQoKTsgZnVuY3Rpb24gbWFpbk91dHB1dCgpIHsgdmFyIHg9amF2YS5sYW5nLlJ1bnRpbWUuZ2V0UnVudGltZSgpLmV4ZWMoIm9wZW4gLWEgQ2FsY3VsYXRvciIpO30KLy8g4pqg77iPIOWcqEphdmEgOOS5i+WQjuenu+mZpOS6hlNjcmlwdEVuZ2luZU1hbmFnZXLnmoRldmFsCgpwdWJsaWMgdm9pZCBqc0VuZ2luZShTdHJpbmcgdXJsKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgIFNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgU2NyaXB0RW5naW5lTWFuYWdlcigpLmdldEVuZ2luZUJ5TmFtZSgiSmF2YVNjcmlwdCIpOwogICAgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuZ2V0QmluZGluZ3MoU2NyaXB0Q29udGV4dC5FTkdJTkVfU0NPUEUpOwogICAgU3RyaW5nIHBheWxvYWQgPSBTdHJpbmcuZm9ybWF0KCJsb2FkKCclcycpIiwgdXJsKTsKICAgIGVuZ2luZS5ldmFsKHBheWxvYWQsIGJpbmRpbmdzKTsKfQpgYGAKCua8j+a0nuS7o+eggeWbm++8mgoKYGBgamF2YQovLyDkuI3lronlhajnmoTkvb/nlKhHcm9vdnnosIPnlKjlkb3ku6QKCmltcG9ydCBncm9vdnkubGFuZy5Hcm9vdnlTaGVsbDsKPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkBHZXRNYXBwaW5nKDwvc3Bhbj4iL2dyb292eSIpCnB1YmxpYyB2b2lkIGdyb292eShTdHJpbmcgY21kKSB7CiAgICBHcm9vdnlTaGVsbCBzaGVsbCA9IG5ldyBHcm9vdnlTaGVsbCgpOwogICAgc2hlbGwuZXZhbHVhdGUoY21kKTsKfSAgICAgICAgICAgICAgCmBgYAoK5ryP5rSe5Luj56CB5LqU77yaCgpgYGBqYXZhCi8vIFByb2Nlc3NJbXBs5piv5pu05Li65bqV5bGC55qE5a6e546w77yMUnVudGltZeWSjFByb2Nlc3NCdWlsZGVy5omn6KGM5ZG95Luk5a6e6ZmF5LiK5Lmf5piv6LCD55So5LqGUHJvY2Vzc0ltcGzov5nkuKrnsbsKCkNsYXNzIGNsYXp6ID0gQ2xhc3MuZm9yTmFtZSgiamF2YS5sYW5nLlByb2Nlc3NJbXBsIik7Ck1ldGhvZCBtZXRob2QgPSBjbGF6ei5nZXREZWNsYXJlZE1ldGhvZCgic3RhcnQiLCBTdHJpbmdbXS5jbGFzcywgTWFwLmNsYXNzLCBTdHJpbmcuY2xhc3MsIFByb2Nlc3NCdWlsZGVyLlJlZGlyZWN0W10uY2xhc3MsIGJvb2xlYW4uY2xhc3MpOwptZXRob2Quc2V0QWNjZXNzaWJsZSh0cnVlKTsKbWV0aG9kLmludm9rZShudWxsLCBuZXcgU3RyaW5nW117Y21kfSwgbnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UpOwpgYGAKCgoKIyMg5LiN5a6J5YWo55qE5Y+N5bqP5YiX5YyWCgrigIsJCeWPjeW6j+WIl+WMlua8j+a0nu+8jOW9k+i+k+WFpeeahOWPjeW6j+WIl+WMlueahOaVsOaNruWPr+iiq+eUqOaIt+aOp+WItu+8jOmCo+S5iOaUu+WHu+iAheWNs+WPr+mAmui/h+aehOmAoOaBtuaEj+i+k+WFpe+8jOiuqeWPjeW6j+WIl+WMluS6p+eUn+mdnumihOacn+eahOWvueixoe+8jOWcqOatpOi/h+eoi+S4reaJp+ihjOaehOmAoOeahOS7u+aEj+S7o+egge+8iOWkmuingeS6juesrOS4ieaWuee7hOS7tuS6p+eUn+eahOa8j+a0nu+8iQoK5ryP5rSe5Luj56CB77yaCgpgYGBqYXZhCi8vIHJlYWRPYmplY3TvvIzor7vlj5bovpPlhaXmtYEs5bm26L2s5o2i5a+56LGh44CCT2JqZWN0SW5wdXRTdHJlYW0ucmVhZE9iamVjdCgpIOaWueazleeahOS9nOeUqOato+aYr+S7juS4gOS4qua6kOi+k+WFpea1geS4reivu+WPluWtl+iKguW6j+WIl++8jOWGjeaKiuWug+S7rOWPjeW6j+WIl+WMluS4uuS4gOS4quWvueixoeOAggovLyBwYXlsb2Fk77yaamF2YSAtamFyIHlzb3NlcmlhbC0wLjAuNi1TTkFQU0hPVC1CRVRBLWFsbC5qYXIgQ29tbW9uc0NvbGxlY3Rpb25zNSAib3BlbiAtYSBDYWxjdWxhdG9yIiB8IGJhc2U2NAoKcHVibGljIFN0cmluZyBjYyhTdHJpbmcgYmFzZTY0KSB7CiAgICB0cnkgewogICAgICAgIEJBU0U2NERlY29kZXIgZGVjb2RlciA9IG5ldyBCQVNFNjREZWNvZGVyKCk7CgogICAgICAgIGJhc2U2NCA9IGJhc2U2NC5yZXBsYWNlKCIgIiwgIisiKTsKICAgICAgICBieXRlW10gYnl0ZXMgPSBkZWNvZGVyLmRlY29kZUJ1ZmZlcihiYXNlNjQpOwoKICAgICAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpOwoKICAgICAgICAvLyDlj43luo/liJfljJbmtYHvvIzlsIbluo/liJfljJbnmoTljp/lp4vmlbDmja7mgaLlpI3kuLrlr7nosaEKICAgICAgICBPYmplY3RJbnB1dFN0cmVhbSBpbiA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShzdHJlYW0pOwogICAgICAgIGluLnJlYWRPYmplY3QoKTsKICAgICAgICBpbi5jbG9zZSgpOwogICAgICAgIHJldHVybiAi5Y+N5bqP5YiX5YyW5ryP5rSeIjsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgcmV0dXJuIGUudG9TdHJpbmcoKTsKICAgIH0KfQpgYGAKCua8j+a0nuS7o+eggeS6jO+8mgoKYGBgamF2YQovLyDov5znqIvmnI3liqHlmajmlK/mjIHnlKjmiLflj6/ku6XovpPlhaV5YW1s5qC85byP55qE5YaF5a655bm25LiU6L+b6KGM5pWw5o2u6Kej5p6Q77yM5rKh5pyJ5YGa5rKZ566x77yM6buR5ZCN5Y2V5LmL57G755qE6Ziy5o6nCgpwdWJsaWMgdm9pZCB5YW1sKFN0cmluZyBjb250ZW50KSB7CiAgICBZYW1sIHkgPSBuZXcgWWFtbCgpOwogICAgeS5sb2FkKGNvbnRlbnQpOwp9CmBgYAoK5ryP5rSe5Luj56CB5LiJ77yaCgpgYGBqYXZhCi8vIEphdmEgUk1JIFJlZ2lzdHJ5IOWPjeW6j+WIl+WMlua8j+a0nu+8jOWPl2pka+eJiOacrOW9seWTje+8jCB2dWwoU3RyaW5nIG5hbWUpIHsKICAgIHJldHVybiB1c2VyTWFwcGVyLnF1ZXJ5QnlVc2VyKG5hbWUpOwp9ICAgICAgICAgICAgICAgICAgIApgYGAKCgoKIyMg5o6l5Y+j5pyq5o6I5p2D6K6/6ZeuCgrigIsJCeaOpeWPo+acquaOiOadg+iuv+mXru+8iFVuYXV0aG9yaXplZCBBY2Nlc3PvvInvvIzlnKjkuI3ov5vooYzor7fmsYLmjojmnYPnmoTmg4XlhrXkuIvvvIzog73lpJ/nm7TmjqXlr7nnm7jlupTnmoTkuJrliqHpgLvovpHlip/og73ov5vooYzorr/pl67jgIHmk43kvZznrYnjgILpgJrluLjmmK/nlLHkuo7orqTor4HpobXpnaLlrZjlnKjnvLrpmbfmiJbogIXml6DorqTor4HjgIHlronlhajphY3nva7kuI3lvZPnrYnlr7zoh7TnmoTjgIIKCua8j+a0nuS7o+egge+8mgoKYGBgamF2YQovLyDlr7npg6jliIbmjqXlj6PmnKrlgZrpibTmnYPmi6bmiKrvvIzlr7zoh7Tlj6/mnKrmjojmnYPorr/pl64KPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkBPdmVycmlkZSNDVEx7bn1wdWJsaWM8L3NwYW4+IHZvaWQgYWRkSW50ZXJjZXB0b3JzKEludGVyY2VwdG9yUmVnaXN0cnkgcmVnaXN0cnkpIHsKICAgIHJlZ2lzdHJ5LmFkZEludGVyY2VwdG9yKG5ldyBMb2dpbkhhbmRsZXJJbnRlcmNlcHRvcigpKQogICAgLmFkZFBhdGhQYXR0ZXJucygiLyoqIikKICAgIC5leGNsdWRlUGF0aFBhdHRlcm5zKCIvVW5hdXRoLyoqIiwgIi9jc3MvKioiLCAiL2pzLyoqIiwgIi9pbWcvKioiKTsKfQpgYGAKCgoKIyMgU1NUSeaooeadv+azqOWFpQoK4oCLCQlTU1RJKFNlcnZlciBTaWRlIFRlbXBsYXRlIEluamVjdGlvbikg5pyN5Yqh5Zmo5qih5p2/5rOo5YWlLCDmnI3liqHnq6/mjqXmlLbkuobnlKjmiLfnmoTovpPlhaXvvIzlsIblhbbkvZzkuLogV2ViIOW6lOeUqOaooeadv+WGheWuueeahOS4gOmDqOWIhu+8jOWcqOi/m+ihjOebruagh+e8luivkea4suafk+eahOi/h+eoi+S4re+8jOaJp+ihjOS6hueUqOaIt+aPkuWFpeeahOaBtuaEj+WGheWuueOAggoK5ryP5rSe5Luj56CB77yaCgpgYGBqYXZhCiAvKioKICAgKiDlsIbor7fmsYLnmoR1cmzkvZzkuLrop4blm77lkI3np7DvvIzosIPnlKjmqKHmnb/lvJXmk47ljrvop6PmnpAKICAgKiDlnKjov5nnp43mg4XlhrXkuIvvvIzmiJHku6zlj6ropoHlj6/ku6XmjqfliLbor7fmsYLnmoRjb250cm9sbGVy55qE5Y+C5pWw77yM5LiA5qC35Y+v5Lul6YCg5oiQUkNF5ryP5rSeCiAgICogcGF5bG9hZDogX18ke1QoamF2YS5sYW5nLlJ1bnRpbWUpLmdldFJ1bnRpbWUoKS5leGVjKCJvcGVuIC1hIENhbGN1bGF0b3IiKX1fXzo6LngKICAgKi8KCiA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtcHJpbWFyeSI+QEdldE1hcHBpbmcoPC9zcGFuPiIvZG9jL3tkb2N1bWVudH0iKQogcHVibGljIHZvaWQgZ2V0RG9jdW1lbnQoPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkBQYXRoVmFyaWFibGU8L3NwYW4+IFN0cmluZyBkb2N1bWVudCkgewogICAgIFN5c3RlbS5vdXQucHJpbnRsbihkb2N1bWVudCk7CiB9CmBgYAoKCgojIyDmvI/mtJ7nu4Tku7YKCue7hOS7tuS4reWtmOWcqOeahOa8j+a0ngoKIyMjIFhTdHJlYW3lj43luo/liJfljJYKCuKAiwkJWFN0cmVhbeaYr+S4gOS4queugOWNleeahOWfuuS6jkphdmHlupPvvIxKYXZh5a+56LGh5bqP5YiX5YyW5YiwWE1M77yM5Y6G5Y+y5LiK5a2Y5Zyo5aSa5Liq5Y+N5bqP5YiX5YyW5ryP5rSe44CCCgrmvI/mtJ7ku6PnoIHvvJoKCmBgYGphdmEKcHVibGljIFN0cmluZyB2dWwoPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkBSZXF1ZXN0Qm9keTwvc3Bhbj4gU3RyaW5nIGNvbnRlbnQpIHsKICAgIFhTdHJlYW0geHMgPSBuZXcgWFN0cmVhbSgpOwogICAgeHMuZnJvbVhNTChjb250ZW50KTsKICAgIHJldHVybiAiWFN0cmVhbSBWdWwiOwp9CmBgYAoKIyMjIEZhc3Rqc29u5Y+N5bqP5YiX5YyWCgrigIsJCWZhc3Rqc29u5piv6Zi/6YeM5be05be055qE5byA5rqQSlNPTuino+aekOW6k++8jOWug+WPr+S7peino+aekEpTT07moLzlvI/nmoTlrZfnrKbkuLLvvIzmlK/mjIHlsIZKYXZhIEJlYW7luo/liJfljJbkuLpKU09O5a2X56ym5Liy77yM5Lmf5Y+v5Lul5LuOSlNPTuWtl+espuS4suWPjeW6j+WIl+WMluWIsEphdmFCZWFu77yM5Y6G5Y+y5LiK5a2Y5Zyo5aSa5Liq5Y+N5bqP5YiX5YyW5ryP5rSe44CCCgpgYGBqYXZhCi8vIOS9v+eUqOS6huS9jueJiOacrO+8jOWtmOWcqOa8j+a0ngovLyBwb2M6IHsiPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXByaW1hcnkiPkB0eXBlPC9zcGFuPiI6ImphdmEubmV0LkluZXQ0QWRkcmVzcyIsInZhbCI6IjhkNXR2OC5kbnNsb2cuY24ifQoKCiAgICBjb20uYWxpYmFiYQogICAgZmFzdGpzb24KICAgIDEuMi4yNAoKYGBgCgojIyMgSmFja3NvbuWPjeW6j+WIl+WMlgoK4oCLCQlKYWNrc29u5piv5LiA5aWX5byA5rqQ55qEamF2YeW6j+WIl+WMluS4juWPjeW6j+WIl+WMluW3peWFt+ahhuaetu+8jOWPr+WwhmphdmHlr7nosaHluo/liJfljJbkuLp4bWzlkoxqc29u5qC85byP55qE5a2X56ym5Liy5bm25o+Q5L6b5a+55bqU55qE5Y+N5bqP5YiX5YyW6L+H56iL44CC55Sx5LqO5YW26Kej5p6Q5pWI546H6L6D6auY77yMSmFja3NvbuebruWJjeaYr1NwcmluZyBNVkPkuK3lhoXnva7kvb/nlKjnmoTop6PmnpDmlrnlvI/jgIIKCua8j+a0nuS7o+egge+8mgoKYGBgamF2YQpwdWJsaWMgdm9pZCB2dWwoKSB7CiAgICB0cnkgewogICAgICAgIFN0cmluZyBwYXlsb2FkID0gIltcImNvbS5ucWFkbWluLnJvd3NldC5KZGJjUm93U2V0SW1wbFwiLHtcImRhdGFTb3VyY2VOYW1lXCI6XCJsZGFwOi8vMTI3LjAuMC4xOjEzODkvRXhwbG9pdFwiLFwiYXV0b0NvbW1pdFwiOlwidHJ1ZVwifV0iOwoKICAgICAgICBPYmplY3RNYXBwZXIgbWFwcGVyID0gbmV3IE9iamVjdE1hcHBlcigpOwogICAgICAgIG1hcHBlci5lbmFibGVEZWZhdWx0VHlwaW5nKCk7CiAgICAgICAgT2JqZWN0IG8gPSBtYXBwZXIucmVhZFZhbHVlKHBheWxvYWQsIE9iamVjdC5jbGFzcyk7CiAgICAgICAgbWFwcGVyLndyaXRlVmFsdWVBc1N0cmluZyhvKTsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgIH0KfQpgYGAKCiMjIyBMb2c0ajLlj43luo/liJfljJYKCuKAiwkJCUFwYWNoZSBMb2c0ajLmmK/kuIDmrL7kvJjnp4DnmoRKYXZh5pel5b+X5qGG5p6244CC5q2k5qyh5ryP5rSe5piv55SxIExvZzRqMiDmj5DkvpvnmoRsb29rdXDlip/og73pgKDmiJDnmoTvvIzor6Xlip/og73lhYHorrjlvIDlj5HogIXpgJrov4fkuIDkupvljY/orq7ljrvor7vlj5bnm7jlupTnjq/looPkuK3nmoTphY3nva7jgILkvYblnKjlpITnkIbmlbDmja7ml7bvvIzlubbmnKrlr7novpPlhaXvvIjlpoIke2puZGnvvInov5vooYzkuKXmoLznmoTliKTmlq3vvIzku47ogIzpgKDmiJBKTkRJ5rOo5YWlCgrmvI/mtJ7ku6PnoIHvvJoKCmBgYGphdmEKLy8gbG9nNGotY29yZQ==
Track-魔方
发表于 2023-9-13
评论列表
加载数据中...