From: David Chanters Date: 2009-07-12T23:08:51+09:00 Subject: Ruby threaded application suddenly stops working at 100% CPU --000e0cd24442457fbe046e82be4f Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hello all, For ages, I've been using the attached script to control songs played via MPD (found it on the Internet) -- I've used rubygems to install these libraries -- and they've not changed in ages. In a recent upgrade (using Debian Sid) the program now doesn't work -- and consumes 100% CPU and does nothing. The program is supposed to create a systray icon, and when clicked launched ncmpc in an rxvt-unicode window. This was working fine -- until I did a usual apt-get dist-upgrade and now it's not working. Would someone have any ideas how to go about debugging this? Attaching strace to the process doesn't reveal anything useful -- and perhaps there's some ruby-specific debug tools I can use to address this instead -- I am not sure. Any help greatly appreciated. The version of ruby I am using is: % ruby --version ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux] David --000e0cd24442457fbe046e82be4f Content-Type: application/x-ruby; name="rmpc-notify.rb" Content-Disposition: attachment; filename="rmpc-notify.rb" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fx1ucc410 IyEvdXNyL2Jpbi9ydWJ5CiMKIyBSbXBjIE5vdGlmeSB2MC4xCiMgQ29weXJpZ2h0IDIwMDcgQW5k cmV3IFJhZGVyIChueW1iLnVzKQojCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUm1wYyBOb3RpZnkK IwojIFJtcGMgTm90aWZ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFJtcGMgTm90aWZ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcg d2l0aCBSbXBjIE5vdGlmeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg MDIxMTAtMTMwMSAgVVNBCiMKCnJlcXVpcmUgJ3J1YnlnZW1zJwpyZXF1aXJlICdsaWJybXBkJwpy ZXF1aXJlICdSTm90aWZ5JwpyZXF1aXJlICd0aHJlYWQnCgojIHRoaXMgZGFlbW9uIGNvZGUgd2Fz IGhlYXZpbHkgaW5zcGlyZWQgYnkgY2ljb25pYSdzIHNuaXBwZXQKIyBhdCB0aGUgZm9sbG93aW5n OiBodHRwOi8vc25pcHBldHMuZHpvbmUuY29tL3Bvc3RzL3Nob3cvMjI2NQptb2R1bGUgRGFlbW9u CiAgSG9tZURpciA9IEZpbGUuZXhwYW5kX3BhdGgoICd+JyApCgogIGNsYXNzIEJhc2UKICAgIGRl ZiBzZWxmLnBpZF9maWxlCiAgICAgIEZpbGUuam9pbiggSG9tZURpciwgIi4je25hbWUuZG93bmNh c2V9LnBpZCIgKQogICAgZW5kCgogICAgZGVmIHNlbGYudXNyMV90cmFwCiAgICAgICMgZG8gbm90 aGluZywgdGhpcyBjYW4gYmUgdXNlZCBpbiB5b3VyIGNvZGUKICAgIGVuZAoKICAgIGRlZiBzZWxm LmRhZW1vbml6ZSggY21kLCAqYXJncyApCiAgICAgIENvbnRyb2xsZXIuZGFlbW9uaXplKCBzZWxm LCBjbWQsIGFyZ3MgKQogICAgZW5kCiAgZW5kCgogIG1vZHVsZSBQaWRGaWxlCiAgICBkZWYgc2Vs Zi5zdG9yZSggZGFlbW9uLCBwaWQgKQogICAgICBGaWxlLm9wZW4oIGRhZW1vbi5waWRfZmlsZSwg J3cnICkgZG8gfGZ8CiAgICAgICAgZiA8PCBwaWQKICAgICAgZW5kCiAgICBlbmQKCiAgICBkZWYg c2VsZi5sb2FkKCBkYWVtb24gKQogICAgICBJTy5yZWFkKCBkYWVtb24ucGlkX2ZpbGUgKS50b19p IHJlc2N1ZSBuaWwKICAgIGVuZAogIGVuZAoKICBtb2R1bGUgQ29udHJvbGxlcgogICAgZGVmIHNl bGYuZGFlbW9uaXplKCBkYWVtb24sIGNtZCwgYXJncyApCiAgICAgIGNhc2UgY21kCiAgICAgIHdo ZW4gJ3N0YXJ0JwogICAgICAgIEZpbGUuZGVsZXRlIGRhZW1vbi5waWRfZmlsZSBpZiBGaWxlLmZp bGU/IGRhZW1vbi5waWRfZmlsZQogICAgICAgIHN0YXJ0IGRhZW1vbiwgYXJncwogICAgICB3aGVu ICdzdG9wJwogICAgICAgIHN0b3AgZGFlbW9uCiAgICAgIHdoZW4gJ3Jlc3RhcnQnCiAgICAgICAg c3RvcCBkYWVtb24KICAgICAgICBzbGVlcCAwLjUKICAgICAgICBGaWxlLmRlbGV0ZSBkYWVtb24u cGlkX2ZpbGUgaWYgRmlsZS5maWxlPyBkYWVtb24ucGlkX2ZpbGUKICAgICAgICBzdGFydCBkYWVt b24sIGFyZ3MKICAgICAgd2hlbiAnemFwJwogICAgICAgIEZpbGUuZGVsZXRlIGRhZW1vbi5waWRf ZmlsZSBpZiBGaWxlLmZpbGU/IGRhZW1vbi5waWRfZmlsZQogICAgICB3aGVuICd1c3IxJwogICAg ICAgIGlmIG5vdCBGaWxlLmZpbGU/IGRhZW1vbi5waWRfZmlsZQogICAgICAgICAgcHV0cyAiUGlk IEZpbGUgbm90IGZvdW5kLCBpcyB0aGUgZGFlbW9uIHJ1bm5pbmc/IgogICAgICAgICAgZXhpdAog ICAgICAgIGVuZAogICAgICBwaWQgPSBQaWRGaWxlLmxvYWQgZGFlbW9uCiAgICAgIHBpZCAmJiBQ cm9jZXNzLmtpbGwoICJVU1IxIiwgcGlkICkKICAgICAgZWxzZQogICAgICAgIHB1dHMgIkludmFs aWQgQ29tbWFuZCAodmFsaWQ6IHN0YXJ0fHN0b3B8cmVzdGFydHx6YXB8dXNyMSkiCiAgICAgICAg ZXhpdAogICAgICBlbmQKICAgIGVuZAoKICAgIGRlZiBzZWxmLnN0YXJ0KCBkYWVtb24sIGFyZ3Mg KQogICAgICBpZiBGaWxlLmZpbGU/IGRhZW1vbi5waWRfZmlsZQogICAgICAgIHB1dHMgIlBpZCBm aWxlIGFscmVhZHkgZXhpc3RzLCBpcyB0aGUgZGFlbW9uIHJ1bm5pbmc/IgogICAgICAgIHB1dHMg IlVzZSB6YXAgdG8gY2xlYXIgb2xkIHBpZCBmaWxlcyIKICAgICAgICBleGl0CiAgICAgIGVuZAog ICAgICBleGl0IGlmIGZvcmsgICAgICAgICAgICAgICAgICAgICMgUGFyZW50IGV4aXN0cywgY2hp bGQgcnVucwogICAgICBQcm9jZXNzLnNldHNpZCAgICAgICAgICAgICAgICAgICMgQmVjb21lIHNl c3Npb24gbGVhZGVyCiAgICAgIGV4aXQgaWYgZm9yayAgICAgICAgICAgICAgICAgICAgIyBaYXAg c2Vzc2lvbiBsZWFkZXIKICAgICAgUGlkRmlsZS5zdG9yZSBkYWVtb24sIFByb2Nlc3MucGlkCiAg ICAgIERpci5jaGRpciAiLyIgICAgICAgICAgICAgICAgICAgIyBSZWxlYXNlIHdvcmtpbmcgZGly CiAgICAgIEZpbGUudW1hc2sgMDAwMCAgICAgICAgICAgICAgICAgIyBFbnN1cmUgc2Vuc2libGUg dW1hc2sKICAgICAgU1RESU4ucmVvcGVuICIvZGV2L251bGwiICAgICAgICAjIEZyZWUgZmlsZSBk ZXNjcmlwdGVycwogICAgICBTVERPVVQucmVvcGVuICIvZGV2L251bGwiLCAiYSIKICAgICAgU1RE RVJSLnJlb3BlbiBTVERPVVQKICAgICAgdHJhcCggIlRFUk0iICkgZG8KICAgICAgICBkYWVtb24u c3RvcAogICAgICAgIGV4aXQKICAgICAgZW5kCiAgICAgIHRyYXAoICJTSUdVU1IxIiApIGRvCiAg ICAgICAgZGFlbW9uLnVzcjFfdHJhcAogICAgICBlbmQKICAgICAgZGFlbW9uLnN0YXJ0IGFyZ3MK ICAgIGVuZAoKICAgIGRlZiBzZWxmLnN0b3AoIGRhZW1vbiApCiAgICAgIGlmIG5vdCBGaWxlLmZp bGU/IGRhZW1vbi5waWRfZmlsZQogICAgICAgIHB1dHMgIlBpZCBGaWxlIG5vdCBmb3VuZCwgaXMg dGhlIGRhZW1vbiBydW5uaW5nPyIKICAgICAgICBleGl0CiAgICAgIGVuZAogICAgICBwaWQgPSBQ aWRGaWxlLmxvYWQgZGFlbW9uCiAgICAgIEZpbGUuZGVsZXRlIGRhZW1vbi5waWRfZmlsZQogICAg ICBwaWQgJiYgUHJvY2Vzcy5raWxsKCAiVEVSTSIsIHBpZCApCiAgICAgIHJldHVybiBwaWQKICAg IGVuZAogIGVuZAplbmQKCmNsYXNzIFJtcGNOb3RpZnkgPCBEYWVtb246OkJhc2UKCiAgUExBWV9J TUcgPSAibWVkaWEtcGxheWJhY2stc3RhcnQiCiAgUEFVU0VfSU1HID0gIm1lZGlhLXBsYXliYWNr LXBhdXNlIgogIFNUT1BfSU1HID0gIm1lZGlhLXBsYXliYWNrLXN0b3AiCiAgU1lTX1RSQVlfSU1H ID0gIm1lZGlhLXBsYXliYWNrLXN0YXJ0IgoKICBDT05ORUNUX0lNRyA9ICJpbmZvIgogIERJU0NP Tk5FQ1RfSU1HID0gImVycm9yIgoKICBAZG9fcnVuX25jbXBjID0gMAoKICBkZWYgc2VsZi5zdGFy dCggYXJncyApCiAgICBAaG9zdCA9IGFyZ3NbMF0KICAgIEBwb3J0ID0gYXJnc1sxXQogICAgQG1w ZCA9IE1QRC5uZXcgQGhvc3QsIEBwb3J0CgogICAgQG1wZC5yZWdpc3Rlcl9jYWxsYmFjayggc2Vs Zi5tZXRob2QoJ3NvbmdfY2InKSwgTVBEOjpDVVJSRU5UX1NPTkdfQ0FMTEJBQ0sgKQogICAgQG1w ZC5yZWdpc3Rlcl9jYWxsYmFjayggc2VsZi5tZXRob2QoJ3N0YXRlX2NiJyksIE1QRDo6U1RBVEVf Q0FMTEJBQ0sgKQogICAgQG1wZC5yZWdpc3Rlcl9jYWxsYmFjayggc2VsZi5tZXRob2QoJ2Nvbm5l Y3Rpb25fY2InKSwgTVBEOjpDT05ORUNUSU9OX0NBTExCQUNLICkKCiAgICBOb3RpZnkuaW5pdCAi Um1wY05vdGlmeSIKCiAgICAjIyBUQTogIFNldHVwIGEgc3lzdHJheSBpY29uLgogICAgQHN5c3Ry YXlfaWNvbiA9IEd0azo6U3RhdHVzSWNvbi5uZXcKICAgIEBzeXN0cmF5X2ljb24uaWNvbl9uYW1l ID0gU1lTX1RSQVlfSU1HCiAgICBAc3lzdHJheV9pY29uLnNpZ25hbF9jb25uZWN0KCAnYWN0aXZh dGUnICkgeyB8YXwgc2VsZi50b2dnbGVfbmNtcGMoIEBzeXN0cmF5X2ljb24sIEBkb19ydW5fbmNt cGMgKSB9CgogICAgQHN5c190cmF5ICAgPSBOb3RpZnk6Ok5vdGlmaWNhdGlvbi5uZXcgIlRyYXki LG5pbCxuaWwsQHN5c3RyYXlfaWNvbgogICAgQHN0YXRlX25vdGUgPSBOb3RpZnk6Ok5vdGlmaWNh dGlvbi5uZXcgIlN0YXRlIiwiIiwiIixAc3lzdHJheV9pY29uCiAgICBAc29uZ19ub3RlID0gTm90 aWZ5OjpOb3RpZmljYXRpb24ubmV3ICJTb25nIiwiIiwiIixAc3lzdHJheV9pY29uCiAgICBAY29u bl9ub3RlID0gTm90aWZ5OjpOb3RpZmljYXRpb24ubmV3ICJDb25uIiwiIiwiIixAc3lzdHJheV9p Y29uCgoKICAgICMgQWN0dWFsbHkgc2hvdyB0aGUgc3lzdHJheSB3aW5kb3cKICAgIFRocmVhZC5u ZXcgeyBHdGsubWFpbiB9CgogICAgIyBTbGVlcCBlbm91Z2ggZm9yIHRoZSB0aHJlYWQgdG8gZXhp c3QuCiAgICBzbGVlcCAyCgogICAgIyBTZXR1cCB0aW1lb3V0IHZhbHVlcyBmb3IgZWFjaCBzdGF0 dXMgd2luZG93LgogICAgQHN0YXRlX25vdGUudGltZW91dCA9ICAyMDAwCiAgICBAc29uZ19ub3Rl LnRpbWVvdXQgPSAyMDAwCiAgICBAY29ubl9ub3RlLnRpbWVvdXQgPSAyMDAwCgogICAgcXVpdCA9 IGZhbHNlCgogICAgIyBTZXQgdXAgdGhlIHRyYXAgZm9yIEN0cmwtQyBwcmVzc2VzCiAgICB0cmFw ICJTSUdJTlQiIGRvCiAgICAgIHF1aXQgPSB0cnVlCiAgICBlbmQKCiAgICBAbXBkLmNvbm5lY3Qg dHJ1ZQoKICAgIGxvb3AgZG8KICAgICAgYnJlYWsgaWYgcXVpdAogICAgICBzbGVlcCAxCiAgICBl bmQKCiAgICBpZiBxdWl0CiAgICAgIHNlbGYuc3RvcAogICAgZW5kCiAgZW5kIAoKICBkZWYgc2Vs Zi50b2dnbGVfbmNtcGMoIHNpLCBkcj0xICkKCiAgICAjIFVnbHkhCiAgICBzeXN0ZW0oIi9ob21l L242dGFkYW0vYmluL2xtLnNoIikKICBlbmQKCiAgZGVmIHNlbGYuc3RvcAogICAgcHV0cyAiU2h1 dHRpbmcgZG93biBybXBjLW5vdGlmeSIKICAgIEBtcGQuZGlzY29ubmVjdAogICAgTm90aWZ5LnVu aW5pdAogIGVuZAoKICBkZWYgc2VsZi51c3IxX3RyYXAKICAgIGlmIEBtcGQuY29ubmVjdGVkPwog ICAgICBzdGF0ZSA9IEBtcGQuc3RhdHVzWydzdGF0ZSddCiAgICAgIGlmIHN0YXRlICE9ICdzdG9w JwogICAgICAgIHNlbGYuc29uZ19jYiBAbXBkLmN1cnJlbnRfc29uZwogICAgICBlbHNlCiAgICAg ICAgc2VsZi5zdGF0ZV9jYiBzdGF0ZQogICAgICBlbmQKICAgIGVsc2UKICAgICAgc2VsZi5jb25u ZWN0aW9uX2NiIGZhbHNlCiAgICBlbmQKICBlbmQKCiAgZGVmIHNlbGYub3V0cHV0X3NvbmcoIHNv bmcgKQogICAgcmV0ID0gIjxiPiIKICAgIGlmIG5vdCBzb25nLmFydGlzdC5uaWw/CiAgICAgIHJl dCArPSAiI3tzb25nLmFydGlzdH0gLSAiCiAgICBlbmQKCiAgICBpZiBub3Qgc29uZy50aXRsZS5u aWw/CiAgICAgIHJldCArPSAiI3tzb25nLnRpdGxlfSIKICAgIGVuZAoKICAgIGlmIHJldC5lbXB0 eT8KICAgICAgcmV0ID0gc29uZy5maWxlCiAgICBlbmQKCiAgICBzdGF0dXMgPSBAbXBkLnN0YXR1 cwoKICAgIHJldHVybiByZXQgaWYgc3RhdHVzLm5pbD8KCiAgICBzaXplID0gc3RhdHVzWydwbGF5 bGlzdGxlbmd0aCddCiAgICB0aW1lID0gc3RhdHVzWyd0aW1lJ10uc3BsaXQgJzonCgogICAgZV9t aW4gPSB0aW1lWzBdLnRvX2kgLyA2MAogICAgZV9ocnMgPSBlX21pbiAvIDYwCiAgICBlX21pbiA9 IGVfbWluICUgNjAKICAgIGVfc2VjID0gdGltZVswXS50b19pICUgNjAKCiAgICBlX3NlYyA9ICIw I3tlX3NlY30iIGlmIGVfc2VjIDwgMTAKCiAgICBocnMgPSBlX2hycyA9PSAwID8gIiIgOiAiI3tl X2hyc306IgoKICAgIHJldCArPSAiPC9iPlxuXG5UaW1lOiAje2hyc30je2VfbWlufToje2Vfc2Vj fVxuIgogICAgcmV0ICs9ICJCaXRyYXRlOiAje3N0YXR1c1snYml0cmF0ZSddfSBrYnBzXG4iCiAg ICByZXQgKz0gIlBsYXlsaXN0OiAje3NvbmcucG9zfSBvZiAje3NpemV9IgoKICAgIHJldHVybiBy ZXQKICBlbmQKCiAgZGVmIHNlbGYuc3RhdGVfY2IoIG5ld3N0YXRlICkKICAgIEBjb25uX25vdGUu Y2xvc2UKICAgIEBzdGF0ZV9ub3RlLmNsb3NlCiAgICBjYXNlIG5ld3N0YXRlCiAgICB3aGVuICdw bGF5JwogICAgICBzb25nID0gQG1wZC5jdXJyZW50X3NvbmcKICAgICAgQHN5c3RyYXlfaWNvbi5i bGlua2luZyA9IGZhbHNlCiAgICAgIEBzdGF0ZV9ub3RlLnVwZGF0ZSAiTVBEOiBQbGF5aW5nIixv dXRwdXRfc29uZyhzb25nKSxQTEFZX0lNRwogICAgd2hlbiAncGF1c2UnCiAgICAgIHNvbmcgPSBA bXBkLmN1cnJlbnRfc29uZwogICAgICBAc3RhdGVfbm90ZS51cGRhdGUgIk1QRDogUGF1c2VkIixv dXRwdXRfc29uZyhzb25nKSxQQVVTRV9JTUcKICAgICAgQHN5c3RyYXlfaWNvbi5ibGlua2luZyA9 IHRydWUKICAgIHdoZW4gJ3N0b3AnCiAgICAgIEBzdGF0ZV9ub3RlLnVwZGF0ZSAiTVBEOiBTdG9w cGVkIixuaWwsU1RPUF9JTUcKICAgIGVsc2UKICAgICAgcmV0dXJuCiAgICBlbmQKICAgIEBzdGF0 ZV9ub3RlLnNob3cKICBlbmQKCiAgZGVmIHNlbGYuc29uZ19jYiggY3VycmVudCApCiAgICByZXR1 cm4gaWYgY3VycmVudC5uaWw/CiAgICBzdGF0dXMgPSBAbXBkLnN0YXR1cwogICAgcmV0dXJuIGlm IHN0YXR1cy5uaWw/IG9yIHN0YXR1c1snc3RhdGUnXSAhPSAncGxheScKICAgIEBjb25uX25vdGUu Y2xvc2UKICAgIEBzdGF0ZV9ub3RlLmNsb3NlCiAgICBAc29uZ19ub3RlLmNsb3NlCiAgICBAc29u Z19ub3RlLnVwZGF0ZSAiUGxheWluZzoiLG91dHB1dF9zb25nKGN1cnJlbnQpLCJhdWRpby14LWdl bmVyaWMiCiAgICBAc29uZ19ub3RlLnNob3cKICBlbmQKCiAgZGVmIHNlbGYuY29ubmVjdGlvbl9j YiggY29ubmVjdGVkICkKICAgIEBjb25uX25vdGUuY2xvc2UKICAgIGlmIG5vdCBjb25uZWN0ZWQK ICAgICAgQGNvbm5fbm90ZS51cGRhdGUgIk1QRDogRGlzY29ubmVjdGVkIiwKICAgICAgICAgICAg ICAgICJEaXNjb25uZWN0ZWQgZnJvbSBNUEQgYXQgJyN7QGhvc3R9OiN7QHBvcnR9JyIsCiAgICAg IERJU0NPTk5FQ1RfSU1HCiAgICAgIEBjb25uX25vdGUudXJnZW5jeSA9IE5vdGlmeTo6Tm90aWZp Y2F0aW9uOjpVUkdFTkNZX0NSSVRJQ0FMCiAgICAgIEBjb25uX25vdGUuc2hvdwogICAgZWxzZQog ICAgICBAY29ubl9ub3RlLnVwZGF0ZSAiTVBEOiBDb25uZWN0ZWQiLAogICAgICAgICAgICAgICAg IlN1Y2Nlc3NmdWxseSBjb25uZWN0ZWQgdG8gTVBEIGF0ICcje0Bob3N0fToje0Bwb3J0fSciLAog ICAgICBDT05ORUNUX0lNRwogICAgICBAY29ubl9ub3RlLnVyZ2VuY3kgPSBOb3RpZnk6Ok5vdGlm aWNhdGlvbjo6VVJHRU5DWV9OT1JNQUwKICAgICAgQGNvbm5fbm90ZS5zaG93CiAgICBlbmQKICBl bmQKZW5kCgpkZWYgX3JtcGNfdXNhZ2UKICBwdXRzICJybXBjLW5vdGlmeS5yYiB1c2FnZTpcbiIK ICBwdXRzICJcdC1oIGhvc3QgLSBNUEQgaG9zdG5hbWUgKGRlZmF1bHQ6IGxvY2FsaG9zdClcbiIK ICBwdXRzICJcdC1wIHBvcnQgLSBNUEQgcG9ydCAoZGVmYXVsdDogNjYwMClcbiIKICBwdXRzICJc dC1kICAgICAgLSBlbmFibGUgZGFlbW9uIG1vZGUgKGRlZmF1bHQ6IG9mZilcbiIKICBwdXRzICJc dC1zICAgICAgLSBUZWxscyB0aGUgY3VycmVudGx5IHJ1bm5pbmcgZGFlbW9uIHRvXG4iCiAgcHV0 cyAiXHQgICAgICAgICAgZGlzcGxheSB0aGUgY3VycmVudCBzb25nXG4iCiAgcHV0cyAiXHQtayAg ICAgIC0gc3RvcCBhbiBhbHJlYWR5IHJ1bm5pbmcgY29weVxuIgogIHB1dHMgIlx0LS1oZWxwICAt IHByaW50IHRoaXMgaGVscFxuIgogIHB1dHMgIlxuQ29weXJpZ2h0IDIwMDcgQW5kcmV3IFJhZGVy IgplbmQKCmhvc3QgPSAnbG9jYWxob3N0Jwpwb3J0ID0gNjYwMApkYWVtb24gPSBmYWxzZQpraWxs ID0gZmFsc2UKCmkgPSAwCmxvb3AgZG8KICBicmVhayBpZiBpID49IEFSR1YubGVuZ3RoCiAgY2Fz ZSBBUkdWW2ldCiAgd2hlbiAnLXAnCiAgICBpKz0xCiAgICBwb3J0ID0gQVJHVltpXQogIHdoZW4g Jy1oJwogICAgaSs9MQogICAgaG9zdCA9IEFSR1ZbaV0KICB3aGVuICctZCcKICAgIGRhZW1vbiA9 IHRydWUKICB3aGVuICctaycKICAgIHBpZCA9IFJtcGNOb3RpZnkuZGFlbW9uaXplICdzdG9wJwog ICAgcHV0cyAiU3RvcHBlZCBybXBjLW5vdGlmeSAocGlkICN7cGlkfSkiCiAgICBleGl0CiAgd2hl biAnLXonCiAgICBSbXBjTm90aWZ5LmRhZW1vbml6ZSAnemFwJwogICAgcHV0cyAiWmFwcGVkIChy ZW1vdmVkKSBvbGQgcGlkIGZpbGUiCiAgICBleGl0CiAgd2hlbiAnLXMnCiAgICBSbXBjTm90aWZ5 LmRhZW1vbml6ZSAndXNyMScKICAgIGV4aXQKICB3aGVuICctLWhlbHAnCiAgICBfcm1wY191c2Fn ZQogICAgZXhpdAogIGVsc2UKICAgIF9ybXBjX3VzYWdlCiAgICBleGl0CiAgZW5kCiAgaSs9MQpl bmQKCmlmIGhvc3QubmlsPyBvciBwb3J0Lm5pbD8KICBfcm1wY191c2FnZQogIGV4aXQKZW5kCgpp ZiBkYWVtb24KICBSbXBjTm90aWZ5LmRhZW1vbml6ZSAnc3RhcnQnLCBob3N0LCBwb3J0CmVsc2UK ICBSbXBjTm90aWZ5LnN0YXJ0IFtob3N0LHBvcnRdCmVuZAo= --000e0cd24442457fbe046e82be4f--