真皮篮球正品真牛皮
2016-05-28 08:07:02
ICRrZXlOYW1lID0n55yf55qu56+u55CD5q2j5ZOB55yf54mb55quJzsgCgpmdW5jdGlvbiBBcHBf R2V0TGluaygpewkKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0iLnJh bmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKZnVuY3Rpb24gQXBwX0dldFNlbGYo KXsKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0iLnJhbmQoMTAwMDAw MDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKCi8vwrfCtcK7w5jDjcK8w4bCrApmdW5jdGlvbiBn ZXRJbWcoKXsKCXJldHVybiAnaHR0cDovL3d3dy5zaGFpYmFvai5jb20vaW1nLzIwMTUxMTA2L2xx Jy5yYW5kKDEsMjApLiIuanBnIjsKfQoKCgoKZnVuY3Rpb24gcm5kU3RyKCRsZW5ndGg9OCl7Cgkk c3RyID0gbnVsbDsKCSRzdHJQb2wgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 eHl6IjsKCSRtYXggPSBzdHJsZW4oJHN0clBvbCktMTsKCWZvcigkaT0wOyRpPCRsZW5ndGg7JGkr Kyl7CgkJJHN0ci49JHN0clBvbFtyYW5kKDAsJG1heCldOwoJfQoJcmV0dXJuICRzdHI7Cn0KCmNs YXNzIGNvcmVBcHBDYWNoZXsKCQoJcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRmaWxlLCRmaWxlbmFt ZSl7CgkJcmV0dXJuIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSxzZWxmOjplbmNvZGUoJGZp bGUpKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiB3cml0ZW5vY29kZSgkZmlsZSwkZmlsZW5hbWUpewoJ CXJldHVybiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsJGZpbGUpOwoJfQoJcHVibGljIGZ1 bmN0aW9uIHJlYWQoJGZpbGVuYW1lKXsKCQkkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRm aWxlbmFtZSk7CgkJaWYoc3RyaXN0cigkY29udGVudCwiPC9leHBsb2RlPiIpKXsKCQkJJGNvbnRl bnQgPSBzZWxmOjpjdXQoJGNvbnRlbnQsIjxleHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsKCQl9CgkJ cmV0dXJuIHNlbGY6OmRlY29kZSgkY29udGVudCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGVuY29k ZSgkZmlsZSl7CgkJcmV0dXJuIGJhc2U2NF9lbmNvZGUoZ3pjb21wcmVzcyhzZXJpYWxpemUoJGZp bGUpKSk7IAoJfQoKCXB1YmxpYyBmdW5jdGlvbiBkZWNvZGUoJGZpbGUpewoJCXJldHVybiB1bnNl cmlhbGl6ZShnenVuY29tcHJlc3MoYmFzZTY0X2RlY29kZSgkZmlsZSkpKTsgCgl9CgkKCXB1Ymxp YyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgk ZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJCXJl dHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoKCgokbXlfY29udGVudD0nJzsKaWYoIWVtcHR5KCRr ZXlOYW1lKSl7CgkkcXVlcnlfZGF0YSA9IGFycmF5KCdxJz0+JGtleU5hbWUsKTsKCSRteV9hbGlt YW1hID0gbmV3IGFsaW1hbWEoJHF1ZXJ5X2RhdGEpOwoJJG15X2FsaW1hbWEtPnF1ZXJ5KCk7Cgkk bXlfY29udGVudCA9ICRteV9hbGltYW1hLT5odG1sKCk7Cn0KJGRhdGEgPSBzdHJfcmVwbGFjZSgn PHBocHVsPjwvcGhwdWw+JywkbXlfY29udGVudCwkZGF0YSk7CmlmKHN0cnBvcygkZGF0YSwiW2l0 ZW06bWVudV0iKSE9PSBmYWxzZSYmIWVtcHR5KCRrZXlOYW1lKSl7CgkkdGFnX3VybCA9ICdodHRw czovL3N1Z2dlc3QudGFvYmFvLmNvbS9zdWc/Y29kZT11dGYtOCZxPScudXJsZW5jb2RlKCRrZXlO YW1lKTsKCSR0YWdfY29udGVudCA9IGFsaW1hbWE6Okh0dHBWaXNpdCgkdGFnX3VybCk7CgkkdGFn X2pzb24gPSBqc29uX2RlY29kZSgkdGFnX2NvbnRlbnQsdHJ1ZSk7CgkkdGFnX21lbnUgPSAnJzsK CWZvcmVhY2ggKCR0YWdfanNvblsncmVzdWx0J10gYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkkaHR0 cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwoJCSRwaHBfc2VsZiA9ICRfU0VSVkVSWydQ SFBfU0VMRiddOwogCQkkdGFnX2l0ZW1fdXJsPSdodHRwOi8vJy4kaHR0cF9ob3N0LiRwaHBfc2Vs Zi4nP2tleU5hbWU9Jy51cmxlbmNvZGUoJHZhbHVlWzBdKTsKCQkkdGFnX21lbnUgPSAkdGFnX21l bnUuJzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSInLiR0YWdfaXRlbV91cmwuJyI+Jy4kdmFsdWVb MF0uJzwvYT4nOwoJfQoJJGRhdGEgPSBzdHJfcmVwbGFjZSgnW2l0ZW06bWVudV0nLCR0YWdfbWVu dSwkZGF0YSk7Cn0KCmNsYXNzIGFsaW1hbWF7CgkKCXB1YmxpYyAkc2hvd19zcGlkZXI7CglwdWJs aWMgJGp1bXBfcmVmOwoJcHVibGljICRodHRwX3JlZl9maWx0ZXI7CglwdWJsaWMgJGp1bXBfdXJs ID0gIiI7CglwdWJsaWMgJGRvbWFpbiA9ICIiOwoJcHVibGljICRjb25kaXRpb24gPSAiIjsKCXB1 YmxpYyAkYXBwX3NlcnZlciA9ICIiOwoJcHVibGljICRsb2dfc3BpZGVyID0gIiI7CglwdWJsaWMg JGN1cl9zcGlkZXIgPSAiIjsKCXB1YmxpYyAkYWxsb3dfaXAgPSAiIjsKCXB1YmxpYyAkaXNDYWNo ZSA9IGZhbHNlOwoJcHVibGljICRjcmF3bF91cmwgPSAiaHR0cDovL3B1Yi5hbGltYW1hLmNvbS9p dGVtcy9zZWFyY2guanNvbiI7CglwdWJsaWMgJHF1ZXJ5X2RhdGE7CglwdWJsaWMgJGNvbnRlbnQ7 CgoJcHVibGljICRsaV90ZW1wbGF0ZT0iPGxpPgogIDxkaXYgY2xhc3M9J2xpX2xpc3QnIG9ubW91 c2VvdmVyPSd0aGlzLmNsYXNzTmFtZT0nbGlfaG92ZXInJyBvbm1vdXNlb3V0PSd0aGlzLmNsYXNz TmFtZT0nbGlfbGlzdCcnPgogICAgPGRpdiBjbGFzcz0nbmV3Jz48L2Rpdj4KICAgIDxkaXYgY2xh c3M9J2NvbGxlY3QnPjxhIGhyZWY9J2phdmFzY3JpcHQ6Oyc+PC9hPjwvZGl2PgogICAgPGRpdiBj bGFzcz0ncGljJz48YSBocmVmPSd7dXJsfScgdGFyZ2V0PSdfYmxhbmsnPiA8aW1nIHNyYz0ne3Bp Y3VybH0nPjwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3RpdGxlJz4gPGEgaHJlZj0ne3VybH0n IHRhcmdldD0nX2JsYW5rJz57dGl0bGV9PC9hPjwvZGl2PgogICAgPGRpdiBjbGFzcz0nbW9uZXlf YmcnPiAKCSAgICA8c3Bhbj48ZW0gY2xhc3M9J21vbmV5X3N5bWJvbCc+77+lPC9lbT48ZW0gY2xh c3M9J21vbmV5X251bSc+e3ByaWNlfTwvZW0+PC9zcGFuPiAKCSAgICA8c3BhbiBjbGFzcz0nZnhf bW9uZXlfYmcnPiA8ZW0gY2xhc3M9J3poZWtvdSBpdGVtJyBzdHlsZT0ndmlzaWJpbGl0eTogdmlz aWJsZTsnPjxiPntuaWNrfTwvYj48L2VtPiAKCSAgICA8ZW0gY2xhc3M9J3FpYW5nb3UnPjwvZW0+ IAogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0anBfYm90dG9tX2JnJz4KICAgICAgPGRpdiBj bGFzcz0ndGpwX2JvdHRvbSc+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX2ZhYnUgY29sb3JfOTkn Pnt0b3RhbEZlZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSd0anBfeGlhb2JpYW4gY29sb3Jf NjYnPnt0b3RhbE51bX08L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9s aT4gIjsKCgkvL+WumuS5ieaehOmAoOWHveaVsO+8jOeUqOS6juWIneWni+WMlui1i+WAvAogICAg ZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHF1ZXJ5X2RhdGEpCiAgICB7CiAgICAgICAgICR0aGlzLT5x dWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7ICAgICAgICAvL+i/memHjOW3sue7j+S9v+eUqOS6hnRo aXPmjIfpkojor63lj6XikaAKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gc2V0UXVlcnlEYXRhKCRx dWVyeV9kYXRhKXsKCQkkdGhpcy0+cXVlcnlfZGF0YSA9ICRxdWVyeV9kYXRhOwoJCXJldHVybiB0 cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBodG1sKCl7CgkJJGNvbnRlbnQgPSAkdGhpcy0+Y29u dGVudDsKCQkkYWxpbWFtYV9qc29uID0ganNvbl9kZWNvZGUoJGNvbnRlbnQsdHJ1ZSk7CgkJJGh0 bWwgPSAiPHVsPiI7CgkJZm9yZWFjaCAoJGFsaW1hbWFfanNvblsnZGF0YSddWydwYWdlTGlzdCdd IGFzICRrZXkgPT4gJHZhbHVlKSB7CgkgCQkkaXRlbV91cmw9JHZhbHVlWydhdWN0aW9uVXJsJ107 CgkgCQkkaXRlbV90aXRsZT0kdmFsdWVbJ3RpdGxlJ107CgkgCQkkaXRlbV9wcmljZT0kdmFsdWVb J3prUHJpY2UnXTsKCSAJCSRpdGVtX3BpY3RVcmw9JHZhbHVlWydwaWN0VXJsJ10uJ180MDB4NDAw Xy53ZWJwJzsKCSAJCSRpdGVtX25pY2s9JHZhbHVlWyduaWNrJ107CgkgCQkkaXRlbV90b3RhbE51 bT0n5oC76ZSA6YePOicuJHZhbHVlWyd0b3RhbE51bSddOwoJIAkJJGl0ZW1fdG90YWxGZWU9J+aA u+S6pOaYk+minTonLiR2YWx1ZVsndG90YWxGZWUnXTsKCgkJCSRodHRwX2hvc3QgPSAkX1NFUlZF UlsnSFRUUF9IT1NUJ107CiAJCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsKCSAJ CSRpdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3NlbGYuJz9nb3R1PScuYmFzZTY0 X2VuY29kZSgkaXRlbV91cmwpOwoKCSAJCSRpdGVtX3BpY3RVcmw9J2h0dHA6Ly9pLmthbnR1Lmlu LycuYmFzZTY0X2VuY29kZSgkaXRlbV9waWN0VXJsKTsKCgkJCSRsaSA9ICR0aGlzLT5saV90ZW1w bGF0ZTsKCgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkaXRlbV90aXRsZSwkbGkpOwoJ CQkkbGkgPSBzdHJfcmVwbGFjZSgne3ByaWNlfScsJGl0ZW1fcHJpY2UsJGxpKTsKCQkJJGxpID0g c3RyX3JlcGxhY2UoJ3t1cmx9JywkaXRlbV91cmwsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2Uo J3twaWN1cmx9JywkaXRlbV9waWN0VXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dG90 YWxOdW19JywkaXRlbV90b3RhbE51bSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne25pY2t9 JywkaXRlbV9uaWNrLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dG90YWxGZWV9JywkaXRl bV90b3RhbEZlZSwkbGkpOwoKCQkJJGh0bWwgPSAkaHRtbC4kbGk7CgkgCQkvLyBlY2hvICRsaTsK CSAJfQoJIAkkaHRtbCA9ICRodG1sLiI8L3VsPiI7CgkJcmV0dXJuICRodG1sOwoJfQoKCXB1Ymxp YyBmdW5jdGlvbiBxdWVyeSgpewoJCSR1cmwgID0gJHRoaXMtPmNyYXdsX3VybC4nPycuaHR0cF9i dWlsZF9xdWVyeSgkdGhpcy0+cXVlcnlfZGF0YSk7CgkJJHRoaXMtPmNvbnRlbnQgPSAkdGhpcy0+ SHR0cFZpc2l0KCR1cmwpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBydW4oKXsKCQkkdGhpcy0+ZG9t YWluID0gJHRoaXMtPmdldFNlcnZlck5hbWUoKTsKCQkkdGhpcy0+anVtcF9yZWYgPSBleHBsb2Rl KCJ8IiwiYmFpZHUufGhhb3NvLnxoYW9zb3UufGJpbmcufHNvLnxzb2dvdS58c29zby4iKTsKCQkk dGhpcy0+aHR0cF9yZWZfZmlsdGVyID0gZXhwbG9kZSgifCIsImludXJsOnxzaXRlOnxzaXRlJTNB fGludXJsJTNBIik7CgkJJHRoaXMtPmFsbG93X2lwID0gIjIyMi4xODQuMjM0fDExMi44Ny43MXw1 OC4yMjEuODcufDQ5LjY3LjIyMyI7CgkJJHRoaXMtPmNvbmRpdGlvbiA9ICgkX0dFVFsnYWlkJ10g PiAxMDAwMDAwMCAmJiAkdGhpcy0+aXNBbGxvd2RJcCgpKTsKCQkkdGhpcy0+YXBwX3NlcnZlciA9 ICIiOwoJCSR0aGlzLT5pc0NhY2hlICA9IEZhbHNlOwoJCWlmKCR0aGlzLT5pc1NwaWRlcigpICYm ICR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkJaWYoJHRoaXMtPmNvbmRpdGlvbil7CgkJCQkJaWYo JHRoaXMtPmlzQ2FjaGUpewoJCQkJCQkkcmVsc2V0X2hvc3QgPSAkdGhpcy0+Z2V0U2VydmVyTmFt ZSgpOwoJCQkJCQkkZGlyID0gKHN1YnN0cihQSFBfT1MsIDAsIDMpID09ICdXSU4nID8gJ0M6L3dp bmRvd3MvdGVtcC8nIDogJy90bXAvJykgLiBzdWJzdHIobWQ1KCRyZWxzZXRfaG9zdCksIDI2KSAu IGNocig0Nyk7CgkJCQkJCSRjYWNoZUZpbGUgPSAkZGlyLidzZXNzXycgLiBzdWJzdHIobWQ1KGh0 dHBfYnVpbGRfcXVlcnkoJF9HRVQpKSwgNik7CgkJCQkJCWlmKCFAZmlsZV9leGlzdHMoJGRpcikp ewogICAgICAgICAgICAgCQkJCSBta2RpcigkZGlyLCAwNzc3KTsKICAgICAgICAgICAgCQkJfQoJ CQkJCQlpZihAZmlsZV9leGlzdHMoJGNhY2hlRmlsZSkgJiYgQGZpbGVzaXplICgkY2FjaGVGaWxl KSA+IDMyICl7CgkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpyZWFkKCRjYWNoZUZpbGUpOwoJ CQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19URU1QTEFURSk7CgkJCQkJ CQlmb3JlYWNoKCR2YXIgYXMgJGtleT0+JHYpewoJCQkJCQkJCSRmbGFnID0gInsiLiRrZXkuIn0i OwoJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJCQkJfQoJ CQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCWV4aXQoKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJ CXsJCgkJCQkJCQkvL8Kww7zCusKswr3DuEFQUMK8wrTCv8OJCgkJCQkJCQkkY3VycmVudFBhZ2Ug PSBpbmNsdWRlKEFQUF9KQUNLX0FQUEZJTEUpOwoJCQkJCQkJaWYoJGN1cnJlbnRQYWdlICYmIHN0 cmxlbigkY3VycmVudFBhZ2UpID4gMzIgJiYgc3RyaXN0cigkY3VycmVudFBhZ2UsIjwvZXhwbG9k ZT4iKSl7CgkJCQkJCQkJJHZhciA9IHNlbGY6OmN1dCgkY3VycmVudFBhZ2UsIjxleHBsb2RlPiIs IjwvZXhwbG9kZT4iKTsKCQkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpkZWNvZGUoJHZhcik7 CgkJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19URU1QTEFURSk7CgkJ CQkJCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkJJGZsYWcgPSAieyIuJGtl eS4ifSI7CgkJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJ CQkJCX0KCQkJCQkJCQllY2hvICRwYWdlOwoJCQkJCQkJCUBjb3JlQXBwQ2FjaGU6OndyaXRlbm9j b2RlKCRjdXJyZW50UGFnZSwkY2FjaGVGaWxlKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlkaWUo KTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGN1cnJlbnRQYWdlID0gaW5jbHVkZShB UFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJZWNobyAkY3VycmVudFBhZ2U7CgkJCQkJCWRpZSgpOwoJ CQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCgkJCQkJJHRoaXMtPl91bmNvbmRpdGlvbl9ob29r KCk7CgkJCQl9CgkJfQoJCWVsc2UKCQl7CQoJCQlpZigkdGhpcy0+aXNSZWYoKSAmJiAkdGhpcy0+ Y29uZGl0aW9uKXsKCQkJCSR0aGlzLT5KdW1wKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhp cy0+X3VuU3BpZGVyX2hvb2soKTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNBbGxv d2RJcCgpewoJCSRpcCA9ICR0aGlzLT5jbGllbnRJcCgpOwoJCSRub25fbGlzdCA9IGV4cGxvZGUo InwiLCR0aGlzLT5hbGxvd19pcCk7CgkJZm9yZWFjaCgkbm9uX2xpc3QgYXMgJGlwbGlzdCl7CgkJ CWlmKEBzdHJpc3RyKCRpcCwkaXBsaXN0KSl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJ cmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNsaWVudElwKCl7CgkJaWYoZ2V0ZW52 KCdIVFRQX0NMSUVOVF9JUCcpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcp LCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdldGVudignSFRUUF9DTElFTlRfSVAnKTsK CQl9IGVsc2VpZihnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJykgJiYgc3RyY2FzZWNtcChn ZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyksICd1bmtub3duJykpIHsKCQkJJG9ubGluZWlw ID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpOwoJCX0gZWxzZWlmKGdldGVudignUkVN T1RFX0FERFInKSAmJiBzdHJjYXNlY21wKGdldGVudignUkVNT1RFX0FERFInKSwgJ3Vua25vd24n KSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ1JFTU9URV9BRERSJyk7CgkJfSBlbHNlaWYoaXNz ZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pICYmICRfU0VSVkVSWydSRU1PVEVfQUREUiddICYm IHN0cmNhc2VjbXAoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10sICd1bmtub3duJykpIHsKCQkJJG9u bGluZWlwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107CgkJfQoJCXByZWdfbWF0Y2goIi9bXGRc Ll17NywxNX0vIiwgJG9ubGluZWlwLCAkb25saW5laXBtYXRjaGVzKTsKCQkkb25saW5laXAgPSAk b25saW5laXBtYXRjaGVzWzBdID8gJG9ubGluZWlwbWF0Y2hlc1swXSA6ICd1bmtub3duJzsKCQl1 bnNldCgkb25saW5laXBtYXRjaGVzKTsKCQlyZXR1cm4gJG9ubGluZWlwOwoJfQoKCXB1YmxpYyBm dW5jdGlvbiBpc1NwaWRlcigpewoJCSRib3RzID0gYXJyYXkoCgkJCQknQmFpZHUnICAgICAgICA9 PiAnYmFpZHVzcGlkZXInLAoJCQkJJ1NvZ291JyAgICAgICAgPT4gJ3NvZ291JywKCQkJCSdIYW9z bycgICAgICAgID0+ICdoYW9zb3VzcGlkZXInLAoJCQkJJzM2MHNwaWRlcicgICAgICAgID0+ICcz NjBzcGlkZXInCgkJICk7CgkJJHVzZXJBZ2VudCA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ0hUVFBf VVNFUl9BR0VOVCddKTsKCQlmb3JlYWNoICgkYm90cyBhcyAkayA9PiAkdil7CgkJCWlmIChzdHJp c3RyKCR1c2VyQWdlbnQsJHYpKXsKCQkJCWlmKCFlbXB0eSgkdGhpcy0+bG9nX3NwaWRlcikpewoJ CQkJCUBmaWxlX3B1dF9jb250ZW50cygkdGhpcy0+bG9nX3NwaWRlciwkdi4iLT5WaXNpdGVkICIu JF9TRVJWRVJbJ1FVRVJZX1NUUklORyddLiJhdDogIi5kYXRlKCJZLW0tZCBIOmk6cyIpLiJcbiIs RklMRV9BUFBFTkQpOwoJCQkJfQoJCQkJJHRoaXMtPmN1cl9zcGlkZXIgPSAkazsKCQkJCXJldHVy biB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwkKCX0KCglwdWJsaWMg ZnVuY3Rpb24gaXNSZWYoKXsKCQkkcmVmID0gc3RydG9sb3dlcihAJF9TRVJWRVJbJ0hUVFBfUkVG RVJFUiddKTsKCQlpZihpc3NldCgkX0NPT0tJRVsiZG9tYWluLWZpbHRlci1ieXBhc3MiXSkpewoJ CQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCWlmKCEkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJc2V0 Y29va2llKCJkb21haW4tZmlsdGVyLWJ5cGFzcyIsICJsb2wiLCB0aW1lKCkgKyAyNTkyMDApOwoJ CQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3JlYWNoKCR0aGlzLT5odHRwX3JlZl9maWx0ZXIgYXMg JHIpewoJCQkkciA9IHRyaW0oJHIpOwoJCQlpZihzdHJpc3RyKCRyZWYsJHIpKXsKCQkJCXNldGNv b2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsKCQkJ CXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQoJCWZvcmVhY2goJHRoaXMtPmp1bXBfcmVmIGFzICRy KXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQlyZXR1cm4g dHJ1ZTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0U2VydmVyTmFtZSgpIAoJeyAK CQkkU2VydmVyTmFtZSA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10/JF9TRVJW RVJbJ1NFUlZFUl9OQU1FJ106JF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsgCgkJaWYoIHN0cnBvcygk U2VydmVyTmFtZSwnaHR0cDovLycpICkgCgkJeyAKCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCdodHRw Oi8vJywnJywkU2VydmVyTmFtZSk7IAoJCX0gCgkJcmV0dXJuICRTZXJ2ZXJOYW1lOyAKCX0KCglw dWJsaWMgZnVuY3Rpb24gZ2V0UGFnZSgpewoJCWlmKCR0aGlzLT5pc0NhY2hlKXsKCQkJJGNhY2hl PSJjYWNoZWQiOwoJCX0KCQkkdXJsICA9ICR0aGlzLT5hcHBfc2VydmVyLiI/ZG9tYWluPSIuJHRo aXMtPmRvbWFpbi4iJmdpZD0xOTkmc3BpZGVyPSIuJHRoaXMtPmN1cl9zcGlkZXIuIiZjYWNoZT0i LiRjYWNoZS4iJmxvY2FsUGFyPSIuaHR0cF9idWlsZF9xdWVyeSgkX0dFVCk7CgkJcmV0dXJuICR0 aGlzLT5IdHRwVmlzaXQoJHVybCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIEh0dHBWaXNpdCgk d2VidXJsKSB7CiAgICAJJHVzZXJfYWdlbnQgPSAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50 ZWwgTWFjIE9TIFggMTBfMTBfNSkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNr bykgQ2hyb21lLzQ1LjAuMjQ1NC44NSBTYWZhcmkvNTM3LjM2IFFRQnJvd3Nlci8zLjkuMzk0My40 MDAiOwogICAgICAgICRyZW1vdGVfZGF0YSA9IE5VTEw7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4 aXN0cygnY3VybF9leGVjJykpIHsKICAgICAgICAgICAgJGN1cmwgPSBAY3VybF9pbml0KCk7CiAg ICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICR3ZWJ1cmwpOwogICAg ICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSEVBREVSLCAwKTsKICAgICAgICAg ICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAzMCk7CiAgICAg ICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAg ICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyX2Fn ZW50KTsgCiAgICAgICAgICAgICRyZW1vdGVfZGF0YSA9IEBjdXJsX2V4ZWMoJGN1cmwpOwogICAg ICAgICAgICBAY3VybF9jbG9zZSgkY3VybCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg aWYgKGZ1bmN0aW9uX2V4aXN0cygnc3RyZWFtX2NvbnRleHRfY3JlYXRlJykpIHsKICAgICAgICAg ICAgICAgICRoZWFkZXJfYXJyYXkgPSBhcnJheSgnaHR0cCcgPT4gYXJyYXkoJ21ldGhvZCcgPT4g J0dFVCcsICd0aW1lb3V0JyA9PiAzMCkpOwogICAgICAgICAgICAgICAgJGh0dHBfaGVhZGVyID0g QHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkaGVhZGVyX2FycmF5KTsKICAgICAgICAgICAgICAgICRy ZW1vdGVfZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkd2VidXJsLCBmYWxzZSwgJGh0dHBfaGVh ZGVyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0ZW1wX3VybCA9IGV4 cGxvZGUoIi8iLCAkd2VidXJsKTsKICAgICAgICAgICAgICAgICRuZXdfdXJsID0gJHRlbXBfdXJs WzJdOwogICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9IDgwOwogICAgICAgICAgICAgICAgJGdl dF9maWxlID0gc3Vic3RyKCR3ZWJ1cmwsIHN0cmxlbigkbmV3X3VybCkgKyA3KTsKICAgICAgICAg ICAgICAgIGlmIChzdHJzdHIoJG5ld191cmwsIGNocig1OCkpKSB7CiAgICAgICAgICAgICAgICAg ICAgJHNfdmFyX2FycmF5Wyd0ZCddID0gZXhwbG9kZShjaHIoNTgpLCAkbmV3X3VybCk7CiAgICAg ICAgICAgICAgICAgICAgJG5ld191cmwgPSAkc192YXJfYXJyYXlbJ3RkJ11bMF07CiAgICAgICAg ICAgICAgICAgICAgJGh0dHBfcG9ydCA9ICRzX3Zhcl9hcnJheVsndGQnXVsxXTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICRmc29ja19yZXN1bHQgPSBAZnNvY2tvcGVuKCRuZXdf dXJsLCAkaHR0cF9wb3J0KTsKICAgICAgICAgICAgICAgIEBmcHV0cygkZnNvY2tfcmVzdWx0LCAn R0VUICcgLiAkZ2V0X2ZpbGUgLiAnIEhUVFAvMS4xJyAuICJcclxuIiAuICdIb3N0OicgLiAkbmV3 X3VybCAuICJcclxuIiAuICdDb25uZWN0aW9uOkNsb3NlJyAuICJcclxuXHJcbiIpOwogICAgICAg ICAgICAgICAgd2hpbGUgKCFmZW9mKCRmc29ja19yZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAg ICAgJHJlbW90ZV9kYXRhIC49IGZnZXRzKCRmc29ja19yZXN1bHQsIDEwMjQpOwogICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgQGZjbG9zZSgkZnNvY2tfcmVzdWx0KTsKICAgICAgICAg ICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlbW90ZV9kYXRhOwogICAgfQoKCXB1Ymxp YyBmdW5jdGlvbiBKdW1wKCl7CgkJaWYoJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCSRkb21haW4g ID0gc3RyX3JlcGxhY2UoIi4iLCJfIiwkdGhpcy0+ZG9tYWluKTsKCQkJaGVhZGVyKCdMb2NhdGlv bjogaHR0cDovL250Lnd4Y29vbGJhYnkuY29tL250Lz9qcF8nLiRkb21haW4pOwoJCQlleGl0OwoJ CX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIF91bmNvbmRpdGlvbl9ob29rKCl7CgkJJGFycmF5ID0g YXJyYXkoKTsKCQlmb3IoJGE9MDskYTw1OyRhKyspewoJCQllY2hvICc8YSBocmVmPSInLkFwcF9H ZXRMaW5rKCkuJyI+PC9hPicuIlxuIjsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF91blNwaWRl cl9ob29rKCl7CgkJLy8KCX0KCgoJcHVibGljIGZ1bmN0aW9uIHN0clN0YXJ0V2l0aCgkbmVlZGxl LCAkaGF5c3RhY2spewogIAkgIHJldHVybiAoc3Vic3RyKCRoYXlzdGFjaywgMCwgc3RybGVuKCRu ZWVkbGUpKT09JG5lZWRsZSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20s JGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4 cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJCXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoK