1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 | 0 Value fd-in 0 Value fd-out create XX1 10000 ALLOT create temp 10000 ALLOT create pff 100000 chars allot variable contador : TEXT PAD 258 BL FILL WORD COUNT PAD SWAP MOVE ; : leuser CR ." Forneça o nome do arquivo a processar: " TIB 40 ACCEPT #TIB ! 0 >IN ! 1 TEXT PAD 40 r/o open-file throw to fd-in CR ." Forneça o arquivo resultado: " TIB 40 ACCEPT #TIB ! 0 >IN ! 1 TEXT PAD 40 w/o create-file throw to fd-out CR ." Processando.................... " ; \ INICIO CALCULO MD5 variable a variable b variable c variable d 1 a ! variable md5len create buf[] 64 allot create part[] 64 allot create md5pad 64 allot md5pad 64 0 fill 128 md5pad c! : lroll 2dup 32 swap - rshift rot rot lshift or ; a c@ [if] : endian@ @ ; : endian! ! ; [else] : endian@ >r r@ 3 + c@ 8 lshift r@ 2 + c@ + 8 lshift r@ 1 + c@ + 8 lshift r> c@ + ; : endian! >r 256 /mod swap r@ c! 256 /mod swap r@ 1+ c! 256 /mod swap r@ 2 + c! r> 3 + c! ; [then] : f() rot dup invert rot and rot rot and or ; : g() swap over invert and rot rot and or ; : h() xor xor ; : i() invert rot or xor ; : ff() >r cells buf[] + endian@ + >r 2over nip >r f() + r> swap r> + r> lroll + ; : gg() >r cells buf[] + endian@ + >r 2over nip >r g() + r> swap r> + r> lroll + ; : hh() >r cells buf[] + endian@ + >r 2over nip >r h() + r> swap r> + r> lroll + ; : ii() >r cells buf[] + endian@ + >r 2over nip >r i() + r> swap r> + r> lroll + ; hex : round1 a @ b @ c @ d @ 0d76aa478 00 07 ff() a ! d @ a @ b @ c @ 0e8c7b756 01 0c ff() d ! c @ d @ a @ b @ 0242070db 02 11 ff() c ! b @ c @ d @ a @ 0c1bdceee 03 16 ff() b ! a @ b @ c @ d @ 0f57c0faf 04 07 ff() a ! d @ a @ b @ c @ 04787c62a 05 0c ff() d ! c @ d @ a @ b @ 0a8304613 06 11 ff() c ! b @ c @ d @ a @ 0fd469501 07 16 ff() b ! a @ b @ c @ d @ 0698098d8 08 07 ff() a ! d @ a @ b @ c @ 08b44f7af 09 0c ff() d ! c @ d @ a @ b @ 0ffff5bb1 0a 11 ff() c ! b @ c @ d @ a @ 0895cd7be 0b 16 ff() b ! a @ b @ c @ d @ 06b901122 0c 07 ff() a ! d @ a @ b @ c @ 0fd987193 0d 0c ff() d ! c @ d @ a @ b @ 0a679438e 0e 11 ff() c ! b @ c @ d @ a @ 049b40821 0f 16 ff() b ! ; : round2 a @ b @ c @ d @ 0f61e2562 01 05 gg() a ! d @ a @ b @ c @ 0c040b340 06 09 gg() d ! c @ d @ a @ b @ 0265e5a51 0b 0e gg() c ! b @ c @ d @ a @ 0e9b6c7aa 00 14 gg() b ! a @ b @ c @ d @ 0d62f105d 05 05 gg() a ! d @ a @ b @ c @ 02441453 0a 09 gg() d ! c @ d @ a @ b @ 0d8a1e681 0f 0e gg() c ! b @ c @ d @ a @ 0e7d3fbc8 04 14 gg() b ! a @ b @ c @ d @ 021e1cde6 09 05 gg() a ! d @ a @ b @ c @ 0c33707d6 0e 09 gg() d ! c @ d @ a @ b @ 0f4d50d87 03 0e gg() c ! b @ c @ d @ a @ 0455a14ed 08 14 gg() b ! a @ b @ c @ d @ 0a9e3e905 0d 05 gg() a ! d @ a @ b @ c @ 0fcefa3f8 02 09 gg() d ! c @ d @ a @ b @ 0676f02d9 07 0e gg() c ! b @ c @ d @ a @ 08d2a4c8a 0c 14 gg() b ! ; : round3 a @ b @ c @ d @ 0fffa3942 05 04 hh() a ! d @ a @ b @ c @ 08771f681 08 0b hh() d ! c @ d @ a @ b @ 06d9d6122 0b 10 hh() c ! b @ c @ d @ a @ 0fde5380c 0e 17 hh() b ! a @ b @ c @ d @ 0a4beea44 01 04 hh() a ! d @ a @ b @ c @ 04bdecfa9 04 0b hh() d ! c @ d @ a @ b @ 0f6bb4b60 07 10 hh() c ! b @ c @ d @ a @ 0bebfbc70 0a 17 hh() b ! a @ b @ c @ d @ 0289b7ec6 0d 04 hh() a ! d @ a @ b @ c @ 0eaa127fa 00 0b hh() d ! c @ d @ a @ b @ 0d4ef3085 03 10 hh() c ! b @ c @ d @ a @ 04881d05 06 17 hh() b ! a @ b @ c @ d @ 0d9d4d039 09 04 hh() a ! d @ a @ b @ c @ 0e6db99e5 0c 0b hh() d ! c @ d @ a @ b @ 01fa27cf8 0f 10 hh() c ! b @ c @ d @ a @ 0c4ac5665 02 17 hh() b ! ; : round4 a @ b @ c @ d @ 0f4292244 00 06 ii() a ! d @ a @ b @ c @ 0432aff97 07 0a ii() d ! c @ d @ a @ b @ 0ab9423a7 0e 0f ii() c ! b @ c @ d @ a @ 0fc93a039 05 15 ii() b ! a @ b @ c @ d @ 0655b59c3 0c 06 ii() a ! d @ a @ b @ c @ 08f0ccc92 03 0a ii() d ! c @ d @ a @ b @ 0ffeff47d 0a 0f ii() c ! b @ c @ d @ a @ 085845dd1 01 15 ii() b ! a @ b @ c @ d @ 06fa87e4f 08 06 ii() a ! d @ a @ b @ c @ 0fe2ce6e0 0f 0a ii() d ! c @ d @ a @ b @ 0a3014314 06 0f ii() c ! b @ c @ d @ a @ 04e0811a1 0d 15 ii() b ! a @ b @ c @ d @ 0f7537e82 04 06 ii() a ! d @ a @ b @ c @ 0bd3af235 0b 0a ii() d ! c @ d @ a @ b @ 02ad7d2bb 02 0f ii() c ! b @ c @ d @ a @ 0eb86d391 09 15 ii() b ! ; decimal : transform a @ b @ c @ d @ round1 round2 round3 round4 d @ + d ! c @ + c ! b @ + b ! a @ + a ! ; hex : md5int 067452301 a ! 0efcdab89 b ! 098badcfe c ! 010325476 d ! 0 md5len ! ; decimal -1 value md5int? : setlen md5len @ 8 m* buf[] 60 + ! buf[] 56 + ! ; : dofullblocks begin dup 63 > while 64 - swap dup buf[] 64 move 64 + swap transform repeat ; : movepartial swap over buf[] swap move md5pad over buf[] + rot 64 swap - move ; : dofinal 2dup movepartial dup 55 > if transform buf[] 64 0 fill then 2drop setlen transform ; : md5full md5int dup md5len +! dofullblocks dofinal ; : savepart md5len @ 64 mod if part[] swap move else 2drop then ; : movepart 2dup 64 swap - min >r part[] + >r over r> r@ move swap r@ + swap r> - ; : md5update md5int? if md5int false to md5int? then md5len @ 64 mod over md5len +! dup if 2dup + 63 > if movepart part[] 64 dofullblocks dofullblocks savepart cr else movepart 2drop then else drop dofullblocks savepart then ; : md5final md5int? if md5int false to md5int? then md5len @ 64 mod over md5len +! dup if 2dup + 63 > if movepart part[] 64 dofullblocks dofullblocks dofinal else movepart 2drop part[] md5len @ 64 mod dofinal then else drop dofullblocks dofinal then ; create digit$ 48 c, 49 c, 50 c, 51 c, 52 c, 53 c, 54 c, 55 c, 56 c, 57 c, 97 c, 98 c, 99 c, 100 c, 101 c, 102 c, : intdigits 0 pad ! ; : savedigit pad c@ 1+ dup pad c! pad + c! ; : bytedigits dup 4 rshift digit$ + c@ savedigit 15 and digit$ + c@ savedigit ; a c@ [if] : celldigits dup 4 + swap do i c@ bytedigits loop ; [else] : celldigits dup 3 + do i c@ bytedigits -1 +loop ; [then] : md5string intdigits a celldigits b celldigits c celldigits d celldigits true to md5int? ; : .md5 md5full md5string ; \ FIM CALCULO MD5 : cap temp contador c@ pff place pff count .md5 ; : escreve pad count fd-out write-line THROW fd-out close-file throw ; : ler xx1 10000 fd-in read-line throw . contador ! fd-in close-file throw ; : bota 0 contador @ do xx1 i + c@ 0 > if xx1 i + c@ then -1 +loop ; : pbuf contador @ 0 do temp i + ! loop ; : inicio leuser ler bota pbuf cap escreve CR ." Arquivo Processado." CR ." Pressione qualquer tecla para sair " ; inicio key exit |
MCBWYWx1ZSBmZC1pbgowIFZhbHVlIGZkLW91dApjcmVhdGUgWFgxIDEwMDAwIEFMTE9UCmNyZWF0ZSB0ZW1wIDEwMDAwIEFMTE9UCmNyZWF0ZSBwZmYgMTAwMDAwIGNoYXJzIGFsbG90CnZhcmlhYmxlIGNvbnRhZG9yCgo6IFRFWFQgUEFEIDI1OCBCTCBGSUxMICBXT1JEIENPVU5UIFBBRCBTV0FQICBNT1ZFIDsKOiBsZXVzZXIKICAgICAgICBDUiAuIiBGb3JuZcOnYSBvIG5vbWUgZG8gYXJxdWl2byBhIHByb2Nlc3NhcjogIgogICAgICAgIFRJQiA0MCBBQ0NFUFQgI1RJQiAhICAwID5JTiAhCiAgICAgICAgMSBURVhUICBQQUQgNDAgci9vIG9wZW4tZmlsZSB0aHJvdyB0byBmZC1pbgogICAgICAgIENSIC4iIEZvcm5lw6dhIG8gYXJxdWl2byByZXN1bHRhZG86ICIKCVRJQiA0MCBBQ0NFUFQgI1RJQiAhICAwID5JTiAhCiAgICAgICAgMSBURVhUICBQQUQgNDAgdy9vIGNyZWF0ZS1maWxlIHRocm93IHRvIGZkLW91dAogICAgICAgIENSIC4iIFByb2Nlc3NhbmRvLi4uLi4uLi4uLi4uLi4uLi4uLi4gIiA7CgoKXCBJTklDSU8gQ0FMQ1VMTyBNRDUKCnZhcmlhYmxlIGEgICAgdmFyaWFibGUgYiAgICB2YXJpYWJsZSBjICAgIHZhcmlhYmxlIGQKMSBhICEKCnZhcmlhYmxlIG1kNWxlbgoKY3JlYXRlIGJ1ZltdIDY0IGFsbG90CmNyZWF0ZSBwYXJ0W10gNjQgYWxsb3QKY3JlYXRlIG1kNXBhZCA2NCBhbGxvdCAgIG1kNXBhZCA2NCAwIGZpbGwgIDEyOCBtZDVwYWQgYyEKCjogbHJvbGwKICAyZHVwIDMyIHN3YXAgLSByc2hpZnQgIHJvdCByb3QgbHNoaWZ0IG9yIDsKCmEgY0AgW2lmXQoKICA6IGVuZGlhbkAgICBAIDsKICA6IGVuZGlhbiEgICAhIDsKCltlbHNlXQogIDogZW5kaWFuQAogICAgPnIgckAgMyArIGNAIDggbHNoaWZ0ICAgckAgMiArIGNAICsgOCBsc2hpZnQKICAgIHJAIDEgKyBjQCArIDggbHNoaWZ0ICByPiBjQCArIDsKCiAgOiBlbmRpYW4hCiAgICA+ciAyNTYgL21vZCBzd2FwIHJAIGMhICAyNTYgL21vZCBzd2FwIHJAIDErIGMhCiAgICAyNTYgL21vZCBzd2FwIHJAIDIgKyBjISByPiAzICsgYyEgOwoKW3RoZW5dCgo6IGYoKSAgcm90IGR1cCBpbnZlcnQgcm90IGFuZCByb3Qgcm90IGFuZCBvciA7Cgo6IGcoKSAgc3dhcCBvdmVyIGludmVydCBhbmQgcm90IHJvdCBhbmQgb3IgOwoKOiBoKCkgIHhvciB4b3IgOwoKOiBpKCkgIGludmVydCByb3Qgb3IgeG9yIDsKCgo6IGZmKCkgID5yICBjZWxscyBidWZbXSArIGVuZGlhbkAgKyA+cgogIDJvdmVyIG5pcCA+ciBmKCkgKyByPiBzd2FwIHI+ICsgcj4gbHJvbGwgKyA7Cgo6IGdnKCkgID5yICBjZWxscyBidWZbXSArIGVuZGlhbkAgKyAgPnIKICAyb3ZlciBuaXAgPnIgIGcoKSArIHI+IHN3YXAgcj4gKyByPiBscm9sbCArIDsKCjogaGgoKSAgPnIgIGNlbGxzIGJ1ZltdICsgZW5kaWFuQCArID5yCiAgMm92ZXIgbmlwID5yICBoKCkgKyByPiBzd2FwIHI+ICsgcj4gbHJvbGwgKyA7Cgo6IGlpKCkgID5yICBjZWxscyBidWZbXSArIGVuZGlhbkAgKyA+cgogIDJvdmVyIG5pcCA+ciAgaSgpICsgcj4gc3dhcCByPiArIHI+IGxyb2xsICsgOwoKCmhleAo6IHJvdW5kMQogIGEgQCBiIEAgYyBAIGQgQCAwZDc2YWE0NzggMDAgMDcgZmYoKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMGU4YzdiNzU2IDAxIDBjIGZmKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDAyNDIwNzBkYiAwMiAxMSBmZigpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwYzFiZGNlZWUgMDMgMTYgZmYoKSBiICEKICBhIEAgYiBAIGMgQCBkIEAgMGY1N2MwZmFmIDA0IDA3IGZmKCkgYSAhCiAgZCBAIGEgQCBiIEAgYyBAIDA0Nzg3YzYyYSAwNSAwYyBmZigpIGQgIQogIGMgQCBkIEAgYSBAIGIgQCAwYTgzMDQ2MTMgMDYgMTEgZmYoKSBjICEKICBiIEAgYyBAIGQgQCBhIEAgMGZkNDY5NTAxIDA3IDE2IGZmKCkgYiAhCiAgYSBAIGIgQCBjIEAgZCBAIDA2OTgwOThkOCAwOCAwNyBmZigpIGEgIQogIGQgQCBhIEAgYiBAIGMgQCAwOGI0NGY3YWYgMDkgMGMgZmYoKSBkICEKICBjIEAgZCBAIGEgQCBiIEAgMGZmZmY1YmIxIDBhIDExIGZmKCkgYyAhCiAgYiBAIGMgQCBkIEAgYSBAIDA4OTVjZDdiZSAwYiAxNiBmZigpIGIgIQogIGEgQCBiIEAgYyBAIGQgQCAwNmI5MDExMjIgMGMgMDcgZmYoKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMGZkOTg3MTkzIDBkIDBjIGZmKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDBhNjc5NDM4ZSAwZSAxMSBmZigpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwNDliNDA4MjEgMGYgMTYgZmYoKSBiICEKICA7Cgo6IHJvdW5kMgogIGEgQCBiIEAgYyBAIGQgQCAwZjYxZTI1NjIgMDEgMDUgZ2coKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMGMwNDBiMzQwIDA2IDA5IGdnKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDAyNjVlNWE1MSAwYiAwZSBnZygpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwZTliNmM3YWEgMDAgMTQgZ2coKSBiICEKICBhIEAgYiBAIGMgQCBkIEAgMGQ2MmYxMDVkIDA1IDA1IGdnKCkgYSAhCiAgZCBAIGEgQCBiIEAgYyBAICAwMjQ0MTQ1MyAwYSAwOSBnZygpIGQgIQogIGMgQCBkIEAgYSBAIGIgQCAwZDhhMWU2ODEgMGYgMGUgZ2coKSBjICEKICBiIEAgYyBAIGQgQCBhIEAgMGU3ZDNmYmM4IDA0IDE0IGdnKCkgYiAhCiAgYSBAIGIgQCBjIEAgZCBAIDAyMWUxY2RlNiAwOSAwNSBnZygpIGEgIQogIGQgQCBhIEAgYiBAIGMgQCAwYzMzNzA3ZDYgMGUgMDkgZ2coKSBkICEKICBjIEAgZCBAIGEgQCBiIEAgMGY0ZDUwZDg3IDAzIDBlIGdnKCkgYyAhCiAgYiBAIGMgQCBkIEAgYSBAIDA0NTVhMTRlZCAwOCAxNCBnZygpIGIgIQogIGEgQCBiIEAgYyBAIGQgQCAwYTllM2U5MDUgMGQgMDUgZ2coKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMGZjZWZhM2Y4IDAyIDA5IGdnKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDA2NzZmMDJkOSAwNyAwZSBnZygpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwOGQyYTRjOGEgMGMgMTQgZ2coKSBiICEKICA7Cgo6IHJvdW5kMwogIGEgQCBiIEAgYyBAIGQgQCAwZmZmYTM5NDIgMDUgMDQgaGgoKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMDg3NzFmNjgxIDA4IDBiIGhoKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDA2ZDlkNjEyMiAwYiAxMCBoaCgpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwZmRlNTM4MGMgMGUgMTcgaGgoKSBiICEKICBhIEAgYiBAIGMgQCBkIEAgMGE0YmVlYTQ0IDAxIDA0IGhoKCkgYSAhCiAgZCBAIGEgQCBiIEAgYyBAIDA0YmRlY2ZhOSAwNCAwYiBoaCgpIGQgIQogIGMgQCBkIEAgYSBAIGIgQCAwZjZiYjRiNjAgMDcgMTAgaGgoKSBjICEKICBiIEAgYyBAIGQgQCBhIEAgMGJlYmZiYzcwIDBhIDE3IGhoKCkgYiAhCiAgYSBAIGIgQCBjIEAgZCBAIDAyODliN2VjNiAwZCAwNCBoaCgpIGEgIQogIGQgQCBhIEAgYiBAIGMgQCAwZWFhMTI3ZmEgMDAgMGIgaGgoKSBkICEKICBjIEAgZCBAIGEgQCBiIEAgMGQ0ZWYzMDg1IDAzIDEwIGhoKCkgYyAhCiAgYiBAIGMgQCBkIEAgYSBAICAwNDg4MWQwNSAwNiAxNyBoaCgpIGIgIQogIGEgQCBiIEAgYyBAIGQgQCAwZDlkNGQwMzkgMDkgMDQgaGgoKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMGU2ZGI5OWU1IDBjIDBiIGhoKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDAxZmEyN2NmOCAwZiAxMCBoaCgpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwYzRhYzU2NjUgMDIgMTcgaGgoKSBiICEKICA7Cgo6IHJvdW5kNAogIGEgQCBiIEAgYyBAIGQgQCAwZjQyOTIyNDQgMDAgMDYgaWkoKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMDQzMmFmZjk3IDA3IDBhIGlpKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDBhYjk0MjNhNyAwZSAwZiBpaSgpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwZmM5M2EwMzkgMDUgMTUgaWkoKSBiICEKICBhIEAgYiBAIGMgQCBkIEAgMDY1NWI1OWMzIDBjIDA2IGlpKCkgYSAhCiAgZCBAIGEgQCBiIEAgYyBAIDA4ZjBjY2M5MiAwMyAwYSBpaSgpIGQgIQogIGMgQCBkIEAgYSBAIGIgQCAwZmZlZmY0N2QgMGEgMGYgaWkoKSBjICEKICBiIEAgYyBAIGQgQCBhIEAgMDg1ODQ1ZGQxIDAxIDE1IGlpKCkgYiAhCiAgYSBAIGIgQCBjIEAgZCBAIDA2ZmE4N2U0ZiAwOCAwNiBpaSgpIGEgIQogIGQgQCBhIEAgYiBAIGMgQCAwZmUyY2U2ZTAgMGYgMGEgaWkoKSBkICEKICBjIEAgZCBAIGEgQCBiIEAgMGEzMDE0MzE0IDA2IDBmIGlpKCkgYyAhCiAgYiBAIGMgQCBkIEAgYSBAIDA0ZTA4MTFhMSAwZCAxNSBpaSgpIGIgIQogIGEgQCBiIEAgYyBAIGQgQCAwZjc1MzdlODIgMDQgMDYgaWkoKSBhICEKICBkIEAgYSBAIGIgQCBjIEAgMGJkM2FmMjM1IDBiIDBhIGlpKCkgZCAhCiAgYyBAIGQgQCBhIEAgYiBAIDAyYWQ3ZDJiYiAwMiAwZiBpaSgpIGMgIQogIGIgQCBjIEAgZCBAIGEgQCAwZWI4NmQzOTEgMDkgMTUgaWkoKSBiICEKICA7CmRlY2ltYWwKCjogdHJhbnNmb3JtCiAgYSBAIGIgQCAgIGMgQCBkIEAgIHJvdW5kMSByb3VuZDIgcm91bmQzIHJvdW5kNAogIGQgQCArIGQgISAgYyBAICsgYyAhICAgIGIgQCArIGIgISAgYSBAICsgYSAhICA7CgoKaGV4CjogbWQ1aW50CiAgMDY3NDUyMzAxIGEgISAgIDBlZmNkYWI4OSBiICEKICAwOThiYWRjZmUgYyAhICAgMDEwMzI1NDc2IGQgIQogIDAgbWQ1bGVuICEgIDsKZGVjaW1hbAoKLTEgdmFsdWUgbWQ1aW50PwoKOiBzZXRsZW4KICBtZDVsZW4gQCA4IG0qICBidWZbXSA2MCArICEgYnVmW10gNTYgKyAhIDsKCjogZG9mdWxsYmxvY2tzCiAgYmVnaW4gIGR1cCA2MyA+CiAgd2hpbGUgIDY0IC0gc3dhcCBkdXAgYnVmW10gNjQgbW92ZQogICAgICAgICA2NCArIHN3YXAgdHJhbnNmb3JtCiAgcmVwZWF0IDsKCjogbW92ZXBhcnRpYWwKICBzd2FwIG92ZXIgYnVmW10gc3dhcCBtb3ZlCiAgbWQ1cGFkIG92ZXIgYnVmW10gKyByb3QgNjQgc3dhcCAtIG1vdmUgOwoKOiBkb2ZpbmFsCiAgMmR1cCBtb3ZlcGFydGlhbCBkdXAgNTUgPgogIGlmICB0cmFuc2Zvcm0gIGJ1ZltdIDY0IDAgZmlsbCB0aGVuCiAgMmRyb3Agc2V0bGVuIHRyYW5zZm9ybSAgOwoKOiBtZDVmdWxsCiAgbWQ1aW50IGR1cCBtZDVsZW4gKyEgIGRvZnVsbGJsb2NrcyBkb2ZpbmFsIDsKCgo6IHNhdmVwYXJ0CiAgbWQ1bGVuIEAgNjQgbW9kIGlmICBwYXJ0W10gc3dhcCBtb3ZlICBlbHNlICAyZHJvcCAgdGhlbiAgOwoKOiBtb3ZlcGFydAogIDJkdXAgNjQgc3dhcCAtIG1pbiA+ciAgcGFydFtdICsgPnIgb3ZlciByPiByQCBtb3ZlCiAgc3dhcCByQCArIHN3YXAgcj4gLSA7CgoKOiBtZDV1cGRhdGUKICBtZDVpbnQ/IGlmIG1kNWludCBmYWxzZSB0byBtZDVpbnQ/IHRoZW4KICBtZDVsZW4gQCA2NCBtb2Qgb3ZlciBtZDVsZW4gKyEKICBkdXAgaWYgICAgMmR1cCArIDYzID4KICAgICAgICAgICAgaWYgICAgbW92ZXBhcnQgcGFydFtdIDY0IGRvZnVsbGJsb2NrcyAgZG9mdWxsYmxvY2tzCnNhdmVwYXJ0IGNyCiAgICAgICAgICAgIGVsc2UgIG1vdmVwYXJ0IDJkcm9wIHRoZW4KICAgICAgZWxzZSAgZHJvcCBkb2Z1bGxibG9ja3Mgc2F2ZXBhcnQgdGhlbiA7CgoKOiBtZDVmaW5hbAogIG1kNWludD8gaWYgbWQ1aW50IGZhbHNlIHRvIG1kNWludD8gdGhlbgogIG1kNWxlbiBAIDY0IG1vZCBvdmVyIG1kNWxlbiArIQogIGR1cCBpZiAgICAyZHVwICsgNjMgPgogICAgICAgICAgICBpZiAgICBtb3ZlcGFydCBwYXJ0W10gNjQgZG9mdWxsYmxvY2tzICBkb2Z1bGxibG9ja3MKZG9maW5hbAogICAgICAgICAgICBlbHNlICBtb3ZlcGFydCAyZHJvcCBwYXJ0W10gbWQ1bGVuIEAgNjQgbW9kIGRvZmluYWwgdGhlbgogICAgICBlbHNlICBkcm9wIGRvZnVsbGJsb2NrcyBkb2ZpbmFsIHRoZW4gOwoKY3JlYXRlIGRpZ2l0JAogIDQ4IGMsIDQ5IGMsIDUwIGMsIDUxIGMsIDUyIGMsIDUzIGMsIDU0IGMsIDU1IGMsIDU2IGMsIDU3IGMsCiAgOTcgYywgOTggYywgOTkgYywgMTAwIGMsIDEwMSBjLCAxMDIgYywKCjogaW50ZGlnaXRzCiAgMCBwYWQgISA7Cjogc2F2ZWRpZ2l0CiAgcGFkIGNAIDErIGR1cCBwYWQgYyEgcGFkICsgYyEgOwo6IGJ5dGVkaWdpdHMKICBkdXAgNCByc2hpZnQgZGlnaXQkICsgY0Agc2F2ZWRpZ2l0ICAxNSBhbmQgZGlnaXQkICsgY0Agc2F2ZWRpZ2l0IDsKYSBjQCBbaWZdCgogIDogY2VsbGRpZ2l0cwogICAgZHVwIDQgKyBzd2FwIGRvIGkgY0AgYnl0ZWRpZ2l0cyBsb29wIDsKCltlbHNlXQoKICA6IGNlbGxkaWdpdHMKICAgIGR1cCAzICsgZG8gaSBjQCBieXRlZGlnaXRzIC0xICtsb29wIDsKClt0aGVuXQo6IG1kNXN0cmluZwogIGludGRpZ2l0cyBhIGNlbGxkaWdpdHMgYiBjZWxsZGlnaXRzIGMgY2VsbGRpZ2l0cyBkIGNlbGxkaWdpdHMKICB0cnVlIHRvIG1kNWludD8gOwoKOiAubWQ1CiAgIG1kNWZ1bGwgbWQ1c3RyaW5nIDsKClwgRklNIENBTENVTE8gTUQ1Cgo6IGNhcAp0ZW1wIGNvbnRhZG9yIGNAIHBmZiBwbGFjZQpwZmYgY291bnQgLm1kNSA7CgoKOiBlc2NyZXZlCnBhZCBjb3VudCBmZC1vdXQgd3JpdGUtbGluZSBUSFJPVwpmZC1vdXQgY2xvc2UtZmlsZSB0aHJvdyA7Cgo6IGxlcgp4eDEgMTAwMDAgZmQtaW4gcmVhZC1saW5lIHRocm93IC4KY29udGFkb3IgIQpmZC1pbiBjbG9zZS1maWxlIHRocm93IDsKCgo6IGJvdGEgMCBjb250YWRvciBAIGRvIHh4MSBpICsgY0AgMCA+IGlmIHh4MSBpICsgY0AgdGhlbgotMSArbG9vcCA7Cgo6IHBidWYgY29udGFkb3IgQCAwIGRvIHRlbXAgaSArICEgbG9vcCA7Cgo6IGluaWNpbwpsZXVzZXIKbGVyCmJvdGEKcGJ1ZgpjYXAKZXNjcmV2ZQpDUiAuIiBBcnF1aXZvIFByb2Nlc3NhZG8uIgpDUiAuIiBQcmVzc2lvbmUgcXVhbHF1ZXIgdGVjbGEgcGFyYSBzYWlyICIKOwoKaW5pY2lvCmtleQpleGl0Cgo=
-
upload with new input
-
result: Runtime error time: 0.12s memory: 7508 kB signal: 25 (SIGXFSZ)
algo.txt
Forneça o nome do arquivo a processar:
-
result: Success time: 0.01s memory: 7508 kB returned value: 0
Forneça o nome do arquivo a processar:



