--00504502bc639b1d3004777bf8a1 Content-Type: text/plain; charset=ISO-8859-1 okay, that was long and painful, but i have emerged triumphant ... i hope :) http://pastie.org/681968 and attached martin --00504502bc639b1d3004777bf8a1 Content-Type: application/octet-stream; name="hamurabi.rb" Content-Disposition: attachment; filename="hamurabi.rb" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1l0n7as0 IyAqKiogQ09OVkVSVEVEIEZST00gVEhFIE9SSUdJTkFMIEZPQ0FMIFBST0dSQU0gQU5EIE1PRElG SUVECiMgKioqIEZPUiBFRFVTWVNURU0gNzAgQlkgREFWSUQgQUhMLCBESUdJVEFMCiMgKioqIE1P RElGSUVEIEZPUiA4SyBNSUNST1NPRlQgQkFTSUMgQlkgUEVURVIgVFVSTkJVTEwKIyAqKiogUlVC WSBQT1JUIEJZIE1BUlRJTiBERU1FTExPCgpjbGFzcyBBZHZpc29yRXhjZXB0aW9uIDwgRXhjZXB0 aW9uOyBlbmQKCmNsYXNzIEhhbXVyYWJpCiAgYXR0cl9hY2Nlc3NvciA6eWVhciwgOnBvcHVsYXRp b24sIDphY3JlcywgOmdyYWluLCA6ZXhjaGFuZ2UKICBhdHRyX2FjY2Vzc29yIDpzdGF0cywgOnN0 YXJ2ZWQsIDppbmMsIDpyYXRzLCA6aGFydmVzdAoKICBkZWYgaW5pdGlhbGl6ZQogICAgQHN0YXRz ID0gezp0b3RhbCA9PiAwLCA6YXZnID0+IDB9ICMgc3RhcnZhdGlvbiBzdGF0aXN0aWNzCiAgICBA eWVhciA9IDAKICAgIEBwb3B1bGF0aW9uID0gOTUKICAgIEBncmFpbiA9IDI4MDAKICAgIEByYXRz ID0gMjAwCiAgICBAYWNyZXMgPSAxMDAwCiAgICBAc3RhcnZlZCA9IDAKICAgIEBpbmMgPSA1CiAg ICBAaGFydmVzdCA9IDMKICBlbmQKCiAgZGVmIGludHJvCiAgICBwdXRzICJUUlkgWU9VUiBIQU5E IEFUIEdPVkVSTklORyBBTkNJRU5UIFNVTUVSSUEiCiAgICBwdXRzICJTVUNDRVNTRlVMTFkgRk9S IEEgMTAtWVIgVEVSTSBPRiBPRkZJQ0UuIgogICAgcHV0cwogIGVuZAoKICBkZWYgcm9sbAogICAg cmFuZCg1KSArIDEKICBlbmQKICAKICBkZWYgdXBkYXRlCiAgICBzZWxmLnllYXIgKz0gMQogICAg c2VsZi5leGNoYW5nZSA9IHJhbmQoMTApICsgMTcKICAgIHNlbGYucG9wdWxhdGlvbiArPSBpbmMK ICAgIHB1dHMKICAgIHB1dHMKICAgIHB1dHMgIkhBTVVSQUJJOiAgSSBCRUcgVE8gUkVQT1JUIFRP IFlPVSwiCiAgICBwdXRzICJJTiBZRUFSICN7eWVhcn0sICN7c3RhcnZlZH0gUEVPUExFIFNUQVJW RUQsICN7aW5jfSBDQU1FIFRPIFRIRSBDSVRZLiIKICAgIHB1dHMgIlBPUFVMQVRJT04gSVMgTk9X ICN7cG9wdWxhdGlvbn0iIAogICAgcHV0cyAiVEhFIENJVFkgTk9XIE9XTlMgI3thY3Jlc30gQUNS RVMuIgogICAgcHV0cyAiWU9VIEhBUlZFU1RFRCAje2hhcnZlc3R9IEJVU0hFTFMgUEVSIEFDUkUu IgogICAgcHV0cyAiUkFUUyBBVEUgI3tyYXRzfSBCVVNIRUxTLiIKICAgIHB1dHMgIllPVSBOT1cg SEFWRSAje2dyYWlufSBCVVNIRUxTIElOIFNUT1JFLiIKICAgIHB1dHMKICBlbmQKCiAgZGVmIGN5 Y2xlCiAgICB1cGRhdGUKCiAgICAjIG1ha2UgZGVjaXNpb25zCiAgICB0cmFkZV9sYW5kCiAgICBm ZWQgPSBhbGxvY2F0ZV9mb29kIC8gMjAKICAgIHBsYW50ZWQgPSBwbGFudF9ncmFpbgogICAgCiAg ICAjIHRocm93IHRoZSBkaWNlCiAgICBzZWxmLmhhcnZlc3QgPSByb2xsCiAgICBjcm9wID0gcGxh bnRlZCAqIGhhcnZlc3QKICAgIGMgPSByb2xsCiAgICBzZWxmLnJhdHMgPSBjICUgMiA9PSAwID8g Z3JhaW4vYyA6IDAKICAgIHNlbGYuZ3JhaW4gPSBncmFpbiAtIHJhdHMgKyBjcm9wIAogICAgCiAg ICBzZWxmLmluYyA9IHJvbGwqKDIwKmFjcmVzK2dyYWluKS9wb3B1bGF0aW9uLzEwMCsxCiAgICBw bGFndWUgaWYgcmFuZCA8IDAuMTUKICAgIHN0YXJ2ZWQgPSBwb3B1bGF0aW9uIDwgZmVkID8gMCA6 IHBvcHVsYXRpb24gLSBmZWQKICAgIGltcGVhY2hlZCEoc3RhcnZlZCkgaWYgc3RhcnZlZCA+IHBv cHVsYXRpb24gKiAwLjQ1CiAgICBzdGF0c1s6YXZnXSA9KCh5ZWFyIC0gMSkgKiBzdGF0c1s6YXZn XSArIHN0YXJ2ZWQgKiAxMDAuMC9wb3B1bGF0aW9uKS95ZWFyCiAgICBzdGF0c1s6dG90YWxdICs9 IHN0YXJ2ZWQKICBlbmQKCiAgZGVmIHBsYWd1ZQogICAgc2VsZi5wb3B1bGF0aW9uIC89IDIKICAg IHB1dHMgIkEgSE9SUklCTEUgUExBR1VFIFNUUlVDSyEgIEhBTEYgVEhFIFBFT1BMRSBESUVELiIK ICBlbmQKCiAgIyBkZWNpc2lvbnMKICBkZWYgcmVmdXNlCiAgICBwdXRzCiAgICBwdXRzICJIQU1V UkFCSTogIEkgQ0FOTk9UIERPIFdIQVQgWU9VIFdJU0guIgogICAgcHV0cyAiR0VUIFlPVVJTRUxG IEFOT1RIRVIgU1RFV0FSRCEhISEhIgogICAgYnllCiAgZW5kCiAgCiAgZGVmIGdldF9udW0ocHJv bXB0KQogICAgcHJpbnQgIiN7cHJvbXB0fTogIgogICAgaSA9IGdldHMudG9faQogICAgcmVmdXNl IGlmIGkgPCAwCiAgICBpCiAgZW5kCgogIGRlZiBhY3Rpb24KICAgIHdoaWxlIHRydWUKICAgICAg YmVnaW4KICAgICAgICByZXR1cm4geWllbGQKICAgICAgcmVzY3VlIEFkdmlzb3JFeGNlcHRpb24g PT4gZQogICAgICAgIHB1dHMgZS50b19zICsgIiBOT1csIFRIRU4sIgogICAgICBlbmQKICAgIGVu ZAogIGVuZAoKICBkZWYgY2hlY2soY29uZCwgbXNnKQogICAgcmFpc2UgQWR2aXNvckV4Y2VwdGlv bi5uZXcobXNnKSB1bmxlc3MgY29uZAogIGVuZAoKICBkZWYgb3V0X29mX2dyYWluX2Vycm9yCiAg ICByZXR1cm4gIkhBTVVSQUJJOiAgVEhJTksgQUdBSU4uIFlPVSBIQVZFIE9OTFkgI3tncmFpbn0g QlVTSEVMUyBPRiBHUkFJTi4iCiAgZW5kCgogIGRlZiBzZWxsX2xhbmQKICAgIGFjdGlvbiBkbwog ICAgICBxID0gZ2V0X251bSgle0hPVyBNQU5ZIEFDUkVTIERPIFlPVSBXSVNIIFRPIFNFTEx9KQog ICAgICBjaGVjayhxIDwgYWNyZXMsICJIQU1VUkFCSTogIFRISU5LIEFHQUlOLiBZT1UgT1dOIE9O TFkgI3thY3Jlc30gQUNSRVMuIikKICAgICAgc2VsZi5hY3JlcyAtPSBxCiAgICAgIHNlbGYuZ3Jh aW4gKz0gZXhjaGFuZ2UqcQogICAgZW5kCiAgZW5kCgogIGRlZiB0cmFkZV9sYW5kCiAgICBwdXRz ICJMQU5EIElTIFRSQURJTkcgQVQgI3tleGNoYW5nZX0gQlVTSEVMUyBQRVIgQUNSRS4iCiAgICBh Y3Rpb24gZG8KICAgICAgcSA9IGdldF9udW0oIkhPVyBNQU5ZIEFDUkVTIERPIFlPVSBXSVNIIFRP IEJVWSIpCiAgICAgIHJldHVybiBzZWxsX2xhbmQgaWYgcSA9PSAwCiAgICAgIGNoZWNrKGV4Y2hh bmdlICogcSA8PSBncmFpbiwgb3V0X29mX2dyYWluX2Vycm9yKQogICAgICBzZWxmLmFjcmVzICs9 IHEKICAgICAgc2VsZi5ncmFpbiAtPSBleGNoYW5nZSpxCiAgICBlbmQKICBlbmQKCiAgZGVmIGFs bG9jYXRlX2Zvb2QKICAgIGFjdGlvbiBkbwogICAgICBxID0gZ2V0X251bSgiSE9XIE1BTlkgQlVT SEVMUyBETyBZT1UgV0lTSCBUTyBGRUVEIFlPVVIgUEVPUExFIikKICAgICAgY2hlY2socSA8PSBn cmFpbiwgb3V0X29mX2dyYWluX2Vycm9yKQogICAgICBzZWxmLmdyYWluIC09IHEKICAgICAgcQog ICAgZW5kCiAgZW5kCgogIGRlZiBwbGFudF9ncmFpbgogICAgYWN0aW9uIGRvCiAgICAgIGQgPSBn ZXRfbnVtKCJIT1cgTUFOWSBBQ1JFUyBETyBZT1UgV0lTSCBUTyBQTEFOVCBXSVRIIFNFRUQiKQog ICAgICByZXR1cm4gMCBpZiBkID09IDAKICAgICAgY2hlY2soZCA8PSBhY3JlcywgIkhBTVVSQUJJ OiAgVEhJTksgQUdBSU4uIFlPVSBPV04gT05MWSAje2FjcmVzfSBBQ1JFUy4iKQogICAgICBjaGVj ayhkLzIgPCBncmFpbiwgb3V0X29mX2dyYWluX2Vycm9yKQogICAgICBjaGVjayhkIDwgMTAqcG9w dWxhdGlvbiwgIkJVVCBZT1UgSEFWRSBPTkxZICN7cG9wdWxhdGlvbn0gUEVPUExFIFRPIFRFTkQg VEhFIEZJRUxEUy4iKQogICAgICBzZWxmLmdyYWluIC09IGQvMgogICAgICBkCiAgICBlbmQKICBl bmQKCiAgZGVmIHNjb3JlCiAgICBsID0gYWNyZXMvcG9wdWxhdGlvbgogICAgYSA9IHN0YXRzWzph dmddCiAgICBwdXRzICJJTiBZT1VSIDEwLVlFQVIgVEVSTSBPRiBPRkZJQ0UsICN7YX0gUEVSQ0VO VCBPRiBUSEUiCiAgICBwdXRzICJQT1BVTEFUSU9OIFNUQVJWRUQgUEVSIFlFQVIgT04gQVZFUkFH RSwgSS5FLiwgQSBUT1RBTCBPRiIKICAgIHB1dHMgIiN7c3RhdHNbOnRvdGFsXX0gUEVPUExFIERJ RUQhISIKICAgIHB1dHMgIllPVSBTVEFSVEVEIFdJVEggMTAgQUNSRVMgUEVSIFBFUlNPTiBBTkQg RU5ERUQgV0lUSCIKICAgIHB1dHMgIiN7bH0gQUNSRVMgUEVSIFBFUlNPTi4iCiAgICBwdXRzCiAg ICBjYXNlIHRydWUKICAgIHdoZW4gKGEgPiAzMyBvciBsIDwgNykgdGhlbiBpbXBlYWNoIQogICAg d2hlbiAoYSA+IDEwIG9yIGwgPCA5KSB0aGVuIGxvc2UKICAgIHdoZW4gKGEgPiAzIG9yIGwgPCAx MCkgdGhlbiBibGVoCiAgICBlbHNlIHdpbgogICAgZW5kCiAgZW5kCgoKICBkZWYgd2luCiAgICBw dXRzICJBIEZBTlRBU1RJQyBQRVJGT1JNQU5DRSEhISAgQ0hBUkxFTUFOR0UsIERJU1JBRUxJLCBB TkQiCiAgICBwdXRzICJKRUZGRVJTT04gQ09NQklORUQgQ09VTEQgTk9UIEhBVkUgRE9ORSBCRVRU RVIhIgogIGVuZAoKICBkZWYgbG9zZQogICAgcHV0cyAiWU9VUiBIRUFWWS1IQU5ERUQgUEVSRk9S TUFOQ0UgU01BQ0tTIE9GIE5FUk8gQU5EIElWQU4gSVYuIgogICAgcHV0cyAiVEhFIFBFT1BMRSAo UkVNQUlOSU5HKSBGSU5EIFlPVSBBTiBVTlBMRUFTQU5UIFJVTEVSLCBBTkQsIgogICAgcHV0cyAi RlJBTktMWSwgSEFURSBZT1VSIEdVVFMhIgogIGVuZAoKICBkZWYgYmxlaAogICAgcHV0cyAiWU9V UiBQRVJGT1JNQU5DRSBDT1VMRCBIQVZFIEJFRU4gU09NRVdIQVQgQkVUVEVSLCBCVVQiCiAgICBw dXRzICJSRUFMTFkgV0FTTidUIFRPTyBCQUQgQVQgQUxMLiAiOwogICAgcHV0cyAiI3tyYW5kKHBv cHVsYXRpb24qOC8xMCl9IFBFT1BMRSBXT1VMRCIKICAgIHB1dHMgIkRFQVJMWSBMSUtFIFRPIFNF RSBZT1UgQVNTQVNTSU5BVEVEIEJVVCBXRSBBTEwgSEFWRSBPVVIiCiAgICBwdXRzICJUUklWSUFM IFBST0JMRU1TLiIKICBlbmQKCiAgZGVmIGltcGVhY2hlZCEoc3RhcnZlZCA9IG5pbCkKICAgIHB1 dHMKICAgIHB1dHMgIllPVSBTVEFSVkVEICN7c3RhcnZlZH0gUEVPUExFIElOIE9ORSBZRUFSISEh IiBpZiBzdGFydmVkCiAgICBwdXRzICJEVUUgVE8gVEhJUyBFWFRSRU1FIE1JU01BTkFHRU1FTlQg WU9VIEhBVkUgTk9UIE9OTFkiCiAgICBwdXRzICJCRUVOIElNUEVBQ0hFRCBBTkQgVEhST1dOIE9V VCBPRiBPRkZJQ0UgQlVUIFlPVSBIQVZFIgogICAgcHV0cyAiQUxTTyBCRUVOIERFQ0xBUkVEICdO QVRJT05BTCBGSU5LJyAhISIKICAgIGJ5ZQogIGVuZAoKICBkZWYgYnllCiAgICAxMC50aW1lcyB7 IHByaW50IDcuY2hyIH0KICAgIHB1dHMgIlNPIExPTkcgRk9SIE5PVy4iCiAgICBleGl0CiAgZW5k CgplbmQKCiMgbWFpbiBsb29wCgpnYW1lID0gSGFtdXJhYmkubmV3CmdhbWUuaW50cm8KMTAudGlt ZXMgeyBnYW1lLmN5Y2xlIH0KZ2FtZS5zY29yZQpieWUK --00504502bc639b1d3004777bf8a1--