PHA+PHN0cm9uZz7lvojkuYXlvojkuYXku6XliY3vvIzmiJHmnInkuKrmoqbmg7PvvIzlsLHmmK9TUUzms6jlhaXkuI3opoHooqtiYW7vvIzkuo7mmK9pcOS7o+eQhuaIkOS4uuS6hummlumAie+8jOS9huaYr+WliOS9lemSseWMheaciemZkO+8jOWPquiDveeIrOWPluWFjei0ueS7o+eQhu+8jOS6juaYr+WAn+mJtOS6huiuuOWkmuaWh+eroO+8jOW9ouaIkOS6huS7iuaXpeeahGlw5Luj55CG5rGg44CCPC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPnB5dGhvbue8luWGme+8jOWGheWuueS4u+imgea2ieWPiuWkmue6v+eoi+mXrumimOOAgeS7peWPiueIrOiZq+OAgjwvc3Ryb25nPjwvcD4KPGg0PjxhIG5hbWU9IuS4gOOAgeWFt+S9k+WunueOsOa1geeoi++8miI+PC9hPjxzcGFuPjwvc3Bhbj7kuIDjgIHlhbfkvZPlrp7njrDmtYHnqIvvvJo8L2g0PjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC80NTA1LzExNjljYTlkMTUwYjU5NWQzOTgwZTM5ZmU0YjY4Njc2XzIwMTI4LnBuZyIgYWx0PSIiPjwvcD4KPHA+5YyF5ous5LiJ5Liq5qih5Z2X77yaPGJyPuiOt+WPlmlw5Luj55CG5qih5Z2X77yI54is6Jmr6I635Y+WaXDvvInvvIzku6PnkIbmsaDmqKHlnZfvvIjlrp7njrDlrZjlgqjniKzlj5bnmoRpcO+8jOWGmeWFpeacieaViGlw5Luj55CG77yJ77yM6aqM6K+B5qih5Z2X77yI5a+554is5Y+W55qEaXDov5vooYzpqozor4HvvInvvIzojrflj5bmqKHlnZfvvIjojrflj5bmnInmlYhpcO+8jOW5tuWOu+mHje+8ge+8ieOAgjwvcD4KPGg0PjxhIG5hbWU9IuS6jOOAgeS7o+eggeWIhuaekO+8mu+8iOaMieeoi+W6j+aJp+ihjOmhuuW6j++8ieS7o+eggeWIhuaekO+8mu+8iOaMieeoi+W6j+aJp+ihjOmhuuW6j++8iSI+PC9hPjxzcGFuPjwvc3Bhbj7kuozjgIHku6PnoIHliIbmnpDvvJrvvIjmjInnqIvluo/miafooYzpobrluo/vvInku6PnoIHliIbmnpDvvJrvvIjmjInnqIvluo/miafooYzpobrluo/vvIk8L2g0PjxwPjxzdHJvbmc+77yI5LiA77yJ44CB5YWl5Y+j5paH5Lu277yaU3RhcnRBcGkucHk8L3N0cm9uZz48L3A+CjxwPjEuSW5pdDog6I635Y+W5b+F6KaB55qE5Y+C5pWw44CCPGJyPjIuZ2V0cHJveHk6IOiwg+eUqG1vZHVsZS5HZXRQcm94ee+8jOWkmue6v+eoi+S9v+eUqGV4ZWPlh73mlbDvvIzlrp7kvovljJYzLm1vZHVsZS5HZXRQcm94eeS4i+eahOexu++8jOW8gOWni+eIrOiZq+iOt+WPluS7o+eQhmlw44CCPGJyPjQuaXNwcm94ee+8muiwg+eUqG1vZHVsZS5Jc1Byb3h55ZKMbW9kdWxlLk9wdFBvb2znsbvvvIzlvqrnjq/liKTmlq3ojrflj5bku6PnkIbmsaDnmoRpcO+8jOW5tui/m+ihjOWIpOaWreOAgjxicj48aW1nIHNyYz0iaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvNDUwNS80MzFmY2Y3YmM5NTAxYTVjNTA1MTRkYzM3NjZiZjU2NV85NTI2Mi5wbmciIGFsdD0iIj48YnI+c3RhcnRwcm94ee+8mueoi+W6j+WFpeWPo+WHveaVsO+8jOS4ieS4quaooeW8j++8mi1jIGFwaSDlj6/ojrflj5blt7LniKzlj5blrZjlnKhpcHMudHh055qE5pyJ5pWI5Luj55CGMGlw77ybLXQgMTAwIDEwMOS4quWkmue6v+eoi+WQhOS4queIrOiZq+eIrOWPluS4gOasoeiOt+WPluacieaViOS7o+eQhu+8my10IDUwIC1tIDEgLXRpbWUgMTAgNTDkuKrlpJrnur/nqIvml6DpmZDmrKHlvqrnjq/niKzlj5bmnInmlYhpcO+8jOW5tuS4lOavjzEw5YiG6ZKf6L+b6KGM5b6q546v44CCPGJyPjxzdHJvbmc+5YW35L2T5Luj56CB5aaC5LiL77yaPC9zdHJvbmc+PC9wPgo8cHJlPjxjb2RlPiMgLSotIGNvZGluZzp1dGYtOCAtKi0KIyBBdXRob3I6cWl1emlzaGFuCmltcG9ydCBtb2R1bGUuR2V0UHJveHkKZnJvbSBtb2R1bGUuT3B0UG9vbCBpbXBvcnQgUHJveHlQb29sCmZyb20gbW9kdWxlLklzUHJveHkgaW1wb3J0IElzUHJveHkKZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAppbXBvcnQgdGltZQpmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQpmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgpmcm9tIG1vZHVsZS5HZXRBcGkgaW1wb3J0IEdldEFwaQoKCmNsYXNzIFN0YXJ0QXBpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIGFyZyA9IEFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSYjMzk7YmFpZHVfdXJsX2NvbGxlY3Rpb24mIzM5OykKICAgICAgICBhcmcuYWRkX2FyZ3VtZW50KCYjMzk7LXQmIzM5OywgaGVscD0mIzM5O+e6v+eoi+aVsOmHjyDpu5jorqQxMOS4que6v+eoiyYjMzk7LCB0eXBlPWludCwgZGVmYXVsdD0xMCkKICAgICAgICBhcmcuYWRkX2FyZ3VtZW50KCYjMzk7LWMmIzM5OywgaGVscD0mIzM5O+m7mOiupOeIrOWPlmlw6L+b6KGM6aqM6K+BIC1jIGFwaSDljbPlj6/ojrflj5ZpcHMudHh055qEaXDlgLzvvIEmIzM5OywgdHlwZT1zdHIsIGRlZmF1bHQ9JiMzOTtnZXRwcm94eSYjMzk7KQogICAgICAgIGFyZy5hZGRfYXJndW1lbnQoJiMzOTstbSYjMzk7LCBoZWxwPSYjMzk76buY6K6k5Y+q54is5Y+W5LiA5qyh77yMLW0gMSDlj6/lrp7njrDml6Dnur/lvqrnjq/vvIzpu5jorqQ45YiG6ZKf54is5Y+W5LiA5qyhJiMzOTssIHR5cGU9aW50LCBkZWZhdWx0PTApCiAgICAgICAgYXJnLmFkZF9hcmd1bWVudCgmIzM5Oy10aW1lJiMzOTssIGhlbHA9JiMzOTvpu5jorqQ45YiG6ZKf54is5Y+W5LiA5qyh77yMLW0gMTAg5a6e546w5q+PMTDliIbpkp/niKzlj5bkuIDmrKHvvIzmkK3phY0tbeS9v+eUqO+8jOacgOWlveS4jeS9juS6jjXliIbpkp8mIzM5OywgdHlwZT1pbnQsIGRlZmF1bHQ9OCkKICAgICAgICBhcmdzID0gYXJnLnBhcnNlX2FyZ3MoKQogICAgICAgIHNlbGYucXVlID0gUXVldWUoKQogICAgICAgIHNlbGYuYyA9IGFyZ3MuYwogICAgICAgIHNlbGYudCA9IGFyZ3MudCAgIyDojrflj5bnur/nqIvvvIHvvIHvvIHov5nlvojph43opoHvvIEKICAgICAgICBzZWxmLm0gPSBhcmdzLm0KICAgICAgICBzZWxmLnRpbWUgPSBhcmdzLnRpbWUKCiAgICBkZWYgZ2V0cHJveHkoc2VsZik6CiAgICAgICAgJiMzOTsmIzM5OyYjMzk7CiAgICAgICAg5pyJ5Yeg5Liq5Luj55CG77yM5bCx5Lya5pyJ5Yeg5Liq57q/56iL54is5Y+W5Luj55CG77yBCiAgICAgICAgOnBhcmFtIG1zZzoKICAgICAgICA6cmV0dXJuOiDlvqrnjq/ojrflj5bku6PnkIbvvIzov5nph4zlj6/ku6XliqDlhaXojrflj5bku6PnkIbnmoTlrp7kvosKICAgICAgICAmIzM5OyYjMzk7JiMzOTsKICAgICAgICB0aHJlYWQgPSBbXQogICAgICAgIHVzZW1vZGVscyA9IFsmIzM5O0JlYXV0aWZ1bFNvdXAmIzM5OywgJiMzOTtQcm94eVBvb2wmIzM5OywgJiMzOTtfX2J1aWx0aW5zX18mIzM5OywgJiMzOTtfX2NhY2hlZF9fJiMzOTssICYjMzk7X19kb2NfXyYjMzk7LCAmIzM5O19fZmlsZV9fJiMzOTssICYjMzk7X19sb2FkZXJfXyYjMzk7LCAmIzM5O19fbmFtZV9fJiMzOTssICYjMzk7X19wYWNrYWdlX18mIzM5OywgJiMzOTtfX3NwZWNfXyYjMzk7LCAmIzM5O2RhdGV0aW1lJiMzOTssICYjMzk7cmUmIzM5OywgJiMzOTtyZXF1ZXN0cyYjMzk7LCAmIzM5O3RpbWUmIzM5O10KICAgICAgICBnZXRtb2RlbHMgPSBkaXIobW9kdWxlLkdldFByb3h5KQogICAgICAgIGZvciBpIGluIGdldG1vZGVsczoKICAgICAgICAgICAgaWYgaSBub3QgaW4gdXNlbW9kZWxzOgogICAgICAgICAgICAgICAgIyDnlKjkuo7mtYvor5XmmK/lkKblrZjlnKjku6PnkIZwcmludChpKQogICAgICAgICAgICAgICAgc2VsZi5xdWUucHV0KCYjMzk7aW1wb3J0IG1vZHVsZS5HZXRQcm94eVxubW9kdWxlLkdldFByb3h5LiYjMzk7ICsgaSArICYjMzk7KCkmIzM5OykKICAgICAgICBwcm94eU51bSA9IHNlbGYucXVlLnFzaXplKCkgICMg5pyJ5Yeg5Liq54is6Jmr5bCx5byA5ZCv5Yeg5Liq57q/56iLCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgcHJveHlOdW0pOgogICAgICAgICAgICB0ID0gVGhyZWFkKHRhcmdldD1leGVjLCBhcmdzPShzZWxmLnF1ZS5nZXQoKSwpKQogICAgICAgICAgICB0aHJlYWQuYXBwZW5kKHQpCiAgICAgICAgZm9yIGkgaW4gdGhyZWFkOgogICAgICAgICAgICBpLnN0YXJ0KCkKICAgICAgICAgICAgIyBwcmludChmJiMzOTvnur/nqIvmlbA6e2l95byA5aeLJiMzOTspCiAgICAgICAgZm9yIGkgaW4gdGhyZWFkOgogICAgICAgICAgICBpLmpvaW4oKQoKICAgIGRlZiBpc3Byb3h5KHNlbGYsIG1zZyk6CiAgICAgICAgJnF1b3Q7JnF1b3Q7JnF1b3Q7CiAgICAgICAgOnJldHVybjog5b6q546v5Yik5pat5Luj55CGCiAgICAgICAgJnF1b3Q7JnF1b3Q7JnF1b3Q7CiAgICAgICAgcHAgPSBQcm94eVBvb2woKQogICAgICAgIGlwID0gSXNQcm94eShzZWxmLnQpCiAgICAgICAgcHJpbnQobXNnKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGZsYWcgPSBwcC5nZXRfbGVuZ3RoX3Bvb2woKQogICAgICAgICAgICBpZiBmbGFnID09IDA6CiAgICAgICAgICAgICAgICBwcmludCgmcXVvdDvpgIDlh7rlvqrnjq8mcXVvdDspCiAgICAgICAgICAgICAgICBicmVhayAgIyDpgIDlh7rlvqrnjq8KICAgICAgICAgICAgaXAuc3RhcnRJc1Byb3h5KCkKCiAgICBkZWYgc3RhcnRwcm94eShzZWxmKToKICAgICAgICAmIzM5OyYjMzk7JiMzOTsKICAgICAgICDlpJrov5vnqIvlkIzml7bov5DooYwKICAgICAgICAmIzM5OyYjMzk7JiMzOTsKICAgICAgICBpZiBzZWxmLmMgPT0gJiMzOTthcGkmIzM5OzoKICAgICAgICAgICAgZ2EgPSBHZXRBcGkoKQogICAgICAgICAgICBnYS5zdGFydChzZWxmLnQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc2VsZi5tOgogICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICBnZXRwcm94eSA9IFRocmVhZCh0YXJnZXQ9c2VsZi5nZXRwcm94eSkKICAgICAgICAgICAgICAgICAgICBpc3Byb3h5ID0gVGhyZWFkKHRhcmdldD1zZWxmLmlzcHJveHksIGFyZ3M9KCYjMzk75Luj55CG5Yik5pat5LitJiMzOTssKSkKICAgICAgICAgICAgICAgICAgICBnZXRwcm94eS5zdGFydCgpCiAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCg1KSAgIyBJcFBvb2zkuIDlvIDlp4vml6DmlbDmja7vvIzlm6DmraTlhYjniKzlj5bliqDlhaVJcFBvb2zliJfooajkuK3vvIzpmLLmraLlh7rplJkKICAgICAgICAgICAgICAgICAgICBpc3Byb3h5LnN0YXJ0KCkKICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHNlbGYudGltZSo2MCkgICMg5q+P6ZqU5aSa6ZW/5pe26Ze054is5Y+W5LiA5qyhCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBnZXRwcm94eSA9IFRocmVhZCh0YXJnZXQ9c2VsZi5nZXRwcm94eSkKICAgICAgICAgICAgICAgIGlzcHJveHkgPSBUaHJlYWQodGFyZ2V0PXNlbGYuaXNwcm94eSwgYXJncz0oJiMzOTvku6PnkIbliKTmlq3kuK0mIzM5OywpKQogICAgICAgICAgICAgICAgZ2V0cHJveHkuc3RhcnQoKQogICAgICAgICAgICAgICAgdGltZS5zbGVlcCg1KSAgIyBJcFBvb2zkuIDlvIDlp4vml6DmlbDmja7vvIzlm6DmraTlhYjniKzlj5bliqDlhaVJcFBvb2zliJfooajkuK3vvIzpmLLmraLlh7rplJkKICAgICAgICAgICAgICAgIGlzcHJveHkuc3RhcnQoKQogICAgICAgICAgICAgICAgZ2V0cHJveHkuam9pbigpCiAgICAgICAgICAgICAgICBpc3Byb3h5LmpvaW4oKQoKCmlmIF9fbmFtZV9fID09ICYjMzk7X19tYWluX18mIzM5OzoKICAgIHByaW50KCYjMzk7JiMzOTsmIzM5OwoKICAgICAgICBJSUkgICAgICAgICAgICAgICAgICAgICAgICBwcHBwcHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGxsCiAgICAgICAgSUlJICAgICAgICAgICAgICAgICAgICAgICAgcHAgICAgIHBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsbAogICAgICAgIElJSSAgICAgICAgICAgICAgICAgICAgICAgIHBwICAgICAgcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbGwKICAgICAgICBJSUkgIHBwcHBwcHBwICAgICAgICAgICAgICBwcCAgICAgcHAgICAgICAgIE9PT09PT08gICAgICAgIE9PT09PT08gICAgICAgbGxsCiAgICAgICAgSUlJICBwcCAgICAgcHAgICAgICAgICAgICAgcHBwcHBwcHAgICAgICAgIE9PICAgICAgT08gICAgIE9PICAgICAgT08gICAgIGxsbAogICAgICAgIElJSSAgcHAgICAgICBwcCAgICAgICAgICAgIHBwICAgICAgICAgICAgIE9PICAgICAgICBPTyAgIE9PICAgICAgICBPTyAgICBsbGwKICAgICAgICBJSUkgIHBwICAgICBwcCAgICAgICAgICAgICBwcCAgICAgICAgICAgICBPTyAgICAgICAgT08gICBPTyAgICAgICAgT08gICAgbGxsCiAgICAgICAgSUlJICBwcHBwcHBwcCAgIF9fX19fX19fXyAgcHAgICAgICAgICAgICAgIE9PICAgICAgT08gICAgIE9PICAgICAgT08gICAgIGxsbAogICAgICAgICAgICAgcHAgICAgICAgICAgICAgICAgICAgIHBwICAgICAgICAgICAgICAgT09PT09PT08gICAgICAgT09PT09PT08gICAgICBsbGwKICAgICAgICAgICAgIHBwICAgICAgIAogICAgICAgICAgICAgcHAgICAgICAgICB7diAxLjAgYXV0aG9yOueni+e0q+WxsSBRUTo2NDQ5NzY1MjAg5qyi6L+O5YqgceS6pOa1gX5+fQogICAgICAgICAgICAgcHAgICAgICAgICAgICAgICAgICAgCgogICAgJiMzOTsmIzM5OyYjMzk7KQogICAgc3RhcnQgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICBzYSA9IFN0YXJ0QXBpKCkKICAgIHNhLnN0YXJ0cHJveHkoKQogICAgZW5kID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgcHJpbnQoJnF1b3Q7dXNlIHRpbWU6JnF1b3Q7K3N0cihlbmQgLSBzdGFydCkgKyAmcXVvdDtzJnF1b3Q7KQo8L2NvZGU+PC9wcmU+CjxwPjxzdHJvbmc+77yI5LqM77yJ54is5Y+W5Luj55CGaXA6IG1vZHVsZS9HZXRQcm94eS5weTwvc3Ryb25nPjwvcD4KPHA+6Ieq5a6a5LmJ54is6Jmr57G777yaPGJyPjEuSW5pdO+8muS4jemcgOimgeaUueWPmO+8jOaKinByaW5055qE5YaF5a6556iN5b6u5pS55pS55Y2z5Y+v77yM5a6e546w5a6e5L6L5YyW5Y2z5Y+v5ZCv5Yqo6K+l54is6Jmr77yM5bm25oqK6I635Y+W55qE54is6Jmr5Yqg5YWl5Luj55CG5rGgUHJveHlQb29s6YeM6Z2iPGJyPjIuZ2V0X2x4bWxfYnlfdXJs77ya6I635Y+W6ZyA6KaB54is5Y+W6aG16Z2i55qE5YaF5a65PGJyPjMuZ2V0X3Byb3h5X2J5X2x4bWzvvJroh6rlrprkuYnnmoTniKzomavvvIzpnIDopoHov5Tlm55pcOWIl+ihqOOAgjxicj48aW1nIHNyYz0iaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvNDUwNS84MTdmZWY4M2RmNjg4ZTE4YTYyMzE3Yjg2MTgzNzQ2ZF81ODkyNy5wbmciIGFsdD0iIj48L3A+CjxoND48YSBuYW1lPSLlhbfkvZPku6PnoIHvvJoiPjwvYT48c3Bhbj48L3NwYW4+5YW35L2T5Luj56CB77yaPC9oND48cD7kvovlpoJpcDg4UHJveHk8L3A+CjxwcmU+PGNvZGU+IyAtKi0gY29kaW5nOnV0Zi04IC0qLQojIEF1dGhvcjpxaXV6aXNoYW4KaW1wb3J0IHJlcXVlc3RzCmZyb20gYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCmZyb20gbW9kdWxlLk9wdFBvb2wgaW1wb3J0IFByb3h5UG9vbAppbXBvcnQgdGltZQppbXBvcnQgcmUKJiMzOTsmIzM5OyYjMzk7Cui/memHjOWPr+S7peWumuS5ieWkmuS4quS7o+eQhuexu++8jOWPquimgeS/neivgeS7peKAnCoqLioqLioqLioqOioq4oCd5b2i5byP5aaC5rGg5Y2z5Y+v77yM54S25ZCO5ZyoZ2V0cHJveHkucHnkuK3liqDlhaXlpJrnur/nqIvljbPlj6/jgIIKJiMzOTsmIzM5OyYjMzk7CgoKY2xhc3MgZGVtb1Byb3h5OiAgIyBkZW1vCiAgICAmIzM5OyYjMzk7JiMzOTsKICAgIEdldCBBZ2VudCBmcm9tIHdlYiA4OWlwCiAgICAmIzM5OyYjMzk7JiMzOTsKICAgIGRlZiBfX2luaXRfXyhzZWxmKTogICMg6Ieq5Yqo54is5Y+W5bm25LiU5oqKaXDovpPlhaXku6PnkIbmsaDvvIEg5q2k5q615Ye95pWw5LiN6ZyA6KaB5pu05pS5LHByaW50IOeahOWGheWuueabtOaUueS4gOS4i+WNs+WPrwogICAgICAgIHNlbGYucHJveHkgPSBbXQogICAgICAgIHRyeToKICAgICAgICAgICAgcHJpbnQoJnF1b3Q7ZGVtb+S7o+eQhuW8gOWni+eIrOWPliZxdW90OykKICAgICAgICAgICAgc2VsZi5wcm94eSA9IHNlbGYuZ2V0X3Byb3h5X2J5X2x4bWwoc2VsZi5nZXRfbHhtbF9ieV91cmwoKSkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIHByaW50KCZxdW90O+WHuumUmeS6hu+8mnt9XG5+YWhh5Luj55CGZGVtb+WHieS6hu+8jOaxguS9oOS6huW/q+WOu+eci+eci+WQp++8gSZxdW90Oy5mb3JtYXQoZSkpCiAgICAgICAgaWYgc2VsZi5wcm94eSAhPSBbXToKICAgICAgICAgICAgcHAgPSBQcm94eVBvb2woKQogICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnByb3h5OgogICAgICAgICAgICAgICAgcHAuZ2V0X2ludG9fcG9vbChwKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KCZxdW90O2RlbW/ku6PnkIbniKzlj5bnmoTku6PnkIZpcOS4uuepuu+8geS7o+eQhuWPr+iDveWHieS6hu+8gSZxdW90OykKCiAgICBkZWYgZ2V0X2x4bWxfYnlfdXJsKHNlbGYpOgogICAgICAgIGhlYWRlcnMgPSB7CiAgICAgICAgICAgICAgICAmIzM5O1VzZXItQWdlbnQmIzM5OzogJiMzOTtNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvODAuMC4zOTg3LjE0OSBTYWZhcmkvNTM3LjM2JiMzOTsKICAgICAgICAgICAgICAgIH0KICAgICAgICByID0gcmVxdWVzdHMuZ2V0KCYjMzk7JiMzOTssIGhlYWRlcnM9aGVhZGVycykgICMg6L6T5YWl6ZyA6KaB54is5Y+W55qE572R56uZ77yBCiAgICAgICAgaWYgci5zdGF0dXNfY29kZSA9PSAyMDA6CiAgICAgICAgICAgIHJlc3BvbnNlID0gci50ZXh0CiAgICAgICAgICAgIHJldHVybiByZXNwb25zZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGV4aXQoJiMzOTtFcnJvcjogTW9kdWxlIEdldEFnZW50IFVybCBFcnJvciYjMzk7KQoKICAgIGRlZiBnZXRfcHJveHlfYnlfbHhtbChzZWxmLCByZXNwb25zZSk6CiAgICAgICAgaXAgPSBbXQogICAgICAgICMg54is5Y+W5L2g55qE5Luj55CG5YyF5ous56uv5Y+j5Zmi77yM5L6L5aaC77yMMTIzLjEyLjIuMzM6ODA4MCznhLblkI7mlL7ov5tpcOWIl+ihqOmHjOOAggogICAgICAgICMg6K+36L6T5YWl5oKo55qE54is6JmrfgogICAgICAgICMgcHJpbnQoaXApCiAgICAgICAgcmV0dXJuIGlwCgoKY2xhc3MgaXA4OVByb3h5OiAgIyA4OWlwCiAgICAmIzM5OyYjMzk7JiMzOTsKICAgIEdldCBBZ2VudCBmcm9tIHdlYiA4OWlwCiAgICAmIzM5OyYjMzk7JiMzOTsKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLnByb3h5ID0gW10KICAgICAgICB0cnk6CiAgICAgICAgICAgIHByaW50KCZxdW90Ozg5aXDku6PnkIblvIDlp4vniKzlj5YmcXVvdDspCiAgICAgICAgICAgIHNlbGYucHJveHkgPSBzZWxmLmdldF9wcm94eV9ieV9seG1sKHNlbGYuZ2V0X2x4bWxfYnlfdXJsKCkpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBwcmludCgmcXVvdDvlh7rplJnkuobvvJp7fVxufmFoYeS7o+eQhjg5aXDlh4nkuobvvIzmsYLkvaDkuoblv6vljrvnnIvnnIvlkKfvvIEmcXVvdDsuZm9ybWF0KGUpKQogICAgICAgIGlmIHNlbGYucHJveHkgIT0gW106CiAgICAgICAgICAgIHBwID0gUHJveHlQb29sKCkKICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5wcm94eToKICAgICAgICAgICAgICAgIHBwLmdldF9pbnRvX3Bvb2wocCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludCgmcXVvdDs4OWlw5Luj55CG54is5Y+W55qE5Luj55CGaXDkuLrnqbrvvIHku6PnkIblj6/og73lh4nkuobvvIEmcXVvdDspCgogICAgZGVmIGdldF9seG1sX2J5X3VybChzZWxmKToKICAgICAgICBoZWFkZXJzID0gewogICAgICAgICAgICAgICAgJiMzOTtVc2VyLUFnZW50JiMzOTs6ICYjMzk7TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzgwLjAuMzk4Ny4xNDkgU2FmYXJpLzUzNy4zNiYjMzk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgciA9IHJlcXVlc3RzLmdldCgmIzM5O2h0dHBzOi8vd3d3Ljg5aXAuY24vdHFkbC5odG1sP251bT0yMDAmYW1wO2FtcDthZGRyZXNzPSZhbXA7YW1wO2tpbGxfYWRkcmVzcz0mYW1wO2FtcDtwb3J0PSZhbXA7YW1wO2tpbGxfcG9ydD0mYW1wO2FtcDtpc3A9JiMzOTssIGhlYWRlcnM9aGVhZGVycykKICAgICAgICBpZiByLnN0YXR1c19jb2RlID09IDIwMDoKICAgICAgICAgICAgcmVzcG9uc2UgPSByLnRleHQKICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoJiMzOTtFcnJvcjogTW9kdWxlIEdldEFnZW50IFVybCBFcnJvciYjMzk7KQoKICAgIGRlZiBnZXRfcHJveHlfYnlfbHhtbChzZWxmLCByZXNwb25zZSk6CiAgICAgICAgaXAgPSBbXQogICAgICAgIHNvdXAgPSBCZWF1dGlmdWxTb3VwKHJlc3BvbnNlLCAmIzM5O2h0bWw1bGliJiMzOTspCiAgICAgICAgc291cC5maW5kX2FsbCgmIzM5O2RpdiYjMzk7KQogICAgICAgIGZvciBkaXYgaW4gc291cC5maW5kX2FsbCgmIzM5O2RpdiYjMzk7LCBzdHlsZT0mcXVvdDtwYWRkaW5nLWxlZnQ6MjBweDsmcXVvdDspOgogICAgICAgICAgICBmb3IgY2hpbGQgaW4gZGl2LmNoaWxkcmVuOgogICAgICAgICAgICAgICAgaWYgY2hpbGQuc3RyaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIGlmICYjMzk75pu05aW955So55qE5Luj55CGaXDor7forr/pl64mIzM5OyBub3QgaW4gY2hpbGQuc3RyaW5nOgogICAgICAgICAgICAgICAgICAgICAgICBpcC5hcHBlbmQoY2hpbGQuc3RyaW5nLnN0cmlwKCkpCiAgICAgICAgIyBwcmludChpcCkKICAgICAgICByZXR1cm4gaXAKPC9jb2RlPjwvcHJlPgo8cD48c3Ryb25nPu+8iOS4ie+8iWlw5Yqg5YWl5Luj55CG5rGgOiBtb2R1bGUvT3B0UG9vbC5weTwvc3Ryb25nPjwvcD4KPHA+PGltZyBzcmM9Imh0dHBzOi8vbmMwLmNkbi56a2FxLmNuL21kLzQ1MDUvNDZjMzcyMjYyZThjMjc2MjU2ZDRmZjM3OWUyZGIyYTFfMTUxNjMucG5nIiBhbHQ9IiI+PGJyPuebuOS/oeW+iOWuueaYk+eci+aHgu+8gTwvcD4KPHByZT48Y29kZT4jIC0qLSBjb2Rpbmc6dXRmLTggLSotCiMgQXV0aG9yOnFpdXppc2hhbgpmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQoKCiMgSXBQb29s5a2Y5YKo5omA5pyJ5pyq5qOA6aqM55qE5Luj55CG77yMUHJveHnnlKjkuo7lrZjlgqjlj6/nlKjnmoTku6PnkIYKSXBQb29sID0gUXVldWUoKQpQcm94eSA9IFF1ZXVlKCkKCgpjbGFzcyBQcm94eVBvb2w6CiAgICAmIzM5OyYjMzk7JiMzOTsKICAgIOS7o+eQhuaxoO+8gQogICAgJiMzOTsmIzM5OyYjMzk7CgogICAgZGVmIGdldF9pbnRvX3Bvb2woc2VsZiwgYXJncyk6ICAjIOaUvui/m+S7o+eQhuaxoOS4gOS4qmlwCiAgICAgICAgJiMzOTsmIzM5OyYjMzk7CiAgICAgICAgOnBhcmFtIGFyZ3M6CiAgICAgICAgOnJldHVybjogdW5rbm93biBJUCB3YXJlaG91c2luZwogICAgICAgICYjMzk7JiMzOTsmIzM5OwogICAgICAgIElwUG9vbC5wdXQoYXJncykKCiAgICBkZWYgZ2V0X2xlbmd0aF9wb29sKHNlbGYpOiAgIyDov5Tlm57ku6PnkIbmsaDmnKrpqozor4HnmoRpcOaVsOmHjwogICAgICAgIHJldHVybiBJcFBvb2wucXNpemUoKQoKICAgIGRlZiBnZXRfb3V0X3Bvb2woc2VsZik6ICAjIOWPluW+l+S7o+eQhuaxoOS4gOS4qmlwCiAgICAgICAgJiMzOTsmIzM5OyYjMzk7CiAgICAgICAgOnJldHVybjogdW5rbm93biBJUCBvdXRnb2luZwogICAgICAgICYjMzk7JiMzOTsmIzM5OwogICAgICAgIGlmIElwUG9vbC5xc2l6ZSgpOgogICAgICAgICAgICBnZXRpcCA9IElwUG9vbC5nZXQoKQogICAgICAgICAgICByZXR1cm4gZ2V0aXAKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludCgmcXVvdDtJcFBvb2zlj5jph4/ml6Dku6PnkIZpcOacquajgOa1iyZxdW90OykKICAgICAgICAgICAgcmV0dXJuIDAgICMg6Ziy5q2i5oql6ZSZCgogICAgZGVmIGdldF9pbnRvX3Byb3h5KHNlbGYsIGFyZ3MpOiAgIyDlhpnlhaXmnInmlYhpcAogICAgICAgICYjMzk7JiMzOTsmIzM5OwogICAgICAgIDpwYXJhbSBhcmdzOgogICAgICAgIDpyZXR1cm46IGVmZmVjdGl2ZSBJUCB3YXJlaG91c2luZwogICAgICAgICYjMzk7JiMzOTsmIzM5OwogICAgICAgIFByb3h5LnB1dChhcmdzKQogICAgICAgIGlwID0gUHJveHkuZ2V0KCkKICAgICAgICBwcmludChpcCArICYjMzk75pyJ5pWI5bey5YaZ5YWlaXBzLnR4dCYjMzk7KQogICAgICAgIHdpdGggb3BlbigmIzM5O2lwcy50eHQmIzM5OywgJiMzOTthJiMzOTssIGVuY29kaW5nPSYjMzk7dXRmLTgmIzM5OykgYXMgZmlsZToKICAgICAgICAgICAgZmlsZS53cml0ZShpcCsmIzM5O1xuJiMzOTspCgogICAgZGVmIGdldF9vdXRfcHJveHkoc2VsZik6ICAjIOi+k+WHuuacieaViGlwCiAgICAgICAgJiMzOTsmIzM5OyYjMzk7CiAgICAgICAgOnJldHVybjogZWZmZWN0aXZlIElQIG91dGdvaW5nCiAgICAgICAgJiMzOTsmIzM5OyYjMzk7CiAgICAgICAgcHJveHlfdHh0ID0gW10KICAgICAgICB3aXRoIG9wZW4oJiMzOTtpcHMudHh0JiMzOTssICYjMzk7ciYjMzk7LCBlbmNvZGluZz0mIzM5O3V0Zi04JiMzOTspIGFzIGZpbGU6CiAgICAgICAgICAgIHNlbGYucGFzc19pc3Byb3h5ID0gZmlsZS5yZWFkbGluZXMoKQogICAgICAgICAgICBmb3IgaSBpbiBzZWxmLnBhc3NfaXNwcm94eToKICAgICAgICAgICAgICAgIHByb3h5X3R4dC5hcHBlbmQoaS5yZXBsYWNlKCYjMzk7XG4mIzM5OywgJiMzOTsmIzM5OykpCiAgICAgICAgICAgIHJldHVybiBwcm94eV90eHQKPC9jb2RlPjwvcHJlPgo8cD48c3Ryb25nPu+8iOWbm++8iemqjOivgeS7o+eQhuaxoGlwOiBtb2R1bGUvSXNQcm94eS5weTwvc3Ryb25nPjwvcD4KPHA+6K+m57uG55qE55yL6L+Z5Liq5paH56ug5ZCnIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9yZWFkL2N2MTM3MjM4MTgiPmh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9yZWFkL2N2MTM3MjM4MTg8L2E+IOekvuWMuueahOaWh+eroOS4jeefpemBk+acieS7gOS5iGJ1Z++8jOaUueS6huS4gOS4i+mZhOS7tuWwsei/nuWGheWuueS5n+iiq+S/ruaUueS6huOAgjwvcD4=
| 用户名 | 金币 | 积分 | 时间 | 理由 |
| fenghua123 |
10.00 |
0 |
2021-10-03 21:09:54 |
一个受益终生的帖子~~ |
| Track-手电筒 |
80.00 |
0 |
2021-09-29 22:10:06 |
一个受益终生的帖子~~ |
godc
发表于 2022-4-24
评论列表
加载数据中...
医生
发表于 2022-7-19
评论列表
加载数据中...
一呼
发表于 2022-8-1
评论列表
加载数据中...
溜须拍马
发表于 2022-8-6
评论列表
加载数据中...
jepson
发表于 2022-8-22
评论列表
加载数据中...
youseya
发表于 2023-1-2
评论列表
加载数据中...
jw1122
发表于 2023-4-22
评论列表
加载数据中...
qr
发表于 1天前
评论列表
加载数据中...