Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
64F2496ED637DEFD95CD74E6F715F02DFDA792FB5AB1E2F2B34DA9FEBE7D783F
Transaction overview
Execution summary
TX INDEX
1
Position in block
GAS WANTED
100,000,000
Requested gas limit
GAS USED
12,986,413
Gas consumed
FEE
1000000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g19t6f4f4ptt3m949jznalfsx2h8aj696llul0nj20000000ugnot
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
CrhICgwvdm0ubV9hZGRwa2cSp0gKKGcxOXQ2ZjRmNHB0dDNtOTQ5anpuYWxmc3gyaDhhajY5NmxsdWwwbmoS60cKBmNhbnZhcxI9Z25vLmxhbmQvcC9nMTl0NmY0ZjRwdHQzbTk0OWp6bmFsZnN4Mmg4YWo2OTZsbHVsMG5qL2NhbnZhcy92MBqIBgoJUkVBRE1FLm1kEvoFIyBjYW52YXMKClB1cmUgcGFja2FnZSBgZ25vLmxhbmQvcC9nMTl0NmY0ZjRwdHQzbTk0OWp6bmFsZnN4Mmg4YWo2OTZsbHVsMG5qL2NhbnZhcy92MGA6IGEgZml4ZWQtc2l6ZSBncmlkIG9mIHBhbGV0dGUKaW5kZXhlcyB3aXRoIGxhenkgcGVyLXJvdyBhbGxvY2F0aW9uLCBwbHVzIHRoZSBgeCx5LGNvbG9yOy4uLmAgYmF0Y2ggY29kZWMuCgpVc2VkIGJ5IHRoZSByZWFsbSBgZ25vLmxhbmQvci9nMTl0NmY0ZjRwdHQzbTk0OWp6bmFsZnN4Mmg4YWo2OTZsbHVsMG5qL21pbGxpb24vdjBgLCB3aGljaCBhZGRzIHByaWNpbmcgYW5kCmFjY2VzcyBjb250cm9sLiBUaGUgcGFja2FnZSBpdHNlbGYgaG9sZHMgbm8gY2hhaW4gc3RhdGUgYW5kIGhhcyBubyBjaGFpbgppbXBvcnRzLCBzbyBpdCBpcyBmdWxseSBjb3ZlcmVkIGJ5IHBsYWluIHVuaXQgdGVzdHMgKGBnbm8gdGVzdCAuYCkuCgotIGBOZXcod2lkdGgsIGhlaWdodClgOiBlbXB0eSBjYW52YXMsIHNpZGVzIGJldHdlZW4gMSBhbmQgMTAwMDAuCi0gYFNldChQaXhlbClgLCBgR2V0KHgsIHkpYCwgYENoZWNrKFBpeGVsKWA6IHBhaW50LCByZWFkLCB2YWxpZGF0ZS4KLSBgUm93cyhmcm9tLCB0bylgOiByb3dzIGFzIG9uZSBoZXggZGlnaXQgcGVyIHBpeGVsLCBubyBzZXBhcmF0b3JzLgotIGBQYXJzZVBpeGVsc2AsIGBFbmNvZGVgLCBgUGFyc2VDb2xvcmA6IHRoZSBiYXRjaCBmb3JtYXQuCi0gYFBhbGV0dGVgOiAxNiBDU1MgY29sb3JzLCBpbmRleCAwIGJlaW5nICJuZXZlciBwYWludGVkIi4KGrsoCgpjYW52YXMuZ25vEqwoLy8gUGFja2FnZSBjYW52YXMgaXMgYSBmaXhlZC1zaXplLCAxNi1jb2xvciBwaXhlbCBncmlkLgovLwovLyBJdCBob2xkcyBubyBjaGFpbiBzdGF0ZSBhbmQga25vd3Mgbm90aGluZyBhYm91dCBwYXltZW50czogdGhlIHJlYWxtCi8vIGduby5sYW5kL3IvZzE5dDZmNGY0cHR0M205NDlqem5hbGZzeDJoOGFqNjk2bGx1bDBuai9taWxsaW9uL3YwIHdyYXBzIGl0IHdpdGggcHJpY2luZyBhbmQgYWNjZXNzIGNvbnRyb2wuCi8vCi8vIFN0b3JhZ2UgbGF5b3V0OiBvbmUgW11ieXRlIHBlciByb3csIGFsbG9jYXRlZCBvbiBmaXJzdCBwYWludC4gQSByb3cgdGhhdAovLyB3YXMgbmV2ZXIgcGFpbnRlZCBpcyBuaWwgYW5kIGNvc3RzIG5vdGhpbmcuIEVhY2ggYnl0ZSBob2xkcyBhIHBhbGV0dGUKLy8gaW5kZXg7IEJsYW5rICgwKSBtZWFucyAibmV2ZXIgcGFpbnRlZCIuCnBhY2thZ2UgY2FudmFzCgppbXBvcnQgKAoJImVycm9ycyIKCSJzdHJjb252IgoJInN0cmluZ3MiCikKCmNvbnN0ICgKCS8vIEJsYW5rIGlzIHRoZSBjb2xvciBvZiBhIHBpeGVsIG5vYm9keSBwYWludGVkLiBJdCBjYW5ub3QgYmUgcGFpbnRlZC4KCUJsYW5rIGJ5dGUgPSAwCgkvLyBNYXhDb2xvciBpcyB0aGUgaGlnaGVzdCB2YWxpZCBwYWxldHRlIGluZGV4LgoJTWF4Q29sb3IgYnl0ZSA9IDE1CgkvLyBNYXhTaWRlIGJvdW5kcyB3aWR0aCBhbmQgaGVpZ2h0IHNvIHgqeSBmaXRzIGNvbWZvcnRhYmx5IGluIGFuIGludC4KCU1heFNpZGUgPSAxMDAwMAopCgovLyBQYWxldHRlIG1hcHMgYSBjb2xvciBpbmRleCB0byBpdHMgQ1NTIGhleCB2YWx1ZS4gSW5kZXggMCBpcyBCbGFuayBhbmQgaXMKLy8gcmVuZGVyZWQgYXMgd2hpdGUgYnkgY2xpZW50cy4KdmFyIFBhbGV0dGUgPSBbTWF4Q29sb3IgKyAxXXN0cmluZ3sKCSIjZmZmZmZmIiwgLy8gMCBibGFuawoJIiNmZmZmZmYiLCAvLyAxIHdoaXRlCgkiI2U0ZTRlNCIsIC8vIDIgbGlnaHQgZ3JheQoJIiM4ODg4ODgiLCAvLyAzIGdyYXkKCSIjMjIyMjIyIiwgLy8gNCBibGFjawoJIiNmZmE3ZDEiLCAvLyA1IHBpbmsKCSIjZTUwMDAwIiwgLy8gNiByZWQKCSIjZTU5NTAwIiwgLy8gNyBvcmFuZ2UKCSIjYTA2YTQyIiwgLy8gOCBicm93bgoJIiNlNWQ5MDAiLCAvLyA5IHllbGxvdwoJIiM5NGUwNDQiLCAvLyAxMCBsaW1lCgkiIzAyYmUwMSIsIC8vIDExIGdyZWVuCgkiIzAwZDNkZCIsIC8vIDEyIGN5YW4KCSIjMDA4M2M3IiwgLy8gMTMgYmx1ZQoJIiNjZjZlZTQiLCAvLyAxNCBtYWdlbnRhCgkiIzgyMDA4MCIsIC8vIDE1IHB1cnBsZQp9Cgp2YXIgKAoJRXJyT3V0T2ZSYW5nZSAgID0gZXJyb3JzLk5ldygiY2FudmFzOiBwaXhlbCBvdXQgb2YgcmFuZ2UiKQoJRXJySW52YWxpZENvbG9yID0gZXJyb3JzLk5ldygiY2FudmFzOiBjb2xvciBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTUiKQoJRXJyQmFkUGl4ZWwgICAgID0gZXJyb3JzLk5ldygiY2FudmFzOiBwaXhlbCBtdXN0IGJlIHgseSxjb2xvciIpCikKCi8vIFBpeGVsIGlzIG9uZSBwYWludCByZXF1ZXN0Lgp0eXBlIFBpeGVsIHN0cnVjdCB7CglYLCBZICBpbnQKCUNvbG9yIGJ5dGUKfQoKLy8gQ2FudmFzIGlzIGEgd2lkdGggeCBoZWlnaHQgZ3JpZCBvZiBwYWxldHRlIGluZGV4ZXMuCnR5cGUgQ2FudmFzIHN0cnVjdCB7Cgl3aWR0aCwgaGVpZ2h0IGludAoJcm93cyAgICAgICAgICBbXVtdYnl0ZQoJcGFpbnRlZCAgICAgICBpbnQKfQoKLy8gTmV3IHJldHVybnMgYW4gZW1wdHkgY2FudmFzLiBJdCBwYW5pY3Mgb24gYSBub24tcG9zaXRpdmUgb3Igb3ZlcnNpemVkIHNpZGUuCmZ1bmMgTmV3KHdpZHRoLCBoZWlnaHQgaW50KSAqQ2FudmFzIHsKCWlmIHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDAgfHwgd2lkdGggPiBNYXhTaWRlIHx8IGhlaWdodCA+IE1heFNpZGUgewoJCXBhbmljKCJjYW52YXM6IHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kICIgKyBzdHJjb252Lkl0b2EoTWF4U2lkZSkpCgl9CglyZXR1cm4gJkNhbnZhc3sKCQl3aWR0aDogIHdpZHRoLAoJCWhlaWdodDogaGVpZ2h0LAoJCXJvd3M6ICAgbWFrZShbXVtdYnl0ZSwgaGVpZ2h0KSwKCX0KfQoKZnVuYyAoYyAqQ2FudmFzKSBXaWR0aCgpIGludCAgeyByZXR1cm4gYy53aWR0aCB9CmZ1bmMgKGMgKkNhbnZhcykgSGVpZ2h0KCkgaW50IHsgcmV0dXJuIGMuaGVpZ2h0IH0KCi8vIFBhaW50ZWQgaXMgdGhlIG51bWJlciBvZiBwaXhlbHMgdGhhdCBhcmUgbm90IEJsYW5rLgpmdW5jIChjICpDYW52YXMpIFBhaW50ZWQoKSBpbnQgeyByZXR1cm4gYy5wYWludGVkIH0KCi8vIENoZWNrIHJlcG9ydHMgd2hldGhlciBwIGNhbiBiZSBwYWludGVkIG9uIHRoaXMgY2FudmFzLgpmdW5jIChjICpDYW52YXMpIENoZWNrKHAgUGl4ZWwpIGVycm9yIHsKCWlmIHAuWCA8IDAgfHwgcC5ZIDwgMCB8fCBwLlggPj0gYy53aWR0aCB8fCBwLlkgPj0gYy5oZWlnaHQgewoJCXJldHVybiBFcnJPdXRPZlJhbmdlCgl9CglpZiBwLkNvbG9yID09IEJsYW5rIHx8IHAuQ29sb3IgPiBNYXhDb2xvciB7CgkJcmV0dXJuIEVyckludmFsaWRDb2xvcgoJfQoJcmV0dXJuIG5pbAp9CgovLyBHZXQgcmV0dXJucyB0aGUgY29sb3IgYXQgKHgsIHkpLiBPdXQtb2YtcmFuZ2UgY29vcmRpbmF0ZXMgcGFuaWMuCmZ1bmMgKGMgKkNhbnZhcykgR2V0KHgsIHkgaW50KSBieXRlIHsKCWlmIHggPCAwIHx8IHkgPCAwIHx8IHggPj0gYy53aWR0aCB8fCB5ID49IGMuaGVpZ2h0IHsKCQlwYW5pYyhFcnJPdXRPZlJhbmdlKQoJfQoJcm93IDo9IGMucm93c1t5XQoJaWYgcm93ID09IG5pbCB7CgkJcmV0dXJuIEJsYW5rCgl9CglyZXR1cm4gcm93W3hdCn0KCi8vIFNldCBwYWludHMgcC4gSXQgcGFuaWNzIHdoZW4gQ2hlY2socCkgZmFpbHMuCmZ1bmMgKGMgKkNhbnZhcykgU2V0KHAgUGl4ZWwpIHsKCWlmIGVyciA6PSBjLkNoZWNrKHApOyBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9Cglyb3cgOj0gYy5yb3dzW3AuWV0KCWlmIHJvdyA9PSBuaWwgewoJCXJvdyA9IG1ha2UoW11ieXRlLCBjLndpZHRoKQoJCWMucm93c1twLlldID0gcm93Cgl9CglpZiByb3dbcC5YXSA9PSBCbGFuayB7CgkJYy5wYWludGVkKysKCX0KCXJvd1twLlhdID0gcC5Db2xvcgp9CgovLyBSb3dzIGVuY29kZXMgcm93cyBbZnJvbSwgdG8pIGFzIG9uZSBoZXggZGlnaXQgcGVyIHBpeGVsLCByb3cgYWZ0ZXIgcm93LAovLyB3aXRoIG5vIHNlcGFyYXRvci4gQ2xpZW50cyBzbGljZSBpdCB3aXRoIHRoZSBrbm93biB3aWR0aC4KZnVuYyAoYyAqQ2FudmFzKSBSb3dzKGZyb20sIHRvIGludCkgc3RyaW5nIHsKCWlmIGZyb20gPCAwIHx8IHRvID4gYy5oZWlnaHQgfHwgZnJvbSA+IHRvIHsKCQlwYW5pYyhFcnJPdXRPZlJhbmdlKQoJfQoJdmFyIHNiIHN0cmluZ3MuQnVpbGRlcgoJc2IuR3JvdygodG8gLSBmcm9tKSAqIGMud2lkdGgpCglmb3IgeSA6PSBmcm9tOyB5IDwgdG87IHkrKyB7CgkJcm93IDo9IGMucm93c1t5XQoJCWlmIHJvdyA9PSBuaWwgewoJCQlmb3IgeCA6PSAwOyB4IDwgYy53aWR0aDsgeCsrIHsKCQkJCXNiLldyaXRlQnl0ZSgnMCcpCgkJCX0KCQkJY29udGludWUKCQl9CgkJZm9yIF8sIGNvbG9yIDo9IHJhbmdlIHJvdyB7CgkJCXNiLldyaXRlQnl0ZShoZXhEaWdpdChjb2xvcikpCgkJfQoJfQoJcmV0dXJuIHNiLlN0cmluZygpCn0KCi8vIFBhcnNlUGl4ZWxzIGRlY29kZXMgIngseSxjb2xvcjt4LHksY29sb3I7Li4uIi4gQSB0cmFpbGluZyAnOycgaXMgYWxsb3dlZC4KLy8gSXQgdmFsaWRhdGVzIHRoZSBzeW50YXggYW5kIHRoZSBjb2xvciByYW5nZSBidXQgbm90IHRoZSBjb29yZGluYXRlcywKLy8gd2hpY2ggZGVwZW5kIG9uIHRoZSBjYW52YXM6IGNhbGwgQ2hlY2sgZm9yIHRoYXQuCmZ1bmMgUGFyc2VQaXhlbHMocyBzdHJpbmcpIChbXVBpeGVsLCBlcnJvcikgewoJcyA9IHN0cmluZ3MuVHJpbVN1ZmZpeChzLCAiOyIpCglpZiBzID09ICIiIHsKCQlyZXR1cm4gbmlsLCBFcnJCYWRQaXhlbAoJfQoJcGFydHMgOj0gc3RyaW5ncy5TcGxpdChzLCAiOyIpCglwaXhlbHMgOj0gbWFrZShbXVBpeGVsLCAwLCBsZW4ocGFydHMpKQoJZm9yIF8sIHBhcnQgOj0gcmFuZ2UgcGFydHMgewoJCWZpZWxkcyA6PSBzdHJpbmdzLlNwbGl0KHBhcnQsICIsIikKCQlpZiBsZW4oZmllbGRzKSAhPSAzIHsKCQkJcmV0dXJuIG5pbCwgRXJyQmFkUGl4ZWwKCQl9CgkJeCwgZXJyIDo9IHN0cmNvbnYuQXRvaShmaWVsZHNbMF0pCgkJaWYgZXJyICE9IG5pbCB7CgkJCXJldHVybiBuaWwsIEVyckJhZFBpeGVsCgkJfQoJCXksIGVyciA6PSBzdHJjb252LkF0b2koZmllbGRzWzFdKQoJCWlmIGVyciAhPSBuaWwgewoJCQlyZXR1cm4gbmlsLCBFcnJCYWRQaXhlbAoJCX0KCQljb2xvciwgZXJyIDo9IFBhcnNlQ29sb3IoZmllbGRzWzJdKQoJCWlmIGVyciAhPSBuaWwgewoJCQlyZXR1cm4gbmlsLCBlcnIKCQl9CgkJcGl4ZWxzID0gYXBwZW5kKHBpeGVscywgUGl4ZWx7WDogeCwgWTogeSwgQ29sb3I6IGNvbG9yfSkKCX0KCXJldHVybiBwaXhlbHMsIG5pbAp9CgovLyBQYXJzZUNvbG9yIGNvbnZlcnRzIGEgZGVjaW1hbCBjb2xvciBpbmRleCwgcmVqZWN0aW5nIEJsYW5rLgpmdW5jIFBhcnNlQ29sb3IocyBzdHJpbmcpIChieXRlLCBlcnJvcikgewoJbiwgZXJyIDo9IHN0cmNvbnYuQXRvaShzKQoJaWYgZXJyICE9IG5pbCB8fCBuIDw9IGludChCbGFuaykgfHwgbiA+IGludChNYXhDb2xvcikgewoJCXJldHVybiAwLCBFcnJJbnZhbGlkQ29sb3IKCX0KCXJldHVybiBieXRlKG4pLCBuaWwKfQoKLy8gRW5jb2RlIGlzIHRoZSBpbnZlcnNlIG9mIFBhcnNlUGl4ZWxzLgpmdW5jIEVuY29kZShwaXhlbHMgW11QaXhlbCkgc3RyaW5nIHsKCXZhciBzYiBzdHJpbmdzLkJ1aWxkZXIKCWZvciBpLCBwIDo9IHJhbmdlIHBpeGVscyB7CgkJaWYgaSA+IDAgewoJCQlzYi5Xcml0ZUJ5dGUoJzsnKQoJCX0KCQlzYi5Xcml0ZVN0cmluZyhzdHJjb252Lkl0b2EocC5YKSkKCQlzYi5Xcml0ZUJ5dGUoJywnKQoJCXNiLldyaXRlU3RyaW5nKHN0cmNvbnYuSXRvYShwLlkpKQoJCXNiLldyaXRlQnl0ZSgnLCcpCgkJc2IuV3JpdGVTdHJpbmcoc3RyY29udi5JdG9hKGludChwLkNvbG9yKSkpCgl9CglyZXR1cm4gc2IuU3RyaW5nKCkKfQoKZnVuYyBoZXhEaWdpdCh2IGJ5dGUpIGJ5dGUgewoJaWYgdiA8IDEwIHsKCQlyZXR1cm4gJzAnICsgdgoJfQoJcmV0dXJuICdhJyArIHYgLSAxMAp9ChrOFwoPY2FudmFzX3Rlc3QuZ25vEroXcGFja2FnZSBjYW52YXMKCmltcG9ydCAoCgkidGVzdGluZyIKCgkiZ25vLmxhbmQvcC9udC91YXNzZXJ0L3YwIgopCgpmdW5jIFRlc3ROZXdSZWplY3RzQmFkU2l6ZXModCAqdGVzdGluZy5UKSB7Cglmb3IgXywgdGMgOj0gcmFuZ2UgW11zdHJ1Y3R7IHcsIGggaW50IH17ezAsIDF9LCB7MSwgMH0sIHstMSwgMX0sIHtNYXhTaWRlICsgMSwgMX0sIHsxLCBNYXhTaWRlICsgMX19IHsKCQlmdW5jKCkgewoJCQlkZWZlciBmdW5jKCkgewoJCQkJaWYgciA6PSByZWNvdmVyKCk7IHIgPT0gbmlsIHsKCQkJCQl0LkVycm9yZigiTmV3KCVkLCAlZCkgZGlkIG5vdCBwYW5pYyIsIHRjLncsIHRjLmgpCgkJCQl9CgkJCX0oKQoJCQlOZXcodGMudywgdGMuaCkKCQl9KCkKCX0KfQoKZnVuYyBUZXN0U2V0R2V0KHQgKnRlc3RpbmcuVCkgewoJYyA6PSBOZXcoNCwgMykKCXVhc3NlcnQuRXF1YWwodCwgNCwgYy5XaWR0aCgpKQoJdWFzc2VydC5FcXVhbCh0LCAzLCBjLkhlaWdodCgpKQoJdWFzc2VydC5FcXVhbCh0LCAwLCBjLlBhaW50ZWQoKSkKCXVhc3NlcnQuRXF1YWwodCwgQmxhbmssIGMuR2V0KDMsIDIpKQoKCWMuU2V0KFBpeGVse1g6IDMsIFk6IDIsIENvbG9yOiA2fSkKCXVhc3NlcnQuRXF1YWwodCwgYnl0ZSg2KSwgYy5HZXQoMywgMikpCgl1YXNzZXJ0LkVxdWFsKHQsIDEsIGMuUGFpbnRlZCgpKQoKCS8vIFJlcGFpbnRpbmcgdGhlIHNhbWUgcGl4ZWwgZG9lcyBub3QgY291bnQgdHdpY2UuCgljLlNldChQaXhlbHtYOiAzLCBZOiAyLCBDb2xvcjogN30pCgl1YXNzZXJ0LkVxdWFsKHQsIGJ5dGUoNyksIGMuR2V0KDMsIDIpKQoJdWFzc2VydC5FcXVhbCh0LCAxLCBjLlBhaW50ZWQoKSkKCgkvLyBPdGhlciByb3dzIHN0YXkgdW5hbGxvY2F0ZWQgYW5kIGJsYW5rLgoJdWFzc2VydC5FcXVhbCh0LCBCbGFuaywgYy5HZXQoMCwgMCkpCgl1YXNzZXJ0LlRydWUodCwgYy5yb3dzWzBdID09IG5pbCwgInJvdyAwIHNob3VsZCBzdGF5IG5pbCIpCn0KCmZ1bmMgVGVzdENoZWNrKHQgKnRlc3RpbmcuVCkgewoJYyA6PSBOZXcoMiwgMikKCXRlc3RzIDo9IFtdc3RydWN0IHsKCQluYW1lIHN0cmluZwoJCXAgICAgUGl4ZWwKCQllcnIgIGVycm9yCgl9ewoJCXsib2siLCBQaXhlbHswLCAwLCAxfSwgbmlsfSwKCQl7Im9rIG1heCIsIFBpeGVsezEsIDEsIE1heENvbG9yfSwgbmlsfSwKCQl7InggbmVnYXRpdmUiLCBQaXhlbHstMSwgMCwgMX0sIEVyck91dE9mUmFuZ2V9LAoJCXsieSBuZWdhdGl2ZSIsIFBpeGVsezAsIC0xLCAxfSwgRXJyT3V0T2ZSYW5nZX0sCgkJeyJ4IHRvbyBiaWciLCBQaXhlbHsyLCAwLCAxfSwgRXJyT3V0T2ZSYW5nZX0sCgkJeyJ5IHRvbyBiaWciLCBQaXhlbHswLCAyLCAxfSwgRXJyT3V0T2ZSYW5nZX0sCgkJeyJibGFuayBjb2xvciIsIFBpeGVsezAsIDAsIEJsYW5rfSwgRXJySW52YWxpZENvbG9yfSwKCQl7ImNvbG9yIHRvbyBiaWciLCBQaXhlbHswLCAwLCBNYXhDb2xvciArIDF9LCBFcnJJbnZhbGlkQ29sb3J9LAoJfQoJZm9yIF8sIHRjIDo9IHJhbmdlIHRlc3RzIHsKCQlnb3QgOj0gYy5DaGVjayh0Yy5wKQoJCWlmIGdvdCAhPSB0Yy5lcnIgewoJCQl0LkVycm9yZigiJXM6IGdvdCAldiwgd2FudCAldiIsIHRjLm5hbWUsIGdvdCwgdGMuZXJyKQoJCX0KCX0KfQoKZnVuYyBUZXN0Um93cyh0ICp0ZXN0aW5nLlQpIHsKCWMgOj0gTmV3KDMsIDMpCgl1YXNzZXJ0LkVxdWFsKHQsICIwMDAwMDAwMDAiLCBjLlJvd3MoMCwgMykpCgljLlNldChQaXhlbHtYOiAxLCBZOiAxLCBDb2xvcjogMTV9KQoJYy5TZXQoUGl4ZWx7WDogMiwgWTogMiwgQ29sb3I6IDEwfSkKCXVhc3NlcnQuRXF1YWwodCwgIjAwMCIsIGMuUm93cygwLCAxKSkKCXVhc3NlcnQuRXF1YWwodCwgIjBmMCIsIGMuUm93cygxLCAyKSkKCXVhc3NlcnQuRXF1YWwodCwgIjBmMDAwYSIsIGMuUm93cygxLCAzKSkKCXVhc3NlcnQuRXF1YWwodCwgIiIsIGMuUm93cygyLCAyKSkKCglmb3IgXywgciA6PSByYW5nZSBbXVsyXWludHt7LTEsIDF9LCB7MCwgNH0sIHsyLCAxfX0gewoJCWZ1bmMoKSB7CgkJCWRlZmVyIGZ1bmMoKSB7CgkJCQlpZiByZWMgOj0gcmVjb3ZlcigpOyByZWMgPT0gbmlsIHsKCQkJCQl0LkVycm9yZigiUm93cyglZCwgJWQpIGRpZCBub3QgcGFuaWMiLCByWzBdLCByWzFdKQoJCQkJfQoJCQl9KCkKCQkJYy5Sb3dzKHJbMF0sIHJbMV0pCgkJfSgpCgl9Cn0KCmZ1bmMgVGVzdFBhcnNlUGl4ZWxzKHQgKnRlc3RpbmcuVCkgewoJcHgsIGVyciA6PSBQYXJzZVBpeGVscygiMCwwLDE7NSw3LDE1OyIpCgl1YXNzZXJ0Lk5vRXJyb3IodCwgZXJyKQoJdWFzc2VydC5FcXVhbCh0LCAyLCBsZW4ocHgpKQoJaWYgcHhbMF0gIT0gKFBpeGVsezAsIDAsIDF9KSB8fCBweFsxXSAhPSAoUGl4ZWx7NSwgNywgMTV9KSB7CgkJdC5FcnJvcmYoInVuZXhwZWN0ZWQgcGl4ZWxzOiAldiIsIHB4KQoJfQoKCWZvciBfLCBiYWQgOj0gcmFuZ2UgW11zdHJpbmd7IiIsICI7IiwgIjEsMiIsICIxLDIsMyw0IiwgImEsMiwzIiwgIjEsYiwzIiwgIjEsMixjIiwgIjEsMiwwIiwgIjEsMiwxNiIsICIxLDIsLTEifSB7CgkJaWYgXywgZXJyIDo9IFBhcnNlUGl4ZWxzKGJhZCk7IGVyciA9PSBuaWwgewoJCQl0LkVycm9yZigiUGFyc2VQaXhlbHMoJXEpIGFjY2VwdGVkIGludmFsaWQgaW5wdXQiLCBiYWQpCgkJfQoJfQp9CgpmdW5jIFRlc3RFbmNvZGVSb3VuZFRyaXAodCAqdGVzdGluZy5UKSB7CglpbiA6PSBbXVBpeGVse3swLCAwLCAxfSwgezk5OSwgOTk5LCAxNX0sIHszLCA0LCA4fX0KCXMgOj0gRW5jb2RlKGluKQoJdWFzc2VydC5FcXVhbCh0LCAiMCwwLDE7OTk5LDk5OSwxNTszLDQsOCIsIHMpCglvdXQsIGVyciA6PSBQYXJzZVBpeGVscyhzKQoJdWFzc2VydC5Ob0Vycm9yKHQsIGVycikKCXVhc3NlcnQuRXF1YWwodCwgbGVuKGluKSwgbGVuKG91dCkpCglmb3IgaSA6PSByYW5nZSBpbiB7CgkJaWYgaW5baV0gIT0gb3V0W2ldIHsKCQkJdC5FcnJvcmYoInBpeGVsICVkOiBnb3QgJXYsIHdhbnQgJXYiLCBpLCBvdXRbaV0sIGluW2ldKQoJCX0KCX0KfQoaZAoLZ25vbW9kLnRvbWwSVW1vZHVsZSA9ICJnbm8ubGFuZC9wL2cxOXQ2ZjRmNHB0dDNtOTQ5anpuYWxmc3gyaDhhajY5NmxsdWwwbmovY2FudmFzL3YwIgpnbm8gPSAiMC45IgoiIgoTL2duby5NZW1QYWNrYWdlVHlwZRILCglNUFVzZXJBbGwiDTIwMDAwMDAwdWdub3QSEwiAhK9fEgwxMDAwMDAwdWdub3QaqAEKOgoTL3RtLlB1YktleVNlY3AyNTZrMRIjCiEC/Aff8actakvMgwS8c5i/qF8vzuwK7fl5jRedshevVtcSQO67RAid3avvCMxlvmYcWnhZ+1fasJanKky3qMndeccrOlukRfjvn/TLry6STiyTizckKgLh9Y3N6DngjmX5I+waKGcxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxbHV1eGU=