xiaomianao666

插件名:global_【Mod】TwitterMediaDownloader#0

Jul 5th, 2024
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_【Mod】TwitterMediaDownloader#0@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgIOOAkE1vZOOAkVR3aXR0ZXIgTWVkaWEgRG93bmxvYWRlcgovLyBAZGVzY3JpcHRpb24gICAgU2F2ZSBWaWRlby9QaG90byBieSBPbmUtQ2xpY2suCi8vIEBkZXNjcmlwdGlvbjpqYSDjg6/jg7Pjgq/jg6rjg4Pjgq/jgafli5XnlLvjg7vnlLvlg4/jgpLkv53lrZjjgZnjgovjgIIKLy8gQGRlc2NyaXB0aW9uOnpoLWNuIOS4gOmUruS/neWtmOinhumikS/lm77niYcKLy8gQGRlc2NyaXB0aW9uOnpoLXR3IOS4gOmNteS/neWtmOimlumguy/lnJbniYcKLy8gQHZlcnNpb24gICAgIDEuMjfjgJBNb2TjgJEyMDI0MDQxMi4wOTM1Ci8vIEBhdXRob3IgICAgICBBTUFOReOAkE1vZOOAkWhlY2tsZXMKLy8gQG5hbWVzcGFjZSAgIG5vbmUKLy8gQG1hdGNoICAgICAgIGh0dHBzOi8vdHdpdHRlci5jb20vKgovLyBAbWF0Y2ggICAgICAgaHR0cHM6Ly9tb2JpbGUudHdpdHRlci5jb20vKgovLyBAZ3JhbnQgICAgICAgR01fcmVnaXN0ZXJNZW51Q29tbWFuZAovL+i/meS6m+S7o+eggeihjOeci+i1t+adpeWDj+aYryBHcmVhc2Vtb25rZXkg6ISa5pys55qE5YWD5pWw5o2u77yIbWV0YWRhdGHvvInms6jph4rvvIzogIzkuI3mmK/mma7pgJrnmoQgSmF2YVNjcmlwdCDku6PnoIHjgIJHcmVhc2Vtb25rZXkg5piv5LiA5LiqIEZpcmVmb3gg5o+S5Lu277yM5YWB6K6455So5oi35Li6572R6aG15re75Yqg6Ieq5a6a5LmJ55qEIEphdmFTY3JpcHQg5Luj56CB77yM5LuO6ICM5L+u5pS55oiW5aKe5by6572R6aG155qE5Yqf6IO944CCCi8vIEBncmFudCDms6jph4rnlKjkuo7lo7DmmI7ohJrmnKzlsIbkvb/nlKjlk6rkupsgR3JlYXNlbW9ua2V5IOaPkOS+m+eahCBBUEnjgILov5nmnInliqnkuo7noa7kv53ohJrmnKznmoTmnYPpmZDorr7nva7mraPnoa7vvIzlubbkuJTlvZPohJrmnKzlronoo4XmiJbmm7TmlrDml7bvvIxHcmVhc2Vtb25rZXkg5Lya5qOA5p+l6L+Z5Lqb5p2D6ZmQ5piv5ZCm5LiO55So5oi36K6+572u55qE5p2D6ZmQ55u456ym44CCCi8v546w5Zyo5p2l6YCQ5LiA6Kej6YeK6L+Z5LqbIEBncmFudCDms6jph4rvvJoKLy8gQGdyYW50IEdNX3NldFZhbHVlCi8v6L+Z6KGo56S66ISa5pys5bCG5L2/55SoIEdNX3NldFZhbHVlIOWHveaVsOOAgkdNX3NldFZhbHVlIOeUqOS6juWcqCBHcmVhc2Vtb25rZXkg55qE5a2Y5YKo5Lit6K6+572u5LiA5Liq5YC844CC6L+Z5Liq5YC85Y+v5Lul5Zyo6ISa5pys55qE5YW25LuW6YOo5YiG5oiW5YW25LuW6ISa5pys5Lit6YCa6L+HIEdNX2dldFZhbHVlIOiOt+WPluOAggovLyBAZ3JhbnQgR01fZ2V0VmFsdWUKLy/ov5nooajnpLrohJrmnKzlsIbkvb/nlKggR01fZ2V0VmFsdWUg5Ye95pWw44CCR01fZ2V0VmFsdWUg55So5LqO5LuOIEdyZWFzZW1vbmtleSDnmoTlrZjlgqjkuK3ojrflj5bkuIDkuKrkuYvliY3pgJrov4cgR01fc2V0VmFsdWUg6K6+572u55qE5YC844CCCi8vIEBncmFudCBHTV9kb3dubG9hZAovL+i/meihqOekuuiEmuacrOWwhuS9v+eUqCBHTV9kb3dubG9hZCDlh73mlbDjgIJHTV9kb3dubG9hZCDmmK/kuIDkuKrnlKjkuo7op6blj5Hmlofku7bkuIvovb3nmoTlh73mlbDjgILkvaDlj6/ku6Xkvb/nlKjlroPmnaXkuIvovb3lubbkv53lrZjmlofku7bliLDnlKjmiLfnmoTmnKzlnLDmlofku7bns7vnu5/jgIIKLy/ms6jmhI/vvJrpmo/nnYAgR3JlYXNlbW9ua2V5IOeahOWPkeWxle+8jOS4gOS6myBBUEkg5Y+v6IO95bey57uP6KKr5byD55So5oiW5pu/5Luj44CC5aaC5p6c5L2g5q2j5Zyo5p+l55yL5LiA5Liq6L6D5paw55qE6ISa5pys5oiW5bqT77yM5bu66K6u5p+l6ZiF5pyA5paw55qEIEdyZWFzZW1vbmtleSDmlofmoaPku6Xkuobop6PmnIDmlrDnmoQgQVBJIOWSjOacgOS9s+Wunui3teOAggovL+atpOWklu+8jOmcgOimgeazqOaEj+eahOaYr++8jOebtOaOpeWcqOiEmuacrOS4reWGmei/meS6myBAZ3JhbnQg5rOo6YeK5Y+v6IO95LiN5piv5b+F6ZyA55qE77yM5Zug5Li6IEdyZWFzZW1vbmtleSDpgJrluLjlj6/ku6Xku47ohJrmnKznmoTlrp7pmYXku6PnoIHlkozkvb/nlKjnmoQgQVBJIOS4reaOqOaWreWHuuaJgOmcgOeahOadg+mZkOOAguS9huWcqOafkOS6m+aDheWGteS4i++8jOaYjuehruWjsOaYjui/meS6m+adg+mZkOWPr+iDveaYr+S4quWlveS4u+aEj++8jOS7peehruS/neS7o+eggeeahOa4heaZsOaAp+WSjOWFvOWuueaAp+OAggovLyBAY29tcGF0aWJsZSAgQ2hyb21lCi8vIEBjb21wYXRpYmxlICBGaXJlZm94Ci8vIEBsaWNlbnNlICAgICBNSVQKLy8gQGRvd25sb2FkVVJMIGh0dHBzOi8vdXBkYXRlLmdyZWFzeWZvcmsub3JnL3NjcmlwdHMvNDkxOTQyLyVFMyU4MCU5ME1vZCVFMyU4MCU5MVR3aXR0ZXIlMjBNZWRpYSUyMERvd25sb2FkZXIudXNlci5qcwovLyBAdXBkYXRlVVJMIGh0dHBzOi8vdXBkYXRlLmdyZWFzeWZvcmsub3JnL3NjcmlwdHMvNDkxOTQyLyVFMyU4MCU5ME1vZCVFMyU4MCU5MVR3aXR0ZXIlMjBNZWRpYSUyMERvd25sb2FkZXIubWV0YS5qcwovLyA9PS9Vc2VyU2NyaXB0PT0KLyoganNoaW50IGVzdmVyc2lvbjogOCAqLwoKLy8g5a6a5LmJ5paH5Lu25ZCN5qC85byPCmNvbnN0IGZpbGVuYW1lID0KICAie2RhdGUtdGltZX1fdHdpdHRlcl97dXNlci1uYW1lfShAe3VzZXItaWR9KV97c3RhdHVzLWlkfV97ZmlsZS10eXBlfSI7CgovLyBUTUTmqKHlnZfnmoTlsIHoo4UKY29uc3QgVE1EID0gKGZ1bmN0aW9uICgpIHsKICAvLyDliJ3lp4vljJblj5jph48KICBsZXQgbGFuZywgaG9zdCwgaGlzdG9yeSwgc2hvd19zZW5zaXRpdmUsIGlzX3R3ZWV0ZGVjazsKCiAgLy8g6L+U5Zue5LiA5Liq5YyF5ZCr5ZCE56eN5pa55rOV55qE5a+56LGhCiAgcmV0dXJuIHsKICAgIC8vIOWIneWni+WMluWHveaVsAogICAgaW5pdDogYXN5bmMgZnVuY3Rpb24gKCkgewogICAgICAvLyDms6jlhozlj7PplK7oj5zljZXlkb3ku6QKICAgICAgR01fcmVnaXN0ZXJNZW51Q29tbWFuZCgKICAgICAgICAodGhpcy5sYW5ndWFnZVtuYXZpZ2F0b3IubGFuZ3VhZ2VdIHx8IHRoaXMubGFuZ3VhZ2UuZW4pLnNldHRpbmdzLAogICAgICAgIHRoaXMuc2V0dGluZ3MKICAgICAgKTsKCiAgICAgIC8vIOWIneWni+WMluivreiogOOAgeS4u+acuuWQjeOAgeaYr+WQpuS4ulR3ZWV0RGVja+OAgeWOhuWPsuiusOW9leWSjOaYr+WQpuaYvuekuuaVj+aEn+WGheWuuQogICAgICBsYW5nID0KICAgICAgICB0aGlzLmxhbmd1YWdlW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImh0bWwiKS5sYW5nXSB8fCB0aGlzLmxhbmd1YWdlLmVuOwogICAgICBob3N0ID0gbG9jYXRpb24uaG9zdG5hbWU7CiAgICAgIGlzX3R3ZWV0ZGVjayA9IGhvc3QuaW5kZXhPZigidHdlZXRkZWNrIikgPj0gMDsKICAgICAgaGlzdG9yeSA9IHRoaXMuc3RvcmFnZV9vYnNvbGV0ZSgpOwogICAgICBpZiAoaGlzdG9yeS5sZW5ndGgpIHsKICAgICAgICB0aGlzLnN0b3JhZ2UoaGlzdG9yeSk7CiAgICAgICAgdGhpcy5zdG9yYWdlX29ic29sZXRlKHRydWUpOyAvLyDmoIforrDkuLrlt7Lmm7TmlrAKICAgICAgfSBlbHNlIGhpc3RvcnkgPSBhd2FpdCB0aGlzLnN0b3JhZ2UoKTsgLy8g6I635Y+W5paw55qE5Y6G5Y+y6K6w5b2VCiAgICAgIHNob3dfc2Vuc2l0aXZlID0gR01fZ2V0VmFsdWUoInNob3dfc2Vuc2l0aXZlIiwgZmFsc2UpOyAvLyDor7vlj5bmmK/lkKbmmL7npLrmlY/mhJ/lhoXlrrnnmoTorr7nva4KCiAgICAgIC8vIOaPkuWFpUNTU+agt+W8jwogICAgICBkb2N1bWVudC5oZWFkLmluc2VydEFkamFjZW50SFRNTCgKICAgICAgICAiYmVmb3JlZW5kIiwKICAgICAgICAiPHN0eWxlPiIgKyB0aGlzLmNzcyArIChzaG93X3NlbnNpdGl2ZSA/IHRoaXMuY3NzX3NzIDogIiIpICsgIjwvc3R5bGU+IgogICAgICApOwoKICAgICAgLy8g6K6+572uTXV0YXRpb25PYnNlcnZlcuinguWvn+aWh+aho+WPmOWMlgogICAgICBsZXQgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXMpID0+CiAgICAgICAgbXMuZm9yRWFjaCgobSkgPT4gbS5hZGRlZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHRoaXMuZGV0ZWN0KG5vZGUpKSkKICAgICAgKTsKICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsgLy8g5byA5aeL6KeC5a+fCiAgICB9LAogICAgLyoqCiAqIOajgOa1i+e7meWumueahOiKgueCueaYr+WQpuWMheWQq+mcgOimgea3u+WKoOaMiemSrueahOWFg+e0oOOAggogKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0g6ZyA6KaB6KKr5qOA5rWL55qERE9N6IqC54K544CCCiAqLwogICAgZGV0ZWN0OiBmdW5jdGlvbiAobm9kZSkgewogICAgICAvLyDlsJ3or5XmoLnmja7oioLngrnmoIfnrb7pgInmi6nlkIjpgILnmoRhcnRpY2xl5YWD57Sg77yM5oiW6ICF5Zyo5b2T5YmN6IqC54K55oiW5YW254i26IqC54K55Lit5p+l5om+YXJ0aWNsZeWFg+e0oAogICAgICBsZXQgYXJ0aWNsZSA9CiAgICAgICAgKG5vZGUudGFnTmFtZSA9PSAiQVJUSUNMRSIgJiYgbm9kZSkgfHwKICAgICAgICAobm9kZS50YWdOYW1lID09ICJESVYiICYmCiAgICAgICAgICAobm9kZS5xdWVyeVNlbGVjdG9yKCJhcnRpY2xlIikgfHwgbm9kZS5jbG9zZXN0KCJhcnRpY2xlIikpKTsKICAgICAgLy8g5aaC5p6c5om+5YiwYXJ0aWNsZeWFg+e0oO+8jOS4uuWFtua3u+WKoOaMiemSrgogICAgICBpZiAoYXJ0aWNsZSkgdGhpcy5hZGRCdXR0b25UbyhhcnRpY2xlKTsKCiAgICAgIC8vIOagueaNruiKgueCueagh+etvumAieaLqeWQiOmAgueahGxpc3RpdGVt5YWD57Sg6ZuG5ZCI77yM5oiW6ICF5Zyo5b2T5YmN6IqC54K55Lit5p+l5om+56ym5ZCI6KaB5rGC55qEbGlzdGl0ZW3lhYPntKAKICAgICAgbGV0IGxpc3RpdGVtcyA9CiAgICAgICAgKG5vZGUudGFnTmFtZSA9PSAiTEkiICYmCiAgICAgICAgICBub2RlLmdldEF0dHJpYnV0ZSgicm9sZSIpID09ICJsaXN0aXRlbSIgJiYgW25vZGVdKSB8fAogICAgICAgIChub2RlLnRhZ05hbWUgPT0gIkRJViIgJiYgbm9kZS5xdWVyeVNlbGVjdG9yQWxsKCdsaVtyb2xlPSJsaXN0aXRlbSJdJykpOwogICAgICAvLyDlpoLmnpzmib7liLBsaXN0aXRlbeWFg+e0oOmbhuWQiO+8jOS4uuWFtuS4reeahOWqkuS9k+WFg+e0oOa3u+WKoOaMiemSrgogICAgICBpZiAobGlzdGl0ZW1zKSB0aGlzLmFkZEJ1dHRvblRvTWVkaWEobGlzdGl0ZW1zKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiDkuLrmjIflrprnmoRhcnRpY2xl5YWD57Sg5re75Yqg5LiL6L295oyJ6ZKu44CCCiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBhcnRpY2xlIC0g6ZyA6KaB5re75Yqg5oyJ6ZKu55qEYXJ0aWNsZeWFg+e0oOOAggogICAgICovCiAgICBhZGRCdXR0b25UbzogZnVuY3Rpb24gKGFydGljbGUpIHsKICAgICAgLy8g5aaC5p6c6K+l5YWD57Sg5bey57uP5re75Yqg6L+H5oyJ6ZKu77yM5YiZ55u05o6l6L+U5ZueCiAgICAgIGlmIChhcnRpY2xlLmRhdGFzZXQuZGV0ZWN0ZWQpIHJldHVybjsKICAgICAgYXJ0aWNsZS5kYXRhc2V0LmRldGVjdGVkID0gInRydWUiOwoKICAgICAgLy8g5a6a5LmJ55So5LqO6YCJ5oup5aqS5L2T5YWD57Sg55qEc2VsZWN0b3IKICAgICAgbGV0IG1lZGlhX3NlbGVjdG9yID0gWwogICAgICAgICdhW2hyZWYqPSIvcGhvdG8vMSJdJywKICAgICAgICAnZGl2W3JvbGU9InByb2dyZXNzYmFyIl0nLAogICAgICAgICdkaXZbZGF0YS10ZXN0aWQ9InBsYXlCdXR0b24iXScsCiAgICAgICAgJ2FbaHJlZj0iL3NldHRpbmdzL2NvbnRlbnRfeW91X3NlZSJdJywgLy8g6ZqQ6JeP55qE5YaF5a65CiAgICAgICAgImRpdi5tZWRpYS1pbWFnZS1jb250YWluZXIiLCAvLyDnlKjkuo5Ud2VldERlY2sKICAgICAgICAiZGl2Lm1lZGlhLXByZXZpZXctY29udGFpbmVyIiwgLy8g55So5LqOVHdlZXREZWNrCiAgICAgICAgJ2RpdlthcmlhLWxhYmVsbGVkYnldPmRpdjpmaXJzdC1jaGlsZD5kaXZbcm9sZT0iYnV0dG9uIl1bdGFiaW5kZXg9IjAiXScsIC8vIOeUqOS6jumfs+mike+8iOWunumqjOaAp++8iQogICAgICBdOwoKICAgICAgLy8g5ZyoYXJ0aWNsZeWFg+e0oOS4reafpeaJvuesrOS4gOS4quWMuemFjeeahOWqkuS9k+WFg+e0oAogICAgICBsZXQgbWVkaWEgPSBhcnRpY2xlLnF1ZXJ5U2VsZWN0b3IobWVkaWFfc2VsZWN0b3Iuam9pbigiLCIpKTsKICAgICAgaWYgKG1lZGlhKSB7CiAgICAgICAgLy8g5o+Q5Y+W5o6o5paHSUQKICAgICAgICBsZXQgc3RhdHVzX2lkID0gYXJ0aWNsZQogICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ2FbaHJlZio9Ii9zdGF0dXMvIl0nKQogICAgICAgICAgLmhyZWYuc3BsaXQoIi9zdGF0dXMvIikKICAgICAgICAgIC5wb3AoKQogICAgICAgICAgLnNwbGl0KCIvIikKICAgICAgICAgIC5zaGlmdCgpOwoKICAgICAgICAvLyDmn6Xmib7mjInpkq7nu4TmiJbogIXliIbkuqvmjInpkq7nmoTkvY3nva4KICAgICAgICBsZXQgYnRuX2dyb3VwID0gYXJ0aWNsZS5xdWVyeVNlbGVjdG9yKAogICAgICAgICAgJ2Rpdltyb2xlPSJncm91cCJdOmxhc3Qtb2YtdHlwZSwgdWwudHdlZXQtYWN0aW9ucywgdWwudHdlZXQtZGV0YWlsLWFjdGlvbnMnCiAgICAgICAgKTsKICAgICAgICBsZXQgYnRuX3NoYXJlID0gQXJyYXkuZnJvbSgKICAgICAgICAgIGJ0bl9ncm91cC5xdWVyeVNlbGVjdG9yQWxsKAogICAgICAgICAgICAiOnNjb3BlPmRpdj5kaXYsIGxpLnR3ZWV0LWFjdGlvbi1pdGVtPmEsIGxpLnR3ZWV0LWRldGFpbC1hY3Rpb24taXRlbT5hIgogICAgICAgICAgKQogICAgICAgICkucG9wKCkucGFyZW50Tm9kZTsKCiAgICAgICAgLy8g5YWL6ZqG5YiG5Lqr5oyJ6ZKu5bm25L+u5pS55Li65LiL6L295oyJ6ZKuCiAgICAgICAgbGV0IGJ0bl9kb3duID0gYnRuX3NoYXJlLmNsb25lTm9kZSh0cnVlKTsKICAgICAgICBpZiAoaXNfdHdlZXRkZWNrKSB7CiAgICAgICAgICBidG5fZG93bi5maXJzdEVsZW1lbnRDaGlsZC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyI+JyArCiAgICAgICAgICAgIHRoaXMuc3ZnICsKICAgICAgICAgICAgIjwvc3ZnPiI7CiAgICAgICAgICBidG5fZG93bi5maXJzdEVsZW1lbnRDaGlsZC5yZW1vdmVBdHRyaWJ1dGUoInJlbCIpOwogICAgICAgICAgYnRuX2Rvd24uY2xhc3NMaXN0LnJlcGxhY2UoInB1bGwtbGVmdCIsICJwdWxsLXJpZ2h0Iik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJ0bl9kb3duLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpLmlubmVySFRNTCA9IHRoaXMuc3ZnOwogICAgICAgIH0KCiAgICAgICAgLy8g5Yik5pat5piv5ZCm5bey57uP5LiL6L29CiAgICAgICAgbGV0IGlzX2V4aXN0ID0gaGlzdG9yeS5pbmRleE9mKHN0YXR1c19pZCkgPj0gMDsKICAgICAgICAvLyDorr7nva7mjInpkq7nirbmgIEKICAgICAgICB0aGlzLnN0YXR1cyhidG5fZG93biwgInRtZC1kb3duIik7CiAgICAgICAgdGhpcy5zdGF0dXMoCiAgICAgICAgICBidG5fZG93biwKICAgICAgICAgIGlzX2V4aXN0ID8gImNvbXBsZXRlZCIgOiAiZG93bmxvYWQiLAogICAgICAgICAgaXNfZXhpc3QgPyBsYW5nLmNvbXBsZXRlZCA6IGxhbmcuZG93bmxvYWQKICAgICAgICApOwoKICAgICAgICAvLyDlnKjmjInpkq7nu4TkuK3mj5LlhaXkuIvovb3mjInpkq4KICAgICAgICBidG5fZ3JvdXAuaW5zZXJ0QmVmb3JlKGJ0bl9kb3duLCBidG5fc2hhcmUubmV4dFNpYmxpbmcpOwogICAgICAgIC8vIOiuvue9ruaMiemSrueCueWHu+S6i+S7tgogICAgICAgIGJ0bl9kb3duLm9uY2xpY2sgPSAoKSA9PiB0aGlzLmNsaWNrKGJ0bl9kb3duLCBzdGF0dXNfaWQsIGlzX2V4aXN0KTsKCiAgICAgICAgLy8g5aaC5p6c5pi+56S65pWP5oSf5YaF5a6577yM6Ieq5Yqo54K55Ye75pi+56S65pWP5oSf5YaF5a6555qE5oyJ6ZKuCiAgICAgICAgaWYgKHNob3dfc2Vuc2l0aXZlKSB7CiAgICAgICAgICBsZXQgYnRuX3Nob3cgPSBhcnRpY2xlLnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgICAgICdkaXZbYXJpYS1sYWJlbGxlZGJ5XSBkaXZbcm9sZT0iYnV0dG9uIl1bdGFiaW5kZXg9IjAiXTpub3QoW2RhdGEtdGVzdGlkXSkgPiBkaXZbZGlyXSA+IHNwYW4gPiBzcGFuJwogICAgICAgICAgKTsKICAgICAgICAgIGlmIChidG5fc2hvdykgYnRuX3Nob3cuY2xpY2soKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIOS4uuavj+S4queFp+eJh+mTvuaOpea3u+WKoOS4i+i9veaMiemSru+8iOmAgueUqOS6juWMheWQq+WkmuW8oOeFp+eJh+eahOaDheWGte+8iQogICAgICBsZXQgaW1ncyA9IGFydGljbGUucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmKj0iL3Bob3RvLyJdJyk7CiAgICAgIGlmIChpbWdzLmxlbmd0aCA+IDEpIHsKICAgICAgICBsZXQgc3RhdHVzX2lkID0gYXJ0aWNsZQogICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ2FbaHJlZio9Ii9zdGF0dXMvIl0nKQogICAgICAgICAgLmhyZWYuc3BsaXQoIi9zdGF0dXMvIikKICAgICAgICAgIC5wb3AoKQogICAgICAgICAgLnNwbGl0KCIvIikKICAgICAgICAgIC5zaGlmdCgpOwogICAgICAgIGxldCBidG5fZ3JvdXAgPSBhcnRpY2xlLnF1ZXJ5U2VsZWN0b3IoJ2Rpdltyb2xlPSJncm91cCJdOmxhc3Qtb2YtdHlwZScpOwogICAgICAgIGxldCBidG5fc2hhcmUgPSBBcnJheS5mcm9tKAogICAgICAgICAgYnRuX2dyb3VwLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZT5kaXY+ZGl2IikKICAgICAgICApLnBvcCgpLnBhcmVudE5vZGU7CgogICAgICAgIGltZ3MuZm9yRWFjaCgoaW1nKSA9PiB7CiAgICAgICAgICAvLyDmj5Dlj5bnhafniYfnmoTntKLlvJXlj7cKICAgICAgICAgIGxldCBpbmRleCA9IGltZy5ocmVmLnNwbGl0KCIvc3RhdHVzLyIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCk7CiAgICAgICAgICAvLyDliKTmlq3mmK/lkKblt7Lnu4/kuIvovb0KICAgICAgICAgIGxldCBpc19leGlzdCA9IGhpc3RvcnkuaW5kZXhPZihzdGF0dXNfaWQpID49IDA7CiAgICAgICAgICBsZXQgYnRuX2Rvd24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgIGJ0bl9kb3duLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2PjxkaXY+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyI+JyArCiAgICAgICAgICAgIHRoaXMuc3ZnICsKICAgICAgICAgICAgIjwvc3ZnPjwvZGl2PjwvZGl2PiI7CiAgICAgICAgICBidG5fZG93bi5jbGFzc0xpc3QuYWRkKCJ0bWQtZG93biIsICJ0bWQtaW1nIik7CiAgICAgICAgICAvLyDorr7nva7mjInpkq7nirbmgIHkuLrkuIvovb0KICAgICAgICAgIHRoaXMuc3RhdHVzKGJ0bl9kb3duLCAiZG93bmxvYWQiKTsKICAgICAgICAgIGltZy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGJ0bl9kb3duKTsKICAgICAgICAgIC8vIOiuvue9ruaMiemSrueCueWHu+S6i+S7tgogICAgICAgICAgYnRuX2Rvd24ub25jbGljayA9IChlKSA9PiB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgdGhpcy5jbGljayhidG5fZG93biwgc3RhdHVzX2lkLCBpc19leGlzdCwgaW5kZXgpOwogICAgICAgICAgfTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICog5ZCR5aqS5L2T5YiX6KGo6aG55Lit5re75Yqg5LiL6L295oyJ6ZKuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBsaXN0aXRlbXMgLSDlqpLkvZPliJfooajpobnnmoTmlbDnu4QKICAgICAqLwogICAgYWRkQnV0dG9uVG9NZWRpYTogZnVuY3Rpb24gKGxpc3RpdGVtcykgewogICAgICBsaXN0aXRlbXMuZm9yRWFjaCgobGkpID0+IHsKICAgICAgICAvLyDlpoLmnpzlvZPliY3liJfooajpobnlt7Lnu4/ooqvmo4DmtYvov4fvvIzliJnot7Pov4cKICAgICAgICBpZiAobGkuZGF0YXNldC5kZXRlY3RlZCkgcmV0dXJuOwogICAgICAgIGxpLmRhdGFzZXQuZGV0ZWN0ZWQgPSAidHJ1ZSI7CgogICAgICAgIC8vIOaPkOWPlueKtuaAgUlECiAgICAgICAgbGV0IHN0YXR1c19pZCA9IGxpCiAgICAgICAgICAucXVlcnlTZWxlY3RvcignYVtocmVmKj0iL3N0YXR1cy8iXScpCiAgICAgICAgICAuaHJlZi5zcGxpdCgiL3N0YXR1cy8iKQogICAgICAgICAgLnBvcCgpCiAgICAgICAgICAuc3BsaXQoIi8iKQogICAgICAgICAgLnNoaWZ0KCk7CgogICAgICAgIC8vIOajgOafpeWOhuWPsuiusOW9leS4reaYr+WQpuW3sue7j+WtmOWcqOivpeeKtuaAgUlECiAgICAgICAgbGV0IGlzX2V4aXN0ID0gaGlzdG9yeS5pbmRleE9mKHN0YXR1c19pZCkgPj0gMDsKCiAgICAgICAgLy8g5Yib5bu65LiL6L295oyJ6ZKu5YWD57SgCiAgICAgICAgbGV0IGJ0bl9kb3duID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgYnRuX2Rvd24uaW5uZXJIVE1MID0KICAgICAgICAgICc8ZGl2PjxkaXY+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyI+JyArCiAgICAgICAgICB0aGlzLnN2ZyArCiAgICAgICAgICAiPC9zdmc+PC9kaXY+PC9kaXY+IjsKICAgICAgICBidG5fZG93bi5jbGFzc0xpc3QuYWRkKCJ0bWQtZG93biIsICJ0bWQtbWVkaWEiKTsKCiAgICAgICAgLy8g6K6+572u5oyJ6ZKu54q25oCB77yM5bey5a2Y5Zyo5YiZ5Li65a6M5oiQ77yM5ZCm5YiZ5Li65LiL6L29CiAgICAgICAgdGhpcy5zdGF0dXMoCiAgICAgICAgICBidG5fZG93biwKICAgICAgICAgIGlzX2V4aXN0ID8gImNvbXBsZXRlZCIgOiAiZG93bmxvYWQiLAogICAgICAgICAgaXNfZXhpc3QgPyBsYW5nLmNvbXBsZXRlZCA6IGxhbmcuZG93bmxvYWQKICAgICAgICApOwoKICAgICAgICAvLyDlsIbmjInpkq7mt7vliqDliLDliJfooajpobnkuK0KICAgICAgICBsaS5hcHBlbmRDaGlsZChidG5fZG93bik7CgogICAgICAgIC8vIOiuvue9ruaMiemSrueCueWHu+S6i+S7tuWkhOeQhuWHveaVsAogICAgICAgIGJ0bl9kb3duLm9uY2xpY2sgPSAoKSA9PiB0aGlzLmNsaWNrKGJ0bl9kb3duLCBzdGF0dXNfaWQsIGlzX2V4aXN0KTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAqIOeCueWHu+aMiemSruaXtueahOWkhOeQhuWHveaVsO+8jOeUqOS6juS4i+i9veaOqOaWh+eahOebuOWFs+S/oeaBr+WSjOWqkuS9k+aWh+S7tuOAggogKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBidG4g6KKr54K55Ye755qE5oyJ6ZKu5YWD57Sg44CCCiAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXNfaWQg5o6o5paH55qESUTjgIIKICogQHBhcmFtIHtib29sZWFufSBpc19leGlzdCDooajnpLror6XmjqjmlofmmK/lkKblt7LlrZjlnKjkuo7ljoblj7LorrDlvZXkuK3jgIIKICogQHBhcmFtIHtudW1iZXJ9IFtpbmRleF0g5aqS5L2T5paH5Lu255qE57Si5byV77yM55So5LqO5LiL6L2954m55a6a55qE5aqS5L2T5paH5Lu277yI5Y+v6YCJ77yJ44CCCiAqLwogICAgY2xpY2s6IGFzeW5jIGZ1bmN0aW9uIChidG4sIHN0YXR1c19pZCwgaXNfZXhpc3QsIGluZGV4KSB7CiAgICAgIC8vIOWmguaenOaMiemSruato+WcqOWKoOi9veS4re+8jOWImeS4jeaJp+ihjOS7u+S9leaTjeS9nAogICAgICBpZiAoYnRuLmNsYXNzTGlzdC5jb250YWlucygibG9hZGluZyIpKSByZXR1cm47CiAgICAgIC8vIOiuvue9ruaMiemSrueKtuaAgeS4uuWKoOi9veS4rQogICAgICB0aGlzLnN0YXR1cyhidG4sICJsb2FkaW5nIik7CiAgICAgIC8vIOS7juWtmOWCqOS4reiOt+WPluaWh+S7tuWQje+8jOW5tuenu+mZpOaNouihjOespgogICAgICBsZXQgb3V0ID0gKGF3YWl0IEdNX2dldFZhbHVlKCJmaWxlbmFtZSIsIGZpbGVuYW1lKSkuc3BsaXQoIlxuIikuam9pbigiIik7CiAgICAgIC8vIOiOt+WPluaYr+WQpuS/neWtmOWOhuWPsuiusOW9leeahOiuvue9rgogICAgICBsZXQgc2F2ZV9oaXN0b3J5ID0gYXdhaXQgR01fZ2V0VmFsdWUoInNhdmVfaGlzdG9yeSIsIHRydWUpOwogICAgICAvLyDojrflj5bmjqjmlofnmoRKU09O5pWw5o2uCiAgICAgIGxldCBqc29uID0gYXdhaXQgdGhpcy5mZXRjaEpzb24oc3RhdHVzX2lkKTsKICAgICAgLy8g6Kej5p6Q5o6o5paH5ZKM55So5oi35L+h5oGvCiAgICAgIGxldCB0d2VldCA9IGpzb24ubGVnYWN5OwogICAgICBsZXQgdXNlciA9IGpzb24uY29yZS51c2VyX3Jlc3VsdHMucmVzdWx0LmxlZ2FjeTsKICAgICAgLy8g5a6a5LmJ5peg5pWI5a2X56ym5Y+K5YW25pu/5o2i5a2X56ymCiAgICAgIGxldCBpbnZhbGlkX2NoYXJzID0gewogICAgICAgICJcXCI6ICLvvLwiLAogICAgICAgICIvIjogIu+8jyIsCiAgICAgICAgInwiOiAi772cIiwKICAgICAgICAiPCI6ICLvvJwiLAogICAgICAgICI+IjogIu+8niIsCiAgICAgICAgIjoiOiAi77yaIiwKICAgICAgICAiKiI6ICLvvIoiLAogICAgICAgICI/IjogIu+8nyIsCiAgICAgICAgJyInOiAi77yCIiwKICAgICAgICAiXHUyMDBiIjogIiIsCiAgICAgICAgIlx1MjAwYyI6ICIiLAogICAgICAgICJcdTIwMGQiOiAiIiwKICAgICAgICAiXHUyMDYwIjogIiIsCiAgICAgICAgIlx1ZmVmZiI6ICIiLAogICAgICAgICLwn5SeIjogIiIsCiAgICAgIH07CiAgICAgIC8vIOino+aekOaIluiuvuWumuaXpeacn+aXtumXtOagvOW8jwogICAgICBsZXQgZGF0ZXRpbWUgPSBvdXQubWF0Y2goL3tkYXRlLXRpbWUoLWxvY2FsKT86W157fV0rfS8pCiAgICAgICAgPyBvdXQKICAgICAgICAgIC5tYXRjaCgve2RhdGUtdGltZSg/Oi1sb2NhbCk/OihbXnt9XSspfS8pWzFdCiAgICAgICAgICAucmVwbGFjZSgvW1xcL3w8Pio/OiJdL2csICh2KSA9PiBpbnZhbGlkX2NoYXJzW3ZdKQogICAgICAgIDogIllZWVktTU0tREQgaGgtbW0tc3MiOwogICAgICAvLyDlh4blpIflrZjlgqjkv6Hmga/nmoTlr7nosaEKICAgICAgbGV0IGluZm8gPSB7fTsKICAgICAgLy8g5aGr5YWF5L+h5oGv5a+56LGh77yM5YyF5ous5o6o5paHSUTjgIHnlKjmiLflkI3jgIHnlKjmiLdJROOAgeaXpeacn+aXtumXtOetiQogICAgICBpbmZvWyJzdGF0dXMtaWQiXSA9IHN0YXR1c19pZDsKICAgICAgaW5mb1sidXNlci1uYW1lIl0gPSB1c2VyLm5hbWUucmVwbGFjZSgKICAgICAgICAvKFtcXC98Kj86Il18W1x1MjAwYi1cdTIwMGRcdTIwNjBcdWZlZmZdfPCflJ4pL2csCiAgICAgICAgKHYpID0+IGludmFsaWRfY2hhcnNbdl0KICAgICAgKTsKICAgICAgaW5mb1sidXNlci1pZCJdID0gdXNlci5zY3JlZW5fbmFtZTsKICAgICAgaW5mb1siZGF0ZS10aW1lIl0gPSB0aGlzLmZvcm1hdERhdGUodHdlZXQuY3JlYXRlZF9hdCwgZGF0ZXRpbWUpOwogICAgICBpbmZvWyJkYXRlLXRpbWUtbG9jYWwiXSA9IHRoaXMuZm9ybWF0RGF0ZSgKICAgICAgICB0d2VldC5jcmVhdGVkX2F0LAogICAgICAgIGRhdGV0aW1lLAogICAgICAgIHRydWUKICAgICAgKTsKICAgICAgLy8g5aSE55CG5o6o5paH55qE5a6M5pW05paH5pys77yM56e76ZmkVVJM77yM5pu/5o2i5peg5pWI5a2X56ymCiAgICAgIGluZm9bImZ1bGwtdGV4dCJdID0gdHdlZXQuZnVsbF90ZXh0CiAgICAgICAgLnNwbGl0KCJcbiIpCiAgICAgICAgLmpvaW4oIiAiKQogICAgICAgIC5yZXBsYWNlKC9ccypodHRwczpcL1wvdFwuY29cL1x3Ky9nLCAiIikKICAgICAgICAucmVwbGFjZSgKICAgICAgICAgIC9bXFwvfDw+Kj86Il18W1x1MjAwYi1cdTIwMGRcdTIwNjBcdWZlZmZdL2csCiAgICAgICAgICAodikgPT4gaW52YWxpZF9jaGFyc1t2XQogICAgICAgICk7CiAgICAgIC8vIOWkhOeQhuaOqOaWh+S4reeahOWqkuS9k+aWh+S7tgogICAgICBsZXQgbWVkaWFzID0gdHdlZXQuZXh0ZW5kZWRfZW50aXRpZXMgJiYgdHdlZXQuZXh0ZW5kZWRfZW50aXRpZXMubWVkaWE7CiAgICAgIGlmIChpbmRleCkgbWVkaWFzID0gW21lZGlhc1tpbmRleCAtIDFdXTsKICAgICAgaWYgKG1lZGlhcy5sZW5ndGggPiAwKSB7CiAgICAgICAgLy8g5a+55q+P5Liq5aqS5L2T5paH5Lu25omn6KGM5LiL6L295pON5L2cCiAgICAgICAgbGV0IHRhc2tzID0gbWVkaWFzLmxlbmd0aDsKICAgICAgICBsZXQgdGFza3NfcmVzdWx0ID0gW107CiAgICAgICAgbWVkaWFzLmZvckVhY2goKG1lZGlhLCBpKSA9PiB7CiAgICAgICAgICAvLyDmj5Dlj5blqpLkvZPmlofku7bnmoTkuIvovb1VUkzlkoznm7jlhbPkv6Hmga8KICAgICAgICAgIGluZm8udXJsID0KICAgICAgICAgICAgbWVkaWEudHlwZSA9PSAicGhvdG8iCiAgICAgICAgICAgICAgPyBtZWRpYS5tZWRpYV91cmxfaHR0cHMgKyAiOm9yaWciCiAgICAgICAgICAgICAgOiBtZWRpYS52aWRlb19pbmZvLnZhcmlhbnRzCiAgICAgICAgICAgICAgICAuZmlsdGVyKChuKSA9PiBuLmNvbnRlbnRfdHlwZSA9PSAidmlkZW8vbXA0IikKICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmJpdHJhdGUgLSBhLmJpdHJhdGUpWzBdLnVybDsKICAgICAgICAgIGluZm8uZmlsZSA9IGluZm8udXJsLnNwbGl0KCIvIikucG9wKCkuc3BsaXQoL1s6P10vKS5zaGlmdCgpOwogICAgICAgICAgaW5mb1siZmlsZS1uYW1lIl0gPSBpbmZvLmZpbGUuc3BsaXQoIi4iKS5zaGlmdCgpOwogICAgICAgICAgaW5mb1siZmlsZS1leHQiXSA9IGluZm8uZmlsZS5zcGxpdCgiLiIpLnBvcCgpOwogICAgICAgICAgaW5mb1siZmlsZS10eXBlIl0gPSBtZWRpYS50eXBlLnJlcGxhY2UoImFuaW1hdGVkXyIsICIiKTsKICAgICAgICAgIC8vIOaehOmAoOi+k+WHuuaWh+S7tuWQjQogICAgICAgICAgaW5mby5vdXQgPSAoCiAgICAgICAgICAgIG91dC5yZXBsYWNlKC9cLj97ZmlsZS1leHR9LywgIiIpICsKICAgICAgICAgICAgKChtZWRpYXMubGVuZ3RoID4gMSB8fCBpbmRleCkgJiYgIW91dC5tYXRjaCgie2ZpbGUtbmFtZX0iKQogICAgICAgICAgICAgID8gIi0iICsgKGluZGV4ID8gaW5kZXggLSAxIDogaSkKICAgICAgICAgICAgICA6ICIiKSArCiAgICAgICAgICAgICIue2ZpbGUtZXh0fSIKICAgICAgICAgICkucmVwbGFjZSgveyhbXnt9Ol0rKSg6W157fV0rKT99L2csIChtYXRjaCwgbmFtZSkgPT4gaW5mb1tuYW1lXSk7CiAgICAgICAgICAvLyDmt7vliqDkuIvovb3ku7vliqEKICAgICAgICAgIHRoaXMuZG93bmxvYWRlci5hZGQoewogICAgICAgICAgICB1cmw6IGluZm8udXJsLAogICAgICAgICAgICBuYW1lOiBpbmZvLm91dCwKICAgICAgICAgICAgb25sb2FkOiAoKSA9PiB7CiAgICAgICAgICAgICAgdGFza3MgLT0gMTsKICAgICAgICAgICAgICB0YXNrc19yZXN1bHQucHVzaCgKICAgICAgICAgICAgICAgIChtZWRpYXMubGVuZ3RoID4gMSB8fCBpbmRleAogICAgICAgICAgICAgICAgICA/IChpbmRleCA/IGluZGV4IDogaSArIDEpICsgIjogIgogICAgICAgICAgICAgICAgICA6ICIiKSArIGxhbmcuY29tcGxldGVkCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAvLyDmm7TmlrDmjInpkq7nirbmgIEKICAgICAgICAgICAgICB0aGlzLnN0YXR1cyhidG4sIG51bGwsIHRhc2tzX3Jlc3VsdC5zb3J0KCkuam9pbigiXG4iKSk7CiAgICAgICAgICAgICAgaWYgKHRhc2tzID09PSAwKSB7CiAgICAgICAgICAgICAgICAvLyDmiYDmnInku7vliqHlrozmiJDlkI7vvIzmm7TmlrDmjInpkq7nirbmgIHkuLrlrozmiJDvvIzlubbkv53lrZjljoblj7LorrDlvZUKICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzKGJ0biwgImNvbXBsZXRlZCIsIGxhbmcuY29tcGxldGVkKTsKICAgICAgICAgICAgICAgIGlmIChzYXZlX2hpc3RvcnkgJiYgIWlzX2V4aXN0KSB7CiAgICAgICAgICAgICAgICAgIGhpc3RvcnkucHVzaChzdGF0dXNfaWQpOwogICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uoc3RhdHVzX2lkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uZXJyb3I6IChyZXN1bHQpID0+IHsKICAgICAgICAgICAgICB0YXNrcyA9IC0xOwogICAgICAgICAgICAgIHRhc2tzX3Jlc3VsdC5wdXNoKAogICAgICAgICAgICAgICAgKG1lZGlhcy5sZW5ndGggPiAxID8gaSArIDEgKyAiOiAiIDogIiIpICsgcmVzdWx0LmRldGFpbHMuY3VycmVudAogICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgLy8g5LiL6L295aSx6LSl5pe25pu05paw5oyJ6ZKu54q25oCBCiAgICAgICAgICAgICAgdGhpcy5zdGF0dXMoYnRuLCAiZmFpbGVkIiwgdGFza3NfcmVzdWx0LnNvcnQoKS5qb2luKCJcbiIpKTsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIOWmguaenOayoeacieaJvuWIsOWqkuS9k+aWh+S7tu+8jOabtOaWsOaMiemSrueKtuaAgeS4uuWksei0pQogICAgICAgIHRoaXMuc3RhdHVzKGJ0biwgImZhaWxlZCIsICJNRURJQV9OT1RfRk9VTkQiKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogKiDmm7TmlrDmjInpkq7nirbmgIHjgIIKICogQHBhcmFtIHtIVE1MRWxlbWVudH0gYnRuIC0g6KaB5pu05paw54q25oCB55qE5oyJ6ZKu5YWD57Sg44CCCiAqIEBwYXJhbSB7c3RyaW5nfSBjc3MgLSDopoHmt7vliqDnmoRDU1PnsbvvvIjlj6/pgInvvInjgIIKICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0g5oyJ6ZKu55qE5qCH6aKY77yI5Y+v6YCJ77yJ44CCCiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZSAtIOimgeebtOaOpeW6lOeUqOWIsOaMiemSrueahOWGheiBlOagt+W8j++8iOWPr+mAie+8ieOAggogKi8KICAgIHN0YXR1czogZnVuY3Rpb24gKGJ0biwgY3NzLCB0aXRsZSwgc3R5bGUpIHsKICAgICAgLy8g5aaC5p6c5o+Q5L6b5LqGQ1NT57G777yM5YiZ56e76Zmk5pen55qE57G75bm25re75Yqg5paw55qE57G7CiAgICAgIGlmIChjc3MpIHsKICAgICAgICBidG4uY2xhc3NMaXN0LnJlbW92ZSgiZG93bmxvYWQiLCAiY29tcGxldGVkIiwgImxvYWRpbmciLCAiZmFpbGVkIik7CiAgICAgICAgYnRuLmNsYXNzTGlzdC5hZGQoY3NzKTsKICAgICAgfQogICAgICAvLyDlpoLmnpzmj5DkvpvkuobmoIfpopjvvIzliJnmm7TmlrDmjInpkq7nmoTmoIfpopgKICAgICAgaWYgKHRpdGxlKSBidG4udGl0bGUgPSB0aXRsZTsKICAgICAgLy8g5aaC5p6c5o+Q5L6b5LqG5qC35byP77yM5YiZ5pu05paw5oyJ6ZKu55qE5YaF6IGU5qC35byPCiAgICAgIGlmIChzdHlsZSkgYnRuLnN0eWxlLmNzc1RleHQgPSBzdHlsZTsKICAgIH0sCgogICAgLyoqCiAgICAgKiDlvLnlh7rorr7nva7lr7nor53moYbjgIIKICAgICAqLwogICAgc2V0dGluZ3M6IGFzeW5jIGZ1bmN0aW9uICgpIHsKICAgICAgLy8g5Yib5bu65YWD57Sg55qE5bel5YW35Ye95pWwCiAgICAgIGNvbnN0ICRlbGVtZW50ID0gKHBhcmVudCwgdGFnLCBzdHlsZSwgY29udGVudCwgY3NzKSA9PiB7CiAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgICAgIGlmIChzdHlsZSkgZWwuc3R5bGUuY3NzVGV4dCA9IHN0eWxlOwogICAgICAgIGlmICh0eXBlb2YgY29udGVudCAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgIGlmICh0YWcgPT0gImlucHV0IikgewogICAgICAgICAgICBpZiAoY29udGVudCA9PSAiY2hlY2tib3giKSBlbC50eXBlID0gY29udGVudDsKICAgICAgICAgICAgZWxzZSBlbC52YWx1ZSA9IGNvbnRlbnQ7CiAgICAgICAgICB9IGVsc2UgZWwuaW5uZXJIVE1MID0gY29udGVudDsKICAgICAgICB9CiAgICAgICAgaWYgKGNzcykgY3NzLnNwbGl0KCIgIikuZm9yRWFjaCgoYykgPT4gZWwuY2xhc3NMaXN0LmFkZChjKSk7CiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsKTsKICAgICAgICByZXR1cm4gZWw7CiAgICAgIH07CgogICAgICAvLyDliJvlu7rorr7nva7lr7nor53moYbnmoTlrrnlmajlkozln7rmnKzmoLflvI8KICAgICAgbGV0IHdhcHBlciA9ICRlbGVtZW50KAogICAgICAgIGRvY3VtZW50LmJvZHksCiAgICAgICAgImRpdiIsCiAgICAgICAgInBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMHB4OyB0b3A6IDBweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDk7IHotaW5kZXg6IDEwOyIsCiAgICAgICk7CgogICAgICAvLyDlpITnkIborr7nva7lr7nor53moYbnmoTlhbPpl63pgLvovpEKICAgICAgbGV0IHdhcHBlcl9jbG9zZTsKICAgICAgd2FwcGVyLm9ubW91c2Vkb3duID0gKGUpID0+IHsKICAgICAgICB3YXBwZXJfY2xvc2UgPSBlLnRhcmdldCA9PSB3YXBwZXI7CiAgICAgIH07CiAgICAgIHdhcHBlci5vbm1vdXNldXAgPSAoZSkgPT4gewogICAgICAgIGlmICh3YXBwZXJfY2xvc2UgJiYgZS50YXJnZXQgPT0gd2FwcGVyKSB3YXBwZXIucmVtb3ZlKCk7CiAgICAgIH07CgogICAgICAvLyDliJvlu7rlubborr7nva7lr7nor53moYblhoXlrrkKICAgICAgbGV0IGRpYWxvZyA9ICRlbGVtZW50KAogICAgICAgIHdhcHBlciwKICAgICAgICAiZGl2IiwKICAgICAgICAicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHRvcDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTsgd2lkdGg6IGZpdC1jb250ZW50OyB3aWR0aDogLW1vei1maXQtY29udGVudDsgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMzsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgYm9yZGVyLXJhZGl1czogMTBweDsgY29sb3I6IGJsYWNrOyIsCiAgICAgICk7CiAgICAgIC8vIOiuvue9ruWvueivneahhuagh+mimAogICAgICBsZXQgdGl0bGUgPSAkZWxlbWVudCgKICAgICAgICBkaWFsb2csCiAgICAgICAgImgzIiwKICAgICAgICAibWFyZ2luOiAxMHB4IDIwcHg7IiwKICAgICAgICBsYW5nLmRpYWxvZy50aXRsZQogICAgICApOwoKICAgICAgLy8g5Yib5bu66K6+572u6YCJ6aG5CiAgICAgIGxldCBvcHRpb25zID0gJGVsZW1lbnQoCiAgICAgICAgZGlhbG9nLAogICAgICAgICJkaXYiLAogICAgICAgICJtYXJnaW46IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IGJvcmRlci1yYWRpdXM6IDVweDsiLAogICAgICApOwoKICAgICAgLy8g5L+d5a2Y5Y6G5Y+y6K6w5b2V55qE6K6+572uCiAgICAgIGxldCBzYXZlX2hpc3RvcnlfbGFiZWwgPSAkZWxlbWVudCgKICAgICAgICBvcHRpb25zLAogICAgICAgICJsYWJlbCIsCiAgICAgICAgImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDEwcHg7IiwKICAgICAgICBsYW5nLmRpYWxvZy5zYXZlX2hpc3RvcnkKICAgICAgKTsKICAgICAgbGV0IHNhdmVfaGlzdG9yeV9pbnB1dCA9ICRlbGVtZW50KAogICAgICAgIHNhdmVfaGlzdG9yeV9sYWJlbCwKICAgICAgICAiaW5wdXQiLAogICAgICAgICJmbG9hdDogbGVmdDsiLAogICAgICAgICJjaGVja2JveCIKICAgICAgKTsKICAgICAgc2F2ZV9oaXN0b3J5X2lucHV0LmNoZWNrZWQgPSBhd2FpdCBHTV9nZXRWYWx1ZSgic2F2ZV9oaXN0b3J5IiwgdHJ1ZSk7CiAgICAgIHNhdmVfaGlzdG9yeV9pbnB1dC5vbmNoYW5nZSA9ICgpID0+IHsKICAgICAgICBHTV9zZXRWYWx1ZSgic2F2ZV9oaXN0b3J5Iiwgc2F2ZV9oaXN0b3J5X2lucHV0LmNoZWNrZWQpOwogICAgICB9OwoKICAgICAgLy8g5riF6Zmk5Y6G5Y+y6K6w5b2V55qE5oyJ6ZKuCiAgICAgIGxldCBjbGVhcl9oaXN0b3J5ID0gJGVsZW1lbnQoCiAgICAgICAgc2F2ZV9oaXN0b3J5X2xhYmVsLAogICAgICAgICJsYWJlbCIsCiAgICAgICAgImRpc3BsYXk6IGlubGluZS1ibG9jazsgbWFyZ2luOiAwIDEwcHg7IGNvbG9yOiBibHVlOyIsCiAgICAgICAgbGFuZy5kaWFsb2cuY2xlYXJfaGlzdG9yeQogICAgICApOwogICAgICBjbGVhcl9oaXN0b3J5Lm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgICAgaWYgKGNvbmZpcm0obGFuZy5kaWFsb2cuY2xlYXJfY29uZmlybSkpIHsKICAgICAgICAgIGhpc3RvcnkgPSBbXTsKICAgICAgICAgIEdNX3NldFZhbHVlKCJkb3dubG9hZF9oaXN0b3J5IiwgW10pOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIC8vIOaYvuekuuaVj+aEn+WGheWuueeahOiuvue9rgogICAgICBsZXQgc2hvd19zZW5zaXRpdmVfbGFiZWwgPSAkZWxlbWVudCgKICAgICAgICBvcHRpb25zLAogICAgICAgICJsYWJlbCIsCiAgICAgICAgImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDEwcHg7IiwKICAgICAgICBsYW5nLmRpYWxvZy5zaG93X3NlbnNpdGl2ZQogICAgICApOwogICAgICBsZXQgc2hvd19zZW5zaXRpdmVfaW5wdXQgPSAkZWxlbWVudCgKICAgICAgICBzaG93X3NlbnNpdGl2ZV9sYWJlbCwKICAgICAgICAiaW5wdXQiLAogICAgICAgICJmbG9hdDogbGVmdDsiLAogICAgICAgICJjaGVja2JveCIKICAgICAgKTsKICAgICAgc2hvd19zZW5zaXRpdmVfaW5wdXQuY2hlY2tlZCA9IGF3YWl0IEdNX2dldFZhbHVlKCJzaG93X3NlbnNpdGl2ZSIsIGZhbHNlKTsKICAgICAgc2hvd19zZW5zaXRpdmVfaW5wdXQub25jaGFuZ2UgPSAoKSA9PiB7CiAgICAgICAgc2hvd19zZW5zaXRpdmUgPSBzaG93X3NlbnNpdGl2ZV9pbnB1dC5jaGVja2VkOwogICAgICAgIEdNX3NldFZhbHVlKCJzaG93X3NlbnNpdGl2ZSIsIHNob3dfc2Vuc2l0aXZlKTsKICAgICAgfTsKCiAgICAgIC8vIOaWh+S7tuWQjeiuvue9rgogICAgICBsZXQgZmlsZW5hbWVfZGl2ID0gJGVsZW1lbnQoCiAgICAgICAgZGlhbG9nLAogICAgICAgICJkaXYiLAogICAgICAgICJtYXJnaW46IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IGJvcmRlci1yYWRpdXM6IDVweDsiLAogICAgICApOwogICAgICBsZXQgZmlsZW5hbWVfbGFiZWwgPSAkZWxlbWVudCgKICAgICAgICBmaWxlbmFtZV9kaXYsCiAgICAgICAgImxhYmVsIiwKICAgICAgICAiZGlzcGxheTogYmxvY2s7IG1hcmdpbjogMTBweCAxNXB4OyIsCiAgICAgICAgbGFuZy5kaWFsb2cucGF0dGVybgogICAgICApOwogICAgICBsZXQgZmlsZW5hbWVfaW5wdXQgPSAkZWxlbWVudCgKICAgICAgICBmaWxlbmFtZV9sYWJlbCwKICAgICAgICAidGV4dGFyZWEiLAogICAgICAgICJkaXNwbGF5OiBibG9jazsgbWluLXdpZHRoOiA1MDBweDsgbWF4LXdpZHRoOiA1MDBweDsgbWluLWhlaWdodDogMTAwcHg7IGZvbnQtc2l6ZTogaW5oZXJpdDsgYmFja2dyb3VuZDogd2hpdGU7IGNvbG9yOiBibGFjazsiLAogICAgICAgIGF3YWl0IEdNX2dldFZhbHVlKCJmaWxlbmFtZSIsIGZpbGVuYW1lKQogICAgICApOwoKICAgICAgLy8g5paH5Lu25ZCN5qCH562+5ZKM5Y2g5L2N56ymCiAgICAgIGxldCBmaWxlbmFtZV90YWdzID0gJGVsZW1lbnQoCiAgICAgICAgZmlsZW5hbWVfZGl2LAogICAgICAgICJsYWJlbCIsCiAgICAgICAgImRpc3BsYXk6IHRhYmxlOyBtYXJnaW46IDEwcHg7IiwKICAgICAgICBgCjxzcGFuIGNsYXNzPSJ0bWQtdGFnIiB0aXRsZT0idXNlciBuYW1lIj57dXNlci1uYW1lfTwvc3Bhbj4KPHNwYW4gY2xhc3M9InRtZC10YWciIHRpdGxlPSJUaGUgdXNlciBuYW1lIGFmdGVyIEAgc2lnbi4iPnt1c2VyLWlkfTwvc3Bhbj4KPHNwYW4gY2xhc3M9InRtZC10YWciIHRpdGxlPSJleGFtcGxlOiAxMjM0NTY3ODkwOTg3NjU0MzIxIj57c3RhdHVzLWlkfTwvc3Bhbj4KPHNwYW4gY2xhc3M9InRtZC10YWciIHRpdGxlPSJ7ZGF0ZS10aW1lfSA6IFBvc3RlZCB0aW1lIGluIFVUQy5cbntkYXRlLXRpbWUtbG9jYWx9IDogWW91ciBsb2NhbCB0aW1lIHpvbmUuXG5cbkRlZmF1bHQ6XG5ZWVlZTU1ERC1oaG1tc3MgPT4gMjAyMDEyMzEtMjM1OTU5XG5cbkV4YW1wbGUgb2YgY3VzdG9tOlxue2RhdGUtdGltZTpERC1NTU0tWVkgaGgubW19ID0+IDMxLURFQy0yMSAyMy41OSI+e2RhdGUtdGltZX08L3NwYW4+PGJyPgo8c3BhbiBjbGFzcz0idG1kLXRhZyIgdGl0bGU9IlRleHQgY29udGVudCBpbiB0d2VldC4iPntmdWxsLXRleHR9PC9zcGFuPgo8c3BhbiBjbGFzcz0idG1kLXRhZyIgdGl0bGU9IlR5cGUgb2YgJiMzNDt2aWRlbyYjMzQ7IG9yICYjMzQ7cGhvdG8mIzM0OyBvciAmIzM0O2dpZiYjMzQ7LiI+e2ZpbGUtdHlwZX08L3NwYW4+CjxzcGFuIGNsYXNzPSJ0bWQtdGFnIiB0aXRsZT0iT3JpZ2luYWwgZmlsZW5hbWUgZnJvbSBVUkwuIj57ZmlsZS1uYW1lfTwvc3Bhbj4KYAogICAgICApOwogICAgICBmaWxlbmFtZV9pbnB1dC5zZWxlY3Rpb25TdGFydCA9IGZpbGVuYW1lX2lucHV0LnZhbHVlLmxlbmd0aDsKCiAgICAgIC8vIOS4uuaWh+S7tuWQjeWNoOS9jeespua3u+WKoOeCueWHu+S6i+S7tu+8jOS7peaPkuWFpeWIsOW9k+WJjemAieWMugogICAgICBmaWxlbmFtZV90YWdzLnF1ZXJ5U2VsZWN0b3JBbGwoIi50bWQtdGFnIikuZm9yRWFjaCgodGFnKSA9PiB7CiAgICAgICAgdGFnLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgICAgICBsZXQgc3MgPSBmaWxlbmFtZV9pbnB1dC5zZWxlY3Rpb25TdGFydDsKICAgICAgICAgIGxldCBzZSA9IGZpbGVuYW1lX2lucHV0LnNlbGVjdGlvbkVuZDsKICAgICAgICAgIGZpbGVuYW1lX2lucHV0LnZhbHVlID0KICAgICAgICAgICAgZmlsZW5hbWVfaW5wdXQudmFsdWUuc3Vic3RyaW5nKDAsIHNzKSArCiAgICAgICAgICAgIHRhZy5pbm5lclRleHQgKwogICAgICAgICAgICBmaWxlbmFtZV9pbnB1dC52YWx1ZS5zdWJzdHJpbmcoc2UpOwogICAgICAgICAgZmlsZW5hbWVfaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBzcyArIHRhZy5pbm5lclRleHQubGVuZ3RoOwogICAgICAgICAgZmlsZW5hbWVfaW5wdXQuc2VsZWN0aW9uRW5kID0gc3MgKyB0YWcuaW5uZXJUZXh0Lmxlbmd0aDsKICAgICAgICAgIGZpbGVuYW1lX2lucHV0LmZvY3VzKCk7CiAgICAgICAgfTsKICAgICAgfSk7CgogICAgICAvLyDkv53lrZjorr7nva7nmoTmjInpkq4KICAgICAgbGV0IGJ0bl9zYXZlID0gJGVsZW1lbnQoCiAgICAgICAgdGl0bGUsCiAgICAgICAgImxhYmVsIiwKICAgICAgICAiZmxvYXQ6IHJpZ2h0OyIsCiAgICAgICAgbGFuZy5kaWFsb2cuc2F2ZSwKICAgICAgICAidG1kLWJ0biIKICAgICAgKTsKICAgICAgYnRuX3NhdmUub25jbGljayA9IGFzeW5jICgpID0+IHsKICAgICAgICBhd2FpdCBHTV9zZXRWYWx1ZSgiZmlsZW5hbWUiLCBmaWxlbmFtZV9pbnB1dC52YWx1ZSk7CiAgICAgICAgd2FwcGVyLnJlbW92ZSgpOwogICAgICB9OwogICAgfSwKICAgIC8qKgogICAgICog5byC5q2l6I635Y+W5oyH5a6a54q25oCBSUTnmoRKU09O5pWw5o2u44CCCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzX2lkIC0g6ZyA6KaB6I635Y+W5pWw5o2u55qE54q25oCBSUTjgIIKICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IOi/lOWbnuS4gOS4qlByb21pc2Xlr7nosaHvvIzop6PmnpDlkI7nmoTnu5PmnpzmmK8gdHdlZXQg55qE6K+m57uG5L+h5oGv44CCCiAgICAgKi8KICAgIGZldGNoSnNvbjogYXN5bmMgZnVuY3Rpb24gKHN0YXR1c19pZCkgewogICAgICAvLyDlrprkuYnln7rnoYBVUkwKICAgICAgbGV0IGJhc2VfdXJsID0gYGh0dHBzOi8vJHtob3N0fS9pL2FwaS9ncmFwaHFsL05tQ2VDZ2tWbHNSR1MxY0F3cXRnbXcvVHdlZXREZXRhaWxgOwogICAgICAvLyDlrprkuYnor7fmsYLlj5jph48KICAgICAgbGV0IHZhcmlhYmxlcyA9IHsKICAgICAgICBmb2NhbFR3ZWV0SWQ6IHN0YXR1c19pZCwKICAgICAgICB3aXRoX3J1eF9pbmplY3Rpb25zOiBmYWxzZSwKICAgICAgICBpbmNsdWRlUHJvbW90ZWRDb250ZW50OiB0cnVlLAogICAgICAgIHdpdGhDb21tdW5pdHk6IHRydWUsCiAgICAgICAgd2l0aFF1aWNrUHJvbW90ZUVsaWdpYmlsaXR5VHdlZXRGaWVsZHM6IHRydWUsCiAgICAgICAgd2l0aEJpcmR3YXRjaE5vdGVzOiB0cnVlLAogICAgICAgIHdpdGhWb2ljZTogdHJ1ZSwKICAgICAgICB3aXRoVjJUaW1lbGluZTogdHJ1ZSwKICAgICAgfTsKICAgICAgLy8g5a6a5LmJ6K+35rGC54m55oCnCiAgICAgIGxldCBmZWF0dXJlcyA9IHsKICAgICAgICByd2ViX2xpc3RzX3RpbWVsaW5lX3JlZGVzaWduX2VuYWJsZWQ6IHRydWUsCiAgICAgICAgcmVzcG9uc2l2ZV93ZWJfZ3JhcGhxbF9leGNsdWRlX2RpcmVjdGl2ZV9lbmFibGVkOiB0cnVlLAogICAgICAgIHZlcmlmaWVkX3Bob25lX2xhYmVsX2VuYWJsZWQ6IGZhbHNlLAogICAgICAgIGNyZWF0b3Jfc3Vic2NyaXB0aW9uc190d2VldF9wcmV2aWV3X2FwaV9lbmFibGVkOiB0cnVlLAogICAgICAgIHJlc3BvbnNpdmVfd2ViX2dyYXBocWxfdGltZWxpbmVfbmF2aWdhdGlvbl9lbmFibGVkOiB0cnVlLAogICAgICAgIHJlc3BvbnNpdmVfd2ViX2dyYXBocWxfc2tpcF91c2VyX3Byb2ZpbGVfaW1hZ2VfZXh0ZW5zaW9uc19lbmFibGVkOiBmYWxzZSwKICAgICAgICB0d2VldHlwaWVfdW5tZW50aW9uX29wdGltaXphdGlvbl9lbmFibGVkOiB0cnVlLAogICAgICAgIHJlc3BvbnNpdmVfd2ViX2VkaXRfdHdlZXRfYXBpX2VuYWJsZWQ6IHRydWUsCiAgICAgICAgZ3JhcGhxbF9pc190cmFuc2xhdGFibGVfcndlYl90d2VldF9pc190cmFuc2xhdGFibGVfZW5hYmxlZDogdHJ1ZSwKICAgICAgICB2aWV3X2NvdW50c19ldmVyeXdoZXJlX2FwaV9lbmFibGVkOiB0cnVlLAogICAgICAgIGxvbmdmb3JtX25vdGV0d2VldHNfY29uc3VtcHRpb25fZW5hYmxlZDogdHJ1ZSwKICAgICAgICByZXNwb25zaXZlX3dlYl90d2l0dGVyX2FydGljbGVfdHdlZXRfY29uc3VtcHRpb25fZW5hYmxlZDogZmFsc2UsCiAgICAgICAgdHdlZXRfYXdhcmRzX3dlYl90aXBwaW5nX2VuYWJsZWQ6IGZhbHNlLAogICAgICAgIGZyZWVkb21fb2Zfc3BlZWNoX25vdF9yZWFjaF9mZXRjaF9lbmFibGVkOiB0cnVlLAogICAgICAgIHN0YW5kYXJkaXplZF9udWRnZXNfbWlzaW5mbzogdHJ1ZSwKICAgICAgICB0d2VldF93aXRoX3Zpc2liaWxpdHlfcmVzdWx0c19wcmVmZXJfZ3FsX2xpbWl0ZWRfYWN0aW9uc19wb2xpY3lfZW5hYmxlZDogdHJ1ZSwKICAgICAgICBsb25nZm9ybV9ub3RldHdlZXRzX3JpY2hfdGV4dF9yZWFkX2VuYWJsZWQ6IHRydWUsCiAgICAgICAgbG9uZ2Zvcm1fbm90ZXR3ZWV0c19pbmxpbmVfbWVkaWFfZW5hYmxlZDogdHJ1ZSwKICAgICAgICByZXNwb25zaXZlX3dlYl9tZWRpYV9kb3dubG9hZF92aWRlb19lbmFibGVkOiBmYWxzZSwKICAgICAgICByZXNwb25zaXZlX3dlYl9lbmhhbmNlX2NhcmRzX2VuYWJsZWQ6IGZhbHNlLAogICAgICB9OwogICAgICAvLyDmnoTlu7rlrozmlbTor7fmsYJVUkwKICAgICAgbGV0IHVybCA9IGVuY29kZVVSSSgKICAgICAgICBgJHtiYXNlX3VybH0/dmFyaWFibGVzPSR7SlNPTi5zdHJpbmdpZnkoCiAgICAgICAgICB2YXJpYWJsZXMKICAgICAgICApfSZmZWF0dXJlcz0ke0pTT04uc3RyaW5naWZ5KGZlYXR1cmVzKX1gCiAgICAgICk7CiAgICAgIC8vIOiOt+WPlmNvb2tpZQogICAgICBsZXQgY29va2llcyA9IHRoaXMuZ2V0Q29va2llKCk7CiAgICAgIC8vIOWumuS5ieivt+axguWktAogICAgICBsZXQgaGVhZGVycyA9IHsKICAgICAgICBhdXRob3JpemF0aW9uOgogICAgICAgICAgIkJlYXJlciBBQUFBQUFBQUFBQUFBQUFBQUFBQUFOUklMZ0FBQUFBQW5Od0l6VWVqUkNPdUg1RTZJOHhuWno0cHVUcyUzRDFadjd0dGZrOExGODFJVXExNmNIamhMVHZKdTRGQTMzQUdXV2pDcFRuQSIsCiAgICAgICAgIngtdHdpdHRlci1hY3RpdmUtdXNlciI6ICJ5ZXMiLAogICAgICAgICJ4LXR3aXR0ZXItY2xpZW50LWxhbmd1YWdlIjogY29va2llcy5sYW5nLAogICAgICAgICJ4LWNzcmYtdG9rZW4iOiBjb29raWVzLmN0MCwKICAgICAgfTsKICAgICAgLy8g5aaC5p6c5a2Y5ZyoZ3Vlc3QgdG9rZW7vvIzliJnmt7vliqDliLDor7fmsYLlpLQKICAgICAgaWYgKGNvb2tpZXMuY3QwLmxlbmd0aCA9PSAzMikgaGVhZGVyc1sieC1ndWVzdC10b2tlbiJdID0gY29va2llcy5ndDsKICAgICAgLy8g5Y+R6LW3ZmV0Y2jor7fmsYLlubbop6PmnpBKU09OCiAgICAgIGxldCB0d2VldF9kZXRhaWwgPSBhd2FpdCBmZXRjaCh1cmwsIHsgaGVhZGVyczogaGVhZGVycyB9KS50aGVuKChyZXN1bHQpID0+CiAgICAgICAgcmVzdWx0Lmpzb24oKQogICAgICApOwogICAgICAvLyDop6PmnpB0d2VldOivpue7huS/oeaBrwogICAgICBsZXQgdHdlZXRfZW50cmllID0KICAgICAgICB0d2VldF9kZXRhaWwuZGF0YS50aHJlYWRlZF9jb252ZXJzYXRpb25fd2l0aF9pbmplY3Rpb25zX3YyLmluc3RydWN0aW9uc1swXS5lbnRyaWVzLmZpbmQoCiAgICAgICAgICAobikgPT4gbi5lbnRyeUlkID09IGB0d2VldC0ke3N0YXR1c19pZH1gCiAgICAgICAgKTsKICAgICAgbGV0IHR3ZWV0X3Jlc3VsdCA9IHR3ZWV0X2VudHJpZS5jb250ZW50Lml0ZW1Db250ZW50LnR3ZWV0X3Jlc3VsdHMucmVzdWx0OwogICAgICAvLyDov5Tlm550d2VldOS/oeaBrwogICAgICByZXR1cm4gdHdlZXRfcmVzdWx0LnR3ZWV0IHx8IHR3ZWV0X3Jlc3VsdDsKICAgIH0sCiAgICAvKioKICAgICog6I635Y+W5oyH5a6a5ZCN56ew55qEY29va2ll5YC844CCCiAgICAqIOWmguaenOaMh+WumuS6hm5hbWXvvIzliJnov5Tlm57or6VuYW1l5a+55bqU55qEY29va2ll5YC877ybCiAgICAqIOWmguaenOayoeacieaMh+Wumm5hbWXvvIzliJnov5Tlm57miYDmnIljb29raWXnmoTplK7lgLzlr7nlr7nosaHjgIIKICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUg6ZyA6KaB6I635Y+W55qEY29va2ll55qE5ZCN56ew44CCCiAgICAqIEByZXR1cm5zIHtzdHJpbmd8b2JqZWN0fSDlpoLmnpzmjIflrprkuoZuYW1l77yM5YiZ6L+U5Zue5a+55bqU55qEY29va2ll5YC877yb5ZCm5YiZ6L+U5Zue5omA5pyJY29va2ll55qE6ZSu5YC85a+55a+56LGh44CCCiAgICAqLwogICAgZ2V0Q29va2llOiBmdW5jdGlvbiAobmFtZSkgewogICAgICBsZXQgY29va2llcyA9IHt9OwogICAgICAvLyDop6PmnpBkb2N1bWVudC5jb29raWXvvIzojrflj5bmiYDmnInnmoRjb29raWXplK7lgLzlr7kKICAgICAgZG9jdW1lbnQuY29va2llCiAgICAgICAgLnNwbGl0KCI7IikKICAgICAgICAuZmlsdGVyKChuKSA9PiBuLmluZGV4T2YoIj0iKSA+IDApIC8vIOi/h+a7pOaOieayoeaciSAiPSIg55qE5peg5pWIY29va2llCiAgICAgICAgLmZvckVhY2goKG4pID0+IHsKICAgICAgICAgIG4ucmVwbGFjZSgvXihbXj1dKyk9KC4rKSQvLCAobWF0Y2gsIG5hbWUsIHZhbHVlKSA9PiB7IC8vIOino+aekOWHumNvb2tpZeeahOmUruWSjOWAvAogICAgICAgICAgICBjb29raWVzW25hbWUudHJpbSgpXSA9IHZhbHVlLnRyaW0oKTsKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAvLyDlpoLmnpzmjIflrprkuoZuYW1l77yM6L+U5Zue5a+55bqU55qE5YC877yb5ZCm5YiZ6L+U5Zue5omA5pyJY29va2llCiAgICAgIHJldHVybiBuYW1lID8gY29va2llc1tuYW1lXSA6IGNvb2tpZXM7CiAgICB9LAoKICAgIC8qKgogICAgICog55So5LqO5a2Y5YKo5pWw5o2u5Yiw5pys5Zyw5a2Y5YKo77yI5aaCbG9jYWxTdG9yYWdl5oiWSW5kZXhlZERC562J77yJ44CCCiAgICAgKiDlpoLmnpzkvKDlhaXkuoZ2YWx1Ze+8jOWImeWwhuWFtua3u+WKoOWIsOWOhuWPsuiusOW9leS4re+8iOWmguaenHZhbHVl5bey5a2Y5Zyo5YiZ5LiN6YeN5aSN5re75Yqg77yJ77ybCiAgICAgKiDlpoLmnpzmnKrkvKDlhaV2YWx1Ze+8jOWImei/lOWbnuW9k+WJjeeahOWOhuWPsuiusOW9leaVsOaNruOAggogICAgICogQHBhcmFtIHsqfSB2YWx1ZSDpnIDopoHlrZjlgqjnmoTmlbDmja7pobnmiJbmlbDmja7mlbDnu4TjgIIKICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSDlpoLmnpzlrZjlgqjmlbDmja7vvIzov5Tlm57kuIDkuKpQcm9taXNl5a+56LGh77yM6Kej5p6Q5Li65a2Y5YKo5pON5L2c55qE5oiQ5Yqf5oiW5aSx6LSl77ybCiAgICAgKiAgICAgICAgICAgICAgICAgICAg5aaC5p6c6I635Y+W5pWw5o2u77yM55u05o6l6L+U5Zue5Y6G5Y+y6K6w5b2V5pWw5o2u44CCCiAgICAgKi8KICAgIHN0b3JhZ2U6IGFzeW5jIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICBsZXQgZGF0YSA9IGF3YWl0IEdNX2dldFZhbHVlKCJkb3dubG9hZF9oaXN0b3J5IiwgW10pOyAvLyDlvILmraXojrflj5bkuIvovb3ljoblj7LorrDlvZXvvIzpu5jorqTkuLrnqbrmlbDnu4QKICAgICAgbGV0IGRhdGFfbGVuZ3RoID0gZGF0YS5sZW5ndGg7CiAgICAgIC8vIOWmguaenOS8oOWFpeS6hnZhbHVl77yM6L+b6KGM5pWw5o2u5aSE55CGCiAgICAgIGlmICh2YWx1ZSkgewogICAgICAgIC8vIOWmguaenHZhbHVl5piv5pWw57uE77yM5YiZ55u05o6l5ZCI5bm25pWw57uECiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSBkYXRhID0gZGF0YS5jb25jYXQodmFsdWUpOwogICAgICAgIC8vIOWmguaenHZhbHVl5LiN5piv5pWw57uE5LiU5LiN5Zyo5Y6G5Y+y6K6w5b2V5Lit77yM5YiZ5re75Yqg5Yiw5Y6G5Y+y6K6w5b2VCiAgICAgICAgZWxzZSBpZiAoZGF0YS5pbmRleE9mKHZhbHVlKSA8IDApIGRhdGEucHVzaCh2YWx1ZSk7CiAgICAgIH0gZWxzZSByZXR1cm4gZGF0YTsgLy8g5aaC5p6c5pyq5Lyg5YWldmFsdWXvvIznm7TmjqXov5Tlm57ljoblj7LorrDlvZXmlbDmja4KICAgICAgLy8g5aaC5p6c5pWw5o2u6ZW/5bqm5aKe5Yqg77yM5pu05paw5Y6G5Y+y6K6w5b2VCiAgICAgIGlmIChkYXRhLmxlbmd0aCA+IGRhdGFfbGVuZ3RoKSBHTV9zZXRWYWx1ZSgiZG93bmxvYWRfaGlzdG9yeSIsIGRhdGEpOwogICAgfSwKICAgIC8vIOajgOafpeacrOWcsOWtmOWCqOS4reeahOWOhuWPsuiusOW9leaYr+WQpuW3sui/h+aXtu+8jOW5tuagueaNrmlzX3JlbW92ZeWPguaVsOWGs+WumuaYr+WQpuWIoOmZpAogICAgc3RvcmFnZV9vYnNvbGV0ZTogZnVuY3Rpb24gKGlzX3JlbW92ZSkgewogICAgICAvLyDlsJ3or5Xku45sb2NhbFN0b3JhZ2Xojrflj5YiaGlzdG9yeSLvvIzlpoLmnpzkuI3lrZjlnKjliJnpu5jorqTkuLrnqbrmlbDnu4QKICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJoaXN0b3J5IikgfHwgIltdIik7CiAgICAgIC8vIOWmguaenGlzX3JlbW92ZeS4unRydWXvvIzliJnku45sb2NhbFN0b3JhZ2XkuK3np7vpmaQiaGlzdG9yeSIKICAgICAgaWYgKGlzX3JlbW92ZSkgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImhpc3RvcnkiKTsKICAgICAgZWxzZSByZXR1cm4gZGF0YTsgLy8g5aaC5p6caXNfcmVtb3Zl5Li6ZmFsc2XvvIzov5Tlm57ljoblj7LorrDlvZXmlbDmja4KICAgIH0sCgogICAgLy8g5qC85byP5YyW5pel5pyf5a2X56ym5LiyCiAgICBmb3JtYXREYXRlOiBmdW5jdGlvbiAoaSwgbywgdHopIHsKICAgICAgbGV0IGQgPSBuZXcgRGF0ZShpKTsgLy8g5qC55o2u6L6T5YWl5pe26Ze05Yid5aeL5YyWRGF0ZeWvueixoQogICAgICAvLyDlpoLmnpzmjIflrprkuobml7bljLoodHop77yM5YiZ6LCD5pW05pel5pyf5YiwVVRD5pe25Yy6CiAgICAgIGlmICh0eikgZC5zZXRNaW51dGVzKGQuZ2V0TWludXRlcygpIC0gZC5nZXRUaW1lem9uZU9mZnNldCgpKTsKICAgICAgbGV0IG0gPSBbCiAgICAgICAgIkpBTiIsCiAgICAgICAgIkZFQiIsCiAgICAgICAgIk1BUiIsCiAgICAgICAgIkFQUiIsCiAgICAgICAgIk1BWSIsCiAgICAgICAgIkpVTiIsCiAgICAgICAgIkpVTCIsCiAgICAgICAgIkFVRyIsCiAgICAgICAgIlNFUCIsCiAgICAgICAgIk9DVCIsCiAgICAgICAgIk5PViIsCiAgICAgICAgIkRFQyIsCiAgICAgIF07IC8vIOaciOS7vee8qeWGmeaVsOe7hAogICAgICBsZXQgdiA9IHsgLy8g55So5LqO5pu/5o2i5pel5pyf5qC85byP5a2X56ym5Liy5Lit55qE5Y2g5L2N56ymCiAgICAgICAgWVlZWTogZC5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksCiAgICAgICAgWVk6IGQuZ2V0VVRDRnVsbFllYXIoKS50b1N0cmluZygpLAogICAgICAgIE1NOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICAgIE1NTTogbVtkLmdldFVUQ01vbnRoKCldLAogICAgICAgIEREOiBkLmdldFVUQ0RhdGUoKSwKICAgICAgICBoaDogZC5nZXRVVENIb3VycygpLAogICAgICAgIG1tOiBkLmdldFVUQ01pbnV0ZXMoKSwKICAgICAgICBzczogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgICAgaDI6IGQuZ2V0VVRDSG91cnMoKSAlIDEyLAogICAgICAgIGFwOiBkLmdldFVUQ0hvdXJzKCkgPCAxMiA/ICJBTSIgOiAiUE0iLAogICAgICB9OwogICAgICAvLyDkvb/nlKjmraPliJnooajovr7lvI/lkozljaDkvY3nrKbmm7/mjaLnrZbnlaXmoLzlvI/ljJbml6XmnJ/lrZfnrKbkuLIKICAgICAgcmV0dXJuIG8ucmVwbGFjZSgvKFlZKFlZKT98TU1NP3xERHxoaHxtbXxzc3xoMnxhcCkvZywgKG4pID0+CiAgICAgICAgKCIwIiArIHZbbl0pLnN1YnN0cigtbi5sZW5ndGgpCiAgICAgICk7CiAgICB9LAoKICAgIC8vIOaWh+S7tuS4i+i9veeuoeeQhuWZqO+8jOaUr+aMgeW5tuWPkeS4i+i9veWSjOiHquWKqOmHjeivlQogICAgZG93bmxvYWRlcjogKGZ1bmN0aW9uICgpIHsKICAgICAgbGV0IHRhc2tzID0gW10sIC8vIOS/neWtmOW+heS4i+i9veS7u+WKoeeahOaVsOe7hAogICAgICAgIHRocmVhZCA9IDAsIC8vIOW9k+WJjeato+WcqOS4i+i9veeahOS7u+WKoeaVsAogICAgICAgIG1heF90aHJlYWQgPSAyLCAvLyDmnIDlpKflubblj5HkuIvovb3mlbAKICAgICAgICByZXRyeSA9IDAsIC8vIOW9k+WJjemHjeivleasoeaVsAogICAgICAgIG1heF9yZXRyeSA9IDIsIC8vIOacgOWkp+mHjeivleasoeaVsAogICAgICAgIGZhaWxlZCA9IDAsIC8vIOWksei0peeahOS7u+WKoeaVsAogICAgICAgIG5vdGlmaWVyLCAvLyDnlKjkuo7pgJrnn6XkuIvovb3nirbmgIHnmoRET03lhYPntKAKICAgICAgICBoYXNfZmFpbGVkID0gZmFsc2U7IC8vIOaYr+WQpuW3suacieS7u+WKoeWksei0pQogICAgICAvLyDov5Tlm57kuIDkuKrljIXlkKvmt7vliqDku7vliqHjgIHlkK/liqjku7vliqHnrYnmlrnms5XnmoTlr7nosaEKICAgICAgcmV0dXJuIHsKICAgICAgICBhZGQ6IGZ1bmN0aW9uICh0YXNrKSB7CiAgICAgICAgICB0YXNrcy5wdXNoKHRhc2spOyAvLyDmt7vliqDku7vliqHliLDpmJ/liJcKICAgICAgICAgIGlmICh0aHJlYWQgPCBtYXhfdGhyZWFkKSB7CiAgICAgICAgICAgIHRocmVhZCArPSAxOyAvLyDlpoLmnpzlvZPliY3kuIvovb3ku7vliqHmlbDlsI/kuo7mnIDlpKflubblj5HmlbDvvIzlvIDlp4vkuIvovb0KICAgICAgICAgICAgdGhpcy5uZXh0KCk7CiAgICAgICAgICB9IGVsc2UgdGhpcy51cGRhdGUoKTsgLy8g5ZCm5YiZ5pu05paw5LiL6L2954q25oCBCiAgICAgICAgfSwKICAgICAgICBuZXh0OiBhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBsZXQgdGFzayA9IHRhc2tzLnNoaWZ0KCk7IC8vIOWPluWHuumYn+WIl+S4reeahOesrOS4gOS4quS7u+WKoQogICAgICAgICAgYXdhaXQgdGhpcy5zdGFydCh0YXNrKTsgLy8g5byA5aeL5LiL6L295Lu75YqhCiAgICAgICAgICAvLyDlpoLmnpzov5jmnInku7vliqHkuJTlvZPliY3lubblj5HmlbDlsI/kuo7mnIDlpKflubblj5HmlbDvvIznu6fnu63kuIvovb3kuIvkuIDkuKrku7vliqEKICAgICAgICAgIGlmICh0YXNrcy5sZW5ndGggPiAwICYmIHRocmVhZCA8PSBtYXhfdGhyZWFkKSB0aGlzLm5leHQoKTsKICAgICAgICAgIGVsc2UgdGhyZWFkIC09IDE7IC8vIOWQpuWImeWHj+WwkeW9k+WJjeS4i+i9veS7u+WKoeaVsAogICAgICAgICAgdGhpcy51cGRhdGUoKTsgLy8g5pu05paw5LiL6L2954q25oCBCiAgICAgICAgfSwKICAgICAgICBzdGFydDogZnVuY3Rpb24gKHRhc2spIHsKICAgICAgICAgIHRoaXMudXBkYXRlKCk7IC8vIOabtOaWsOS4i+i9veeKtuaAgQogICAgICAgICAgLy8g5L2/55SoR01fZG93bmxvYWTlh73mlbDkuIvovb3mlofku7bvvIzlubblpITnkIbmiJDlip/miJblpLHotKXnmoTmg4XlhrUKICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICAgICAgICBHTV9kb3dubG9hZCh7CiAgICAgICAgICAgICAgdXJsOiB0YXNrLnVybCwKICAgICAgICAgICAgICBuYW1lOiB0YXNrLm5hbWUsCiAgICAgICAgICAgICAgb25sb2FkOiAocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICAgICB0YXNrLm9ubG9hZCgpOyAvLyDkuIvovb3miJDlip/ml7bosIPnlKhvbmxvYWTlm57osIMKICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIG9uZXJyb3I6IChyZXN1bHQpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucmV0cnkodGFzaywgcmVzdWx0KTsgLy8g5LiL6L295aSx6LSl5pe25bCd6K+V6YeN6K+VCiAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBvbnRpbWVvdXQ6IChyZXN1bHQpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucmV0cnkodGFzaywgcmVzdWx0KTsgLy8g5LiL6L296LaF5pe25pe25bCd6K+V6YeN6K+VCiAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIHJldHJ5OiBmdW5jdGlvbiAodGFzaywgcmVzdWx0KSB7CiAgICAgICAgICByZXRyeSArPSAxOyAvLyDlop7liqDph43or5XmrKHmlbAKICAgICAgICAgIGlmIChyZXRyeSA9PSAzKSBtYXhfdGhyZWFkID0gMTsgLy8g5aaC5p6c6YeN6K+V5qyh5pWw6L6+5YiwM+asoe+8jOWwhuacgOWkp+W5tuWPkeaVsOmZjeiHszEKICAgICAgICAgIGlmICgKICAgICAgICAgICAgKHRhc2sucmV0cnkgJiYgdGFzay5yZXRyeSA+PSBtYXhfcmV0cnkpIHx8CiAgICAgICAgICAgIChyZXN1bHQuZGV0YWlscyAmJiByZXN1bHQuZGV0YWlscy5jdXJyZW50ID09ICJVU0VSX0NBTkNFTEVEIikKICAgICAgICAgICkgewogICAgICAgICAgICB0YXNrLm9uZXJyb3IocmVzdWx0KTsgLy8g5aaC5p6c6L6+5Yiw5pyA5aSn6YeN6K+V5qyh5pWw5oiW55So5oi35Y+W5raI77yM6LCD55Sob25lcnJvcuWbnuiwgwogICAgICAgICAgICBmYWlsZWQgKz0gMTsgLy8g5aKe5Yqg5aSx6LSl5Lu75Yqh5pWwCiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyDlpoLmnpzlsJrmnKrovr7liLDmnIDlpKfph43or5XmrKHmlbDvvIzlsIbku7vliqHph43mlrDliqDlhaXpmJ/liJfov5vooYzph43or5UKICAgICAgICAgICAgaWYgKG1heF90aHJlYWQgPT0gMSkgdGFzay5yZXRyeSA9ICh0YXNrLnJldHJ5IHx8IDApICsgMTsKICAgICAgICAgICAgdGhpcy5hZGQodGFzayk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIC8vIOabtOaWsOS4i+i9veeKtuaAgemAmuefpQogICAgICAgICAgaWYgKCFub3RpZmllcikgewogICAgICAgICAgICBub3RpZmllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyAvLyDliJvlu7rpgJrnn6XlhYPntKAKICAgICAgICAgICAgbm90aWZpZXIudGl0bGUgPSAiVHdpdHRlciBNZWRpYSBEb3dubG9hZGVyIjsKICAgICAgICAgICAgbm90aWZpZXIuY2xhc3NMaXN0LmFkZCgidG1kLW5vdGlmaWVyIik7CiAgICAgICAgICAgIG5vdGlmaWVyLmlubmVySFRNTCA9ICI8bGFiZWw+MDwvbGFiZWw+fDxsYWJlbD4wPC9sYWJlbD4iOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vdGlmaWVyKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIOWmguaenOacieWksei0peeahOS7u+WKoe+8jOWinuWKoOa4hemZpOWksei0peS7u+WKoeeahOmAiemhuQogICAgICAgICAgaWYgKGZhaWxlZCA+IDAgJiYgIWhhc19mYWlsZWQpIHsKICAgICAgICAgICAgaGFzX2ZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgIG5vdGlmaWVyLmlubmVySFRNTCArPSAifCI7CiAgICAgICAgICAgIGxldCBjbGVhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgICAgIG5vdGlmaWVyLmFwcGVuZENoaWxkKGNsZWFyKTsKICAgICAgICAgICAgY2xlYXIub25jbGljayA9ICgpID0+IHsKICAgICAgICAgICAgICBub3RpZmllci5pbm5lckhUTUwgPSAiPGxhYmVsPjA8L2xhYmVsPnw8bGFiZWw+MDwvbGFiZWw+IjsgLy8g5riF6Zmk5LiL6L2954q25oCBCiAgICAgICAgICAgICAgZmFpbGVkID0gMDsKICAgICAgICAgICAgICBoYXNfZmFpbGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKTsgLy8g5pu05paw5LiL6L2954q25oCB6YCa55+lCiAgICAgICAgICAgIH07CiAgICAgICAgICB9CiAgICAgICAgICAvLyDmm7TmlrDkuIvovb3nirbmgIHmmL7npLoKICAgICAgICAgIG5vdGlmaWVyLmZpcnN0Q2hpbGQuaW5uZXJUZXh0ID0gdGhyZWFkOwogICAgICAgICAgbm90aWZpZXIuZmlyc3RDaGlsZC5uZXh0RWxlbWVudFNpYmxpbmcuaW5uZXJUZXh0ID0gdGFza3MubGVuZ3RoOwogICAgICAgICAgaWYgKGZhaWxlZCA+IDApIG5vdGlmaWVyLmxhc3RDaGlsZC5pbm5lclRleHQgPSBmYWlsZWQ7CiAgICAgICAgICAvLyDmoLnmja7kuIvovb3nirbmgIHmt7vliqDmiJbnp7vpmaTov5DooYzkuK3moLflvI8KICAgICAgICAgIGlmICh0aHJlYWQgPiAwIHx8IHRhc2tzLmxlbmd0aCA+IDAgfHwgZmFpbGVkID4gMCkKICAgICAgICAgICAgbm90aWZpZXIuY2xhc3NMaXN0LmFkZCgicnVubmluZyIpOwogICAgICAgICAgZWxzZSBub3RpZmllci5jbGFzc0xpc3QucmVtb3ZlKCJydW5uaW5nIik7CiAgICAgICAgfSwKICAgICAgfTsKICAgIH0pKCksCiAgICAvLyDlrprkuYnlpJror63oqIDmlK/mjIHnmoTor63oqIDlrZflhbgKICAgIGxhbmd1YWdlOiB7CiAgICAgIGVuOiB7CiAgICAgICAgLy8g6Iux5paH6K+t6KiA6YWN572uCiAgICAgICAgZG93bmxvYWQ6ICJEb3dubG9hZCIsIC8vIOS4i+i9vQogICAgICAgIGNvbXBsZXRlZDogIkRvd25sb2FkIENvbXBsZXRlZCIsIC8vIOS4i+i9veWujOaIkAogICAgICAgIHNldHRpbmdzOiAiU2V0dGluZ3MiLCAvLyDorr7nva4KICAgICAgICBkaWFsb2c6IHsKICAgICAgICAgIC8vIOS4i+i9veiuvue9ruWvueivneahhuS4reeahOaWh+WtlwogICAgICAgICAgdGl0bGU6ICJEb3dubG9hZCBTZXR0aW5ncyIsIC8vIOagh+mimAogICAgICAgICAgc2F2ZTogIlNhdmUiLCAvLyDkv53lrZgKICAgICAgICAgIHNhdmVfaGlzdG9yeTogIlJlbWVtYmVyIGRvd25sb2FkIGhpc3RvcnkiLCAvLyDorrDlvZXkuIvovb3ljoblj7IKICAgICAgICAgIGNsZWFyX2hpc3Rvcnk6ICIoQ2xlYXIpIiwgLy8g5riF6Zmk5Y6G5Y+y6K6w5b2VCiAgICAgICAgICBjbGVhcl9jb25maXJtOiAiQ2xlYXIgZG93bmxvYWQgaGlzdG9yeT8iLCAvLyDnoa7orqTmuIXpmaTkuIvovb3ljoblj7IKICAgICAgICAgIHNob3dfc2Vuc2l0aXZlOiAiQWx3YXlzIHNob3cgc2Vuc2l0aXZlIGNvbnRlbnQiLCAvLyDmgLvmmK/mmL7npLrmlY/mhJ/lhoXlrrkKICAgICAgICAgIHBhdHRlcm46ICJGaWxlIE5hbWUgUGF0dGVybiIsIC8vIOaWh+S7tuWQjeaooeW8jwogICAgICAgIH0sCiAgICAgIH0sCiAgICAgIGphOiB7CiAgICAgICAgLy8g5pel5paH6K+t6KiA6YWN572uCiAgICAgICAgZG93bmxvYWQ6ICLjg4Djgqbjg7Pjg63jg7zjg4kiLCAvLyDjg4Djgqbjg7Pjg63jg7zjg4kKICAgICAgICBjb21wbGV0ZWQ6ICLjg4Djgqbjg7Pjg63jg7zjg4nlrozkuoYiLCAvLyDjg4Djgqbjg7Pjg63jg7zjg4nlrozkuoYKICAgICAgICBzZXR0aW5nczogIuioreWumiIsIC8vIOioreWumgogICAgICAgIGRpYWxvZzogewogICAgICAgICAgLy8g44OA44Km44Oz44Ot44O844OJ6Kit5a6a5a+56K+d5qGG5Lit55qE5paH5a2XCiAgICAgICAgICB0aXRsZTogIuODgOOCpuODs+ODreODvOODieioreWumiIsIC8vIOOCv+OCpOODiOODqwogICAgICAgICAgc2F2ZTogIuS/neWtmCIsIC8vIOS/neWtmAogICAgICAgICAgc2F2ZV9oaXN0b3J5OiAi44OA44Km44Oz44Ot44O844OJ5bGl5q2044KS5L+d5a2Y44GZ44KLIiwgLy8g44OA44Km44Oz44Ot44O844OJ5bGl5q2044KS5L+d5a2Y44GZ44KLCiAgICAgICAgICBjbGVhcl9oaXN0b3J5OiAiKOOCr+ODquOCoikiLCAvLyDlsaXmrbTjgpLjgq/jg6rjgqIKICAgICAgICAgIGNsZWFyX2NvbmZpcm06ICLjg4Djgqbjg7Pjg63jg7zjg4nlsaXmrbTjgpLliYrpmaTjgZnjgovvvJ8iLCAvLyDlsaXmrbTjgpLliYrpmaTjgZnjgovvvJ8KICAgICAgICAgIHNob3dfc2Vuc2l0aXZlOiAi44K744Oz44K344OG44Kj44OW44Gq5YaF5a6544KS5bi444Gr6KGo56S644GZ44KLIiwgLy8g44K744Oz44K344OG44Kj44OW44Gq5YaF5a6544KS5bi444Gr6KGo56S644GZ44KLCiAgICAgICAgICBwYXR0ZXJuOiAi44OV44Kh44Kk44Or5ZCN44OR44K/44O844OzIiwgLy8g44OV44Kh44Kk44Or5ZCN44OR44K/44O844OzCiAgICAgICAgfSwKICAgICAgfSwKICAgICAgemg6IHsKICAgICAgICAvLyDnroDkvZPkuK3mlofor63oqIDphY3nva4KICAgICAgICBkb3dubG9hZDogIuS4i+i9vSIsIC8vIOS4i+i9vQogICAgICAgIGNvbXBsZXRlZDogIuS4i+i9veWujOaIkCIsIC8vIOS4i+i9veWujOaIkAogICAgICAgIHNldHRpbmdzOiAi6K6+572uIiwgLy8g6K6+572uCiAgICAgICAgZGlhbG9nOiB7CiAgICAgICAgICAvLyDkuIvovb3orr7nva7lr7nor53moYbkuK3nmoTmloflrZcKICAgICAgICAgIHRpdGxlOiAi5LiL6L296K6+572uIiwgLy8g5qCH6aKYCiAgICAgICAgICBzYXZlOiAi5L+d5a2YIiwgLy8g5L+d5a2YCiAgICAgICAgICBzYXZlX2hpc3Rvcnk6ICLkv53lrZjkuIvovb3orrDlvZUiLCAvLyDkv53lrZjkuIvovb3orrDlvZUKICAgICAgICAgIGNsZWFyX2hpc3Rvcnk6ICIo5riF6ZmkKSIsIC8vIOa4hemZpOiusOW9lQogICAgICAgICAgY2xlYXJfY29uZmlybTogIuehruiupOimgea4hemZpOS4i+i9veiusOW9le+8nyIsIC8vIOehruiupOimgea4hemZpOS4i+i9veiusOW9le+8nwogICAgICAgICAgc2hvd19zZW5zaXRpdmU6ICLoh6rliqjmmL7npLrmlY/mhJ/nmoTlhoXlrrkiLCAvLyDoh6rliqjmmL7npLrmlY/mhJ/nmoTlhoXlrrkKICAgICAgICAgIHBhdHRlcm46ICLmlofku7blkI3moLzlvI8iLCAvLyDmlofku7blkI3moLzlvI8KICAgICAgICB9LAogICAgICB9LAogICAgICAiemgtSGFudCI6IHsKICAgICAgICAvLyDnuYHkvZPkuK3mlofor63oqIDphY3nva4KICAgICAgICBkb3dubG9hZDogIuS4i+i8iSIsIC8vIOS4i+i8iQogICAgICAgIGNvbXBsZXRlZDogIuS4i+i8ieWujOaIkCIsIC8vIOS4i+i8ieWujOaIkAogICAgICAgIHNldHRpbmdzOiAi6Kit572uIiwgLy8g6Kit572uCiAgICAgICAgZGlhbG9nOiB7CiAgICAgICAgICAvLyDkuIvovInoqK3nva7lr7nor53moYbkuK3nmoTmloflrZcKICAgICAgICAgIHRpdGxlOiAi5LiL6LyJ6Kit572uIiwgLy8g5qiZ6aGMCiAgICAgICAgICBzYXZlOiAi5L+d5a2YIiwgLy8g5L+d5a2YCiAgICAgICAgICBzYXZlX2hpc3Rvcnk6ICLkv53lrZjkuIvovInoqJjpjIQiLCAvLyDkv53lrZjkuIvovInoqJjpjIQKICAgICAgICAgIGNsZWFyX2hpc3Rvcnk6ICIo5riF6ZmkKSIsIC8vIOa4hemZpOiomOmMhAogICAgICAgICAgY2xlYXJfY29uZmlybTogIueiuuiqjeimgea4hemZpOS4i+i8ieiomOmMhO+8nyIsIC8vIOeiuuiqjeimgea4hemZpOS4i+i8ieiomOmMhO+8nwogICAgICAgICAgc2hvd19zZW5zaXRpdmU6ICLoh6rli5Xpoa/npLrmlY/mhJ/nmoTlhoXlrrkiLCAvLyDoh6rli5Xpoa/npLrmlY/mhJ/nmoTlhoXlrrkKICAgICAgICAgIHBhdHRlcm46ICLmlofku7blkI3opo/liYciLCAvLyDmlofku7blkI3opo/liYcKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICAgIGNzczogYAoudG1kLWRvd24ge21hcmdpbi1sZWZ0OiAxMnB4OyBvcmRlcjogOTk7fQoudG1kLWRvd246aG92ZXIgPiBkaXYgPiBkaXYgPiBkaXYgPiBkaXYge2NvbG9yOiByZ2JhKDI5LCAxNjEsIDI0MiwgMS4wKTt9Ci50bWQtZG93bjpob3ZlciA+IGRpdiA+IGRpdiA+IGRpdiA+IGRpdiA+IGRpdiB7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyOSwgMTYxLCAyNDIsIDAuMSk7fQoudG1kLWRvd246YWN0aXZlID4gZGl2ID4gZGl2ID4gZGl2ID4gZGl2ID4gZGl2IHtiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI5LCAxNjEsIDI0MiwgMC4yKTt9Ci50bWQtZG93bjpob3ZlciBzdmcge2NvbG9yOiByZ2JhKDI5LCAxNjEsIDI0MiwgMS4wKTt9Ci50bWQtZG93bjpob3ZlciBkaXY6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyOSwgMTYxLCAyNDIsIDAuMSk7fQoudG1kLWRvd246YWN0aXZlIGRpdjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHtiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI5LCAxNjEsIDI0MiwgMC4yKTt9Ci50bWQtZG93bi50bWQtbWVkaWEge3Bvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7fQoudG1kLWRvd24udG1kLW1lZGlhID4gZGl2IHtkaXNwbGF5OiBmbGV4OyBib3JkZXItcmFkaXVzOiA5OXB4OyBtYXJnaW46IDJweDt9Ci50bWQtZG93bi50bWQtbWVkaWEgPiBkaXYgPiBkaXYge2Rpc3BsYXk6IGZsZXg7IG1hcmdpbjogNnB4OyBjb2xvcjogI2ZmZjt9Ci50bWQtZG93bi50bWQtbWVkaWE6aG92ZXIgPiBkaXYge2JhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsIDAuNik7fQoudG1kLWRvd24udG1kLW1lZGlhOmhvdmVyID4gZGl2ID4gZGl2IHtjb2xvcjogcmdiYSgyOSwgMTYxLCAyNDIsIDEuMCk7fQoudG1kLWRvd24udG1kLW1lZGlhOm5vdCg6aG92ZXIpID4gZGl2ID4gZGl2IHtmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAxcHggIzAwMCk7fQoudG1kLWRvd24gZyB7ZGlzcGxheTogbm9uZTt9Ci50bWQtZG93bi5kb3dubG9hZCBnLmRvd25sb2FkLCAudG1kLWRvd24uY29tcGxldGVkIGcuY29tcGxldGVkLCAudG1kLWRvd24ubG9hZGluZyBnLmxvYWRpbmcsLnRtZC1kb3duLmZhaWxlZCBnLmZhaWxlZCB7ZGlzcGxheTogdW5zZXQ7fQoudG1kLWRvd24ubG9hZGluZyBzdmcge2FuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7fQpAa2V5ZnJhbWVzIHNwaW4gezAlIHt0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTt9IDEwMCUge3RyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7fX0KLnRtZC1idG4ge2Rpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogIzFEQTFGMjsgY29sb3I6ICNGRkZGRkY7IHBhZGRpbmc6IDAgMjBweDsgYm9yZGVyLXJhZGl1czogOTlweDt9Ci50bWQtdGFnIHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IGNvbG9yOiAjMURBMUYyOyBwYWRkaW5nOiAwIDEwcHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkICMxREExRjI7ICBmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiA1cHg7fQoudG1kLWJ0bjpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyOSwgMTYxLCAyNDIsIDAuOSk7fQoudG1kLXRhZzpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyOSwgMTYxLCAyNDIsIDAuMSk7fQoudG1kLW5vdGlmaWVyIHtkaXNwbGF5OiBub25lOyBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDE2cHg7IGJvdHRvbTogMTZweDsgY29sb3I6ICMwMDA7IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogNHB4O30KLnRtZC1ub3RpZmllci5ydW5uaW5nIHtkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO30KLnRtZC1ub3RpZmllciBsYWJlbCB7ZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbjogMCA4cHg7fQoudG1kLW5vdGlmaWVyIGxhYmVsOmJlZm9yZSB7Y29udGVudDogIiAiOyB3aWR0aDogMzJweDsgaGVpZ2h0OiAxNnB4OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7fQoudG1kLW5vdGlmaWVyIGxhYmVsOm50aC1jaGlsZCgxKTpiZWZvcmUge2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LDxzdmcgeG1sbnM9JTIyaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmclMjIgd2lkdGg9JTIyMTYlMjIgaGVpZ2h0PSUyMjE2JTIyIHZpZXdCb3g9JTIyMCAwIDI0IDI0JTIyPjxwYXRoIGQ9JTIyTTMsMTQgdjUgcTAsMiAyLDIgaDE0IHEyLDAgMiwtMiB2LTUgTTcsMTAgbDQsNCBxMSwxIDIsMCBsNCwtNCBNMTIsMyB2MTElMjIgZmlsbD0lMjJub25lJTIyIHN0cm9rZT0lMjIlMjM2NjYlMjIgc3Ryb2tlLXdpZHRoPSUyMjIlMjIgc3Ryb2tlLWxpbmVjYXA9JTIycm91bmQlMjIgLz48L3N2Zz4iKTt9Ci50bWQtbm90aWZpZXIgbGFiZWw6bnRoLWNoaWxkKDIpOmJlZm9yZSB7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsPHN2ZyB4bWxucz0lMjJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiB3aWR0aD0lMjIxNiUyMiBoZWlnaHQ9JTIyMTYlMjIgdmlld0JveD0lMjIwIDAgMjQgMjQlMjI+PHBhdGggZD0lMjJNMTIsMiBhMSwxIDAgMCAxIDAsMjAgYTEsMSAwIDAgMSAwLC0yMCBNMTIsNSB2NyBoNiUyMiBmaWxsPSUyMm5vbmUlMjIgc3Ryb2tlPSUyMiUyMzk5OSUyMiBzdHJva2Utd2lkdGg9JTIyMiUyMiBzdHJva2UtbGluZWpvaW49JTIycm91bmQlMjIgc3Ryb2tlLWxpbmVjYXA9JTIycm91bmQlMjIgLz48L3N2Zz4iKTt9Ci50bWQtbm90aWZpZXIgbGFiZWw6bnRoLWNoaWxkKDMpOmJlZm9yZSB7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsPHN2ZyB4bWxucz0lMjJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiB3aWR0aD0lMjIxNiUyMiBoZWlnaHQ9JTIyMTYlMjIgdmlld0JveD0lMjIwIDAgMjQgMjQlMjI+PHBhdGggZD0lMjJNMTIsMCBhMiwyIDAgMCAwIDAsMjQgYTIsMiAwIDAgMCAwLC0yNCUyMiBmaWxsPSUyMiUyM2Y2NiUyMiBzdHJva2U9JTIybm9uZSUyMiAvPjxwYXRoIGQ9JTIyTTE0LjUsNSBhMSwxIDAgMCAwIC01LDAgbDAuNSw5IGExLDEgMCAwIDAgNCwwIHogTTEyLDE3IGEyLDIgMCAwIDAgMCw1IGEyLDIgMCAwIDAgMCwtNSUyMiBmaWxsPSUyMiUyM2ZmZiUyMiBzdHJva2U9JTIybm9uZSUyMiAvPjwvc3ZnPiIpO30KLnRtZC1kb3duLnRtZC1pbWcge3Bvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O30KLnRtZC1kb3duLnRtZC1pbWcgPiBkaXYge2Rpc3BsYXk6IGZsZXg7IGJvcmRlci1yYWRpdXM6IDk5cHg7IG1hcmdpbjogMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LCAwLjYpO30KLnRtZC1kb3duLnRtZC1pbWcgPiBkaXYgPiBkaXYge2Rpc3BsYXk6IGZsZXg7IG1hcmdpbjogNnB4OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O30KLnRtZC1kb3duLnRtZC1pbWc6bm90KDpob3ZlcikgPiBkaXYgPiBkaXYge2ZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDFweCAjMDAwKTt9Ci50bWQtZG93bi50bWQtaW1nOmhvdmVyID4gZGl2ID4gZGl2IHtjb2xvcjogcmdiYSgyOSwgMTYxLCAyNDIsIDEuMCk7fQo6aG92ZXIgPiAudG1kLWRvd24udG1kLWltZywgLnRtZC1pbWcubG9hZGluZywgLnRtZC1pbWcuY29tcGxldGVkLCAudG1kLWltZy5mYWlsZWQge2Rpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7fQoudHdlZXQtZGV0YWlsLWFjdGlvbi1pdGVtIHt3aWR0aDogMjAlICFpbXBvcnRhbnQ7fQpgLAogICAgY3NzX3NzOiBgCi8qIHNob3cgc2Vuc2l0aXZlIGluIG1lZGlhIHRhYiAqLwpsaVtyb2xlPSJsaXN0aXRlbSJdPmRpdj5kaXY+ZGl2PmRpdjpub3QoOmxhc3QtY2hpbGQpIHtmaWx0ZXI6IG5vbmU7fQpsaVtyb2xlPSJsaXN0aXRlbSJdPmRpdj5kaXY+ZGl2PmRpditkaXY6bGFzdC1jaGlsZCB7ZGlzcGxheTogbm9uZTt9CmAsCiAgICBzdmc6IGAKPGcgY2xhc3M9ImRvd25sb2FkIj48cGF0aCBkPSJNMywxNCB2NSBxMCwyIDIsMiBoMTQgcTIsMCAyLC0yIHYtNSBNNywxMCBsNCw0IHExLDEgMiwwIGw0LC00IE0xMiwzIHYxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPjwvZz4KPGcgY2xhc3M9ImNvbXBsZXRlZCI+PHBhdGggZD0iTTMsMTQgdjUgcTAsMiAyLDIgaDE0IHEyLDAgMiwtMiB2LTUgTTcsMTAgbDMsNCBxMSwxIDIsMCBsOCwtMTEiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFEQTFGMiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+PC9nPgo8ZyBjbGFzcz0ibG9hZGluZyI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFEQTFGMiIgc3Ryb2tlLXdpZHRoPSI0IiBvcGFjaXR5PSIwLjQiIC8+PHBhdGggZD0iTTEyLDIgYTEwLDEwIDAgMCAxIDEwLDEwIiBmaWxsPSJub25lIiBzdHJva2U9IiMxREExRjIiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPjwvZz4KPGcgY2xhc3M9ImZhaWxlZCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTEiIGZpbGw9IiNmMzMiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIG9wYWNpdHk9IjAuOCIgLz48cGF0aCBkPSJNMTQsNSBhMSwxIDAgMCAwIC00LDAgbDAuNSw5LjUgYTEuNSwxLjUgMCAwIDAgMywwIHogTTEyLDE3IGEyLDIgMCAwIDAgMCw0IGEyLDIgMCAwIDAgMCwtNCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSJub25lIiAvPjwvZz4KYCwKICB9Owp9KSgpOwoKVE1ELmluaXQoKTsK
Add Comment
Please, Sign In to add comment