Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
4FAF2ECC102E60E785C5BF61D7CCEE6DF907A401D64AF02070D244A149CD4BF3
Transaction overview
Execution summary
TX INDEX
1
Position in block
GAS WANTED
19,122,278
Requested gas limit
GAS USED
15,935,182
Gas consumed
FEE
1000000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g1manfred47kzduec920z88wfr64ylksmdcedlf5
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
Cq1ICgwvdm0ubV9hZGRwa2cSnEgKKGcxbWFuZnJlZDQ3a3pkdWVjOTIwejg4d2ZyNjR5bGtzbWRjZWRsZjUS70cKBmxwbGlzdBIfZ25vLmxhbmQvcC9tb3VsL3VsaXN0L2xwbGlzdC92MBrACAoJUkVBRE1FLm1kErIIIyBgZ25vLmxhbmQvcC9tb3VsL3VsaXN0L2xwbGlzdC92MGAKCmBMYXllcmVkUHJveHlMaXN0YCDigJQgYSBsYXllcmVkIHByb3h5IG92ZXIgW2B1bGlzdGBdKC4uLy4uL3YwKSBlbmFibGluZyAqKmxhenksCmFwcGVuZC1vbmx5IHNjaGVtYSBtaWdyYXRpb24qKjogaXQgd3JhcHMgYSBzb3VyY2UgbGlzdCB3aXRoIGEgdGFyZ2V0IGxpc3QgYW5kCnRyYW5zZm9ybXMgc291cmNlIGVudHJpZXMgb25seSB3aGVuIGFjY2Vzc2VkIChzb3VyY2Ugc3RheXMgaW1tdXRhYmxlKSwgYW5kIGxheWVycwpjYW4gYmUgY2hhaW5lZCBmb3IgbXVsdGktc3RlcCBtaWdyYXRpb25zLiBOZXN0ZWQgdW5kZXIgYHVsaXN0YCBpbiB0aGUgbW9ub3JlcG87IGl0CndhcyBtaXNzZWQgb24gdGhlIG9yaWdpbmFsIGB1bGlzdGAgaW1wb3J0LgoKPCEtLSBCRUdJTiBHTk9DT05UUkFDVFMgRk9PVEVSIChnZW5lcmF0ZWQgYnkgYG1ha2UgcmVhZG1lc2A7IGRvIG5vdCBlZGl0IGJlbG93KSAtLT4KCi0tLQoKUGFydCBvZiAqKlttb3VsL2duby1jb250cmFjdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3VsL2duby1jb250cmFjdHMpKiog4oCUIG1vdWwncyB2ZXJzaW9uZWQgZ25vLmxhbmQgY29udHJhY3RzLiBTZWUgdGhlIHJlcG9zaXRvcnkgZm9yIHRoZSBmdWxsIGNhdGFsb2csIGJ1aWxkL3Rlc3QgdG9vbGluZywgYW5kIHVzYWdlLgoKKipEZXBlbmRlbmN5IGdyYXBoOioqCgohW2duby5sYW5kL3AvbW91bC91bGlzdC9scGxpc3QvdjAgZGVwZW5kZW5jeSBncmFwaF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vdWwvZ25vLWNvbnRyYWN0cy9tYWluL19hc3NldHMvZ25vLmxhbmQvcC9tb3VsL3VsaXN0L2xwbGlzdC92MC9kZXBzLnBuZykKCj4g4pqg77iPICoqRGlzY2xhaW1lcjoqKiBwcm92aWRlZCBhcy1pcywgd2l0aG91dCB3YXJyYW50eTsgbm90IHNlY3VyaXR5LWF1ZGl0ZWQuIEZ1bGwgZGlzY2xhaW1lcjogW0RJU0NMQUlNRVJdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3VsL2duby1jb250cmFjdHMvYmxvYi9tYWluL0RJU0NMQUlNRVIubWQpLgoKPCEtLSBFTkQgR05PQ09OVFJBQ1RTIEZPT1RFUiAtLT4KGocBCgtnbm9tb2QudG9tbBJ4bW9kdWxlID0gImduby5sYW5kL3AvbW91bC91bGlzdC9scGxpc3QvdjAiCmdubyA9ICIwLjkiCgpbYWRkcGtnXQogIGNyZWF0b3IgPSAiZzFtYW5mcmVkNDdremR1ZWM5MjB6ODh3ZnI2NHlsa3NtZGNlZGxmNSIKGtE9CgpscGxpc3QuZ25vEsI9Ly8gUGFja2FnZSBscGxpc3QgcHJvdmlkZXMgYSBsYXllcmVkIHByb3h5IGltcGxlbWVudGF0aW9uIGZvciBsaXN0cyB0aGF0IGFsbG93cyB0cmFuc3BhcmVudAovLyBtaWdyYXRpb24gb2YgZGF0YSBiZXR3ZWVuIGRpZmZlcmVudCBzY2hlbWEgdmVyc2lvbnMuCi8vCi8vIExheWVyZWRQcm94eUxpc3Qgd3JhcHMgYW4gZXhpc3RpbmcgbGlzdCAoc291cmNlKSB3aXRoIGEgbmV3IGxpc3QgKHRhcmdldCkgYW5kIG9wdGlvbmFsbHkKLy8gYXBwbGllcyBtaWdyYXRpb25zIHRvIHNvdXJjZSBkYXRhIHdoZW4gaXQncyBhY2Nlc3NlZC4gVGhpcyBlbmFibGVzIHNjaGVtYSBldm9sdXRpb24gd2l0aG91dAovLyByZXF1aXJpbmcgdXBmcm9udCBtaWdyYXRpb24gb2YgYWxsIGRhdGEsIG1ha2luZyBpdCBpZGVhbCBmb3IgbGFyZ2UgZGF0YXNldHMgb3Igd2hlbgovLyBwcmVzZXJ2aW5nIG9yaWdpbmFsIGRhdGEgaXMgaW1wb3J0YW50LgovLwovLyBLZXkgZmVhdHVyZXM6Ci8vIC0gTGF6eSBtaWdyYXRpb246IERhdGEgaXMgb25seSB0cmFuc2Zvcm1lZCB3aGVuIGFjY2Vzc2VkLCBub3Qgc3RvcmVkIGluIG1pZ3JhdGVkIGZvcm0KLy8gLSBBcHBlbmQtb25seSBzb3VyY2U6IFNvdXJjZSBkYXRhIGlzIHRyZWF0ZWQgYXMgaW1tdXRhYmxlIHRvIHByZXNlcnZlIG9yaWdpbmFsIGRhdGEKLy8gLSBDaGFpbmluZzogTXVsdGlwbGUgTGF5ZXJlZFByb3h5TGlzdHMgY2FuIGJlIHN0YWNrZWQgZm9yIG11bHRpLXN0ZXAgbWlncmF0aW9ucwovLwovLyBFeGFtcGxlIHVzYWdlOgovLwovLwkvLyBEZWZpbmUgZGF0YSB0eXBlcyBmb3IgZGlmZmVyZW50IHNjaGVtYSB2ZXJzaW9ucwovLwl0eXBlIFVzZXJWMSBzdHJ1Y3QgewovLwkgICAgTmFtZSBzdHJpbmcKLy8JICAgIEFnZSBpbnQKLy8JfQovLwovLwl0eXBlIFVzZXJWMiBzdHJ1Y3QgewovLwkgICAgRnVsbE5hbWUgc3RyaW5nCi8vCSAgICBBZ2UgaW50Ci8vCSAgICBBY3RpdmUgYm9vbAovLwl9Ci8vCi8vCS8vIENyZWF0ZSBzb3VyY2UgbGlzdCB3aXRoIG9sZCBzY2hlbWEKLy8Jc291cmNlTGlzdCA6PSB1bGlzdC5OZXcoKQovLwlzb3VyY2VMaXN0LkFwcGVuZCgKLy8JICAgIFVzZXJWMXtOYW1lOiAiQWxpY2UiLCBBZ2U6IDMwfSwKLy8JICAgIFVzZXJWMXtOYW1lOiAiQm9iIiwgQWdlOiAyNX0sCi8vCSkKLy8KLy8JLy8gRGVmaW5lIG1pZ3JhdGlvbiBmdW5jdGlvbiBmcm9tIFYxIHRvIFYyCi8vCW1pZ3JhdGVVc2VyVjFUb1YyIDo9IGZ1bmModiBhbnkpIGFueSB7Ci8vCSAgICB1c2VyIDo9IHYuKFVzZXJWMSkKLy8JICAgIHJldHVybiBVc2VyVjJ7Ci8vCSAgICAgICAgRnVsbE5hbWU6IHVzZXIuTmFtZSwgIC8vIE5hbWUgZmllbGQgcmVuYW1lZCB0byBGdWxsTmFtZQovLwkgICAgICAgIEFnZTogdXNlci5BZ2UsCi8vCSAgICAgICAgQWN0aXZlOiB0cnVlLCAgICAgICAgIC8vIE5ldyBmaWVsZCB3aXRoIGRlZmF1bHQgdmFsdWUKLy8JICAgIH0KLy8JfQovLwovLwkvLyBDcmVhdGUgbGF5ZXJlZCBwcm94eSB3aXRoIG1pZ3JhdGlvbgovLwlwcm94eSA6PSBOZXdMYXllcmVkUHJveHlMaXN0KHNvdXJjZUxpc3QsIG1pZ3JhdGVVc2VyVjFUb1YyKQovLwovLwkvLyBBZGQgbmV3IGRhdGEgZGlyZWN0bHkgaW4gVjIgZm9ybWF0Ci8vCXByb3h5LkFwcGVuZChVc2VyVjJ7RnVsbE5hbWU6ICJDaGFybGllIiwgQWdlOiA0MCwgQWN0aXZlOiBmYWxzZX0pCi8vCi8vCS8vIEFsbCBhY2Nlc3MgdGhyb3VnaCBwcm94eSByZXR1cm5zIGRhdGEgaW4gVjIgZm9ybWF0Ci8vCWZvciBpIDo9IDA7IGkgPCBwcm94eS5TaXplKCk7IGkrKyB7Ci8vCSAgICB1c2VyIDo9IHByb3h5LkdldChpKS4oVXNlclYyKQovLwkgICAgZm10LlByaW50ZigiVXNlcjogJXMsIEFnZTogJWQsIEFjdGl2ZTogJXRcbiIsIHVzZXIuRnVsbE5hbWUsIHVzZXIuQWdlLCB1c2VyLkFjdGl2ZSkKLy8JfQpwYWNrYWdlIGxwbGlzdAoKaW1wb3J0ICgKCSJlcnJvcnMiCgoJImduby5sYW5kL3AvbW91bC91bGlzdC92MCIKKQoKLy8gTWlncmF0b3JGbiBpcyBhIGZ1bmN0aW9uIHR5cGUgdGhhdCBsYXppbHkgY29udmVydHMgdmFsdWVzIGZyb20gc291cmNlIHRvIHRhcmdldAp0eXBlIE1pZ3JhdG9yRm4gZnVuYyhhbnkpIGFueQoKLy8gTGF5ZXJlZFByb3h5TGlzdCByZXByZXNlbnRzIGEgd3JhcHBlciBhcm91bmQgYW4gZXhpc3RpbmcgTGlzdCB0aGF0IGhhbmRsZXMgbWlncmF0aW9uCnR5cGUgTGF5ZXJlZFByb3h5TGlzdCBzdHJ1Y3QgewoJc291cmNlICAgICAgIHVsaXN0LklMaXN0Cgl0YXJnZXQgICAgICAgKnVsaXN0Lkxpc3QKCW1pZ3JhdG9yICAgICBNaWdyYXRvckZuCglzb3VyY2VIZWlnaHQgaW50IC8vIFN0b3JlIGluaXRpYWwgc291cmNlIHNpemUgdG8gb3B0aW1pemUgbG9va3Vwcwp9CgovLyBOZXdMYXllcmVkUHJveHlMaXN0IGNyZWF0ZXMgYSBuZXcgTGF5ZXJlZFByb3h5TGlzdCBpbnN0YW5jZSB0aGF0IHdyYXBzIGFuIGV4aXN0aW5nIExpc3QKZnVuYyBOZXdMYXllcmVkUHJveHlMaXN0KHNvdXJjZSB1bGlzdC5JTGlzdCwgbWlncmF0b3IgTWlncmF0b3JGbikgKkxheWVyZWRQcm94eUxpc3QgewoJc291cmNlSGVpZ2h0IDo9IHNvdXJjZS5Ub3RhbFNpemUoKQoJdGFyZ2V0IDo9IHVsaXN0Lk5ldygpCglyZXR1cm4gJkxheWVyZWRQcm94eUxpc3R7CgkJc291cmNlOiAgICAgICBzb3VyY2UsCgkJdGFyZ2V0OiAgICAgICB0YXJnZXQsCgkJbWlncmF0b3I6ICAgICBtaWdyYXRvciwKCQlzb3VyY2VIZWlnaHQ6IHNvdXJjZUhlaWdodCwKCX0KfQoKLy8gR2V0IHJldHJpZXZlcyB0aGUgdmFsdWUgYXQgdGhlIHNwZWNpZmllZCBpbmRleAovLyBVc2VzIHNvdXJjZUhlaWdodCB0byBlZmZpY2llbnRseSByb3V0ZSByZXF1ZXN0cwpmdW5jIChsICpMYXllcmVkUHJveHlMaXN0KSBHZXQoaW5kZXggaW50KSBhbnkgewoJaWYgaW5kZXggPCBsLnNvdXJjZUhlaWdodCB7CgkJLy8gRGlyZWN0IGFjY2VzcyB0byBzb3VyY2UgZm9yIGluZGljZXMgYmVsb3cgc291cmNlSGVpZ2h0CgkJdmFsIDo9IGwuc291cmNlLkdldChpbmRleCkKCQlpZiB2YWwgPT0gbmlsIHsKCQkJcmV0dXJuIG5pbAoJCX0KCQkvLyBPbmx5IGFwcGx5IG1pZ3JhdG9yIGlmIGl0IGV4aXN0cwoJCWlmIGwubWlncmF0b3IgIT0gbmlsIHsKCQkJcmV0dXJuIGwubWlncmF0b3IodmFsKQoJCX0KCQlyZXR1cm4gdmFsCgl9CgkvLyBGb3IgaW5kaWNlcyA+PSBzb3VyY2VIZWlnaHQsIGFkanVzdCBpbmRleCB0byBiZSByZWxhdGl2ZSB0byB0YXJnZXQgbGlzdCBzdGFydGluZyBhdCAwCgl0YXJnZXRJbmRleCA6PSBpbmRleCAtIGwuc291cmNlSGVpZ2h0CglyZXR1cm4gbC50YXJnZXQuR2V0KHRhcmdldEluZGV4KQp9CgovLyBBcHBlbmQgYWRkcyBvbmUgb3IgbW9yZSB2YWx1ZXMgdG8gdGhlIHRhcmdldCBsaXN0CmZ1bmMgKGwgKkxheWVyZWRQcm94eUxpc3QpIEFwcGVuZCh2YWx1ZXMgLi4uYW55KSB7CglsLnRhcmdldC5BcHBlbmQodmFsdWVzLi4uKQp9CgovLyBEZWxldGUgbWFya3MgZWxlbWVudHMgYXMgZGVsZXRlZCBpbiB0aGUgYXBwcm9wcmlhdGUgbGlzdApmdW5jIChsICpMYXllcmVkUHJveHlMaXN0KSBEZWxldGUoaW5kaWNlcyAuLi5pbnQpIGVycm9yIHsKCWZvciBfLCBpbmRleCA6PSByYW5nZSBpbmRpY2VzIHsKCQlpZiBpbmRleCA8IGwuc291cmNlSGVpZ2h0IHsKCQkJZXJyIDo9IGwuc291cmNlLkRlbGV0ZShpbmRleCkKCQkJaWYgZXJyICE9IG5pbCB7CgkJCQlyZXR1cm4gZXJyCgkJCX0KCQl9Cgl9CgoJZm9yIF8sIGluZGV4IDo9IHJhbmdlIGluZGljZXMgewoJCXRhcmdldEluZGV4IDo9IGluZGV4IC0gbC5zb3VyY2VIZWlnaHQKCQllcnIgOj0gbC50YXJnZXQuRGVsZXRlKHRhcmdldEluZGV4KQoJCWlmIGVyciAhPSBuaWwgewoJCQlyZXR1cm4gZXJyCgkJfQoJfQoJcmV0dXJuIG5pbAp9CgovLyBTaXplIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBhY3RpdmUgZWxlbWVudHMKZnVuYyAobCAqTGF5ZXJlZFByb3h5TGlzdCkgU2l6ZSgpIGludCB7CglyZXR1cm4gbC5zb3VyY2UuU2l6ZSgpICsgbC50YXJnZXQuU2l6ZSgpCn0KCi8vIFRvdGFsU2l6ZSByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGxpc3QKZnVuYyAobCAqTGF5ZXJlZFByb3h5TGlzdCkgVG90YWxTaXplKCkgaW50IHsKCXJldHVybiBsLnNvdXJjZUhlaWdodCArIGwudGFyZ2V0LlRvdGFsU2l6ZSgpCn0KCi8vIE11c3REZWxldGUgZGVsZXRlcyBlbGVtZW50cywgcGFuaWNraW5nIG9uIGVycm9yCmZ1bmMgKGwgKkxheWVyZWRQcm94eUxpc3QpIE11c3REZWxldGUoaW5kaWNlcyAuLi5pbnQpIHsKCWlmIGVyciA6PSBsLkRlbGV0ZShpbmRpY2VzLi4uKTsgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQp9CgovLyBNdXN0R2V0IHJldHJpZXZlcyBhIHZhbHVlLCBwYW5pY2tpbmcgaWYgbm90IGZvdW5kCmZ1bmMgKGwgKkxheWVyZWRQcm94eUxpc3QpIE11c3RHZXQoaW5kZXggaW50KSBhbnkgewoJdmFsIDo9IGwuR2V0KGluZGV4KQoJaWYgdmFsID09IG5pbCB7CgkJcGFuaWModWxpc3QuRXJyRGVsZXRlZCkKCX0KCXJldHVybiB2YWwKfQoKLy8gR2V0UmFuZ2UgcmV0dXJucyBlbGVtZW50cyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcwpmdW5jIChsICpMYXllcmVkUHJveHlMaXN0KSBHZXRSYW5nZShzdGFydCwgZW5kIGludCkgW111bGlzdC5FbnRyeSB7Cgl2YXIgZW50cmllcyBbXXVsaXN0LkVudHJ5CglsLkl0ZXJhdG9yKHN0YXJ0LCBlbmQsIGZ1bmMoaW5kZXggaW50LCB2YWx1ZSBhbnkpIGJvb2wgewoJCWVudHJpZXMgPSBhcHBlbmQoZW50cmllcywgdWxpc3QuRW50cnl7SW5kZXg6IGluZGV4LCBWYWx1ZTogdmFsdWV9KQoJCXJldHVybiBmYWxzZQoJfSkKCXJldHVybiBlbnRyaWVzCn0KCi8vIEdldFJhbmdlQnlPZmZzZXQgcmV0dXJucyBlbGVtZW50cyBzdGFydGluZyBmcm9tIG9mZnNldApmdW5jIChsICpMYXllcmVkUHJveHlMaXN0KSBHZXRSYW5nZUJ5T2Zmc2V0KG9mZnNldCBpbnQsIGNvdW50IGludCkgW111bGlzdC5FbnRyeSB7Cgl2YXIgZW50cmllcyBbXXVsaXN0LkVudHJ5CglsLkl0ZXJhdG9yQnlPZmZzZXQob2Zmc2V0LCBjb3VudCwgZnVuYyhpbmRleCBpbnQsIHZhbHVlIGFueSkgYm9vbCB7CgkJZW50cmllcyA9IGFwcGVuZChlbnRyaWVzLCB1bGlzdC5FbnRyeXtJbmRleDogaW5kZXgsIFZhbHVlOiB2YWx1ZX0pCgkJcmV0dXJuIGZhbHNlCgl9KQoJcmV0dXJuIGVudHJpZXMKfQoKLy8gSXRlcmF0b3IgcGVyZm9ybXMgaXRlcmF0aW9uIGJldHdlZW4gc3RhcnQgYW5kIGVuZCBpbmRpY2VzCmZ1bmMgKGwgKkxheWVyZWRQcm94eUxpc3QpIEl0ZXJhdG9yKHN0YXJ0LCBlbmQgaW50LCBjYiB1bGlzdC5JdGVyQ2JGbikgYm9vbCB7CgkvLyBGb3IgZW1wdHkgbGlzdCBvciBpbnZhbGlkIHJhbmdlCglpZiBzdGFydCA8IDAgJiYgZW5kIDwgMCB7CgkJcmV0dXJuIGZhbHNlCgl9CgoJLy8gTm9ybWFsaXplIGluZGljZXMKCWlmIHN0YXJ0IDwgMCB7CgkJc3RhcnQgPSAwCgl9CglpZiBlbmQgPCAwIHsKCQllbmQgPSAwCgl9CgoJdG90YWxTaXplIDo9IGwuVG90YWxTaXplKCkKCWlmIGVuZCA+PSB0b3RhbFNpemUgewoJCWVuZCA9IHRvdGFsU2l6ZSAtIDEKCX0KCWlmIHN0YXJ0ID49IHRvdGFsU2l6ZSB7CgkJc3RhcnQgPSB0b3RhbFNpemUgLSAxCgl9CgoJLy8gSGFuZGxlIHJldmVyc2UgaXRlcmF0aW9uCglpZiBzdGFydCA+IGVuZCB7CgkJZm9yIGkgOj0gc3RhcnQ7IGkgPj0gZW5kOyBpLS0gewoJCQl2YWwgOj0gbC5HZXQoaSkKCQkJaWYgdmFsICE9IG5pbCB7CgkJCQlpZiBjYihpLCB2YWwpIHsKCQkJCQlyZXR1cm4gdHJ1ZQoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBmYWxzZQoJfQoKCS8vIEhhbmRsZSBmb3J3YXJkIGl0ZXJhdGlvbgoJZm9yIGkgOj0gc3RhcnQ7IGkgPD0gZW5kOyBpKysgewoJCXZhbCA6PSBsLkdldChpKQoJCWlmIHZhbCAhPSBuaWwgewoJCQlpZiBjYihpLCB2YWwpIHsKCQkJCXJldHVybiB0cnVlCgkJCX0KCQl9Cgl9CglyZXR1cm4gZmFsc2UKfQoKLy8gSXRlcmF0b3JCeU9mZnNldCBwZXJmb3JtcyBpdGVyYXRpb24gc3RhcnRpbmcgZnJvbSBvZmZzZXQKZnVuYyAobCAqTGF5ZXJlZFByb3h5TGlzdCkgSXRlcmF0b3JCeU9mZnNldChvZmZzZXQgaW50LCBjb3VudCBpbnQsIGNiIHVsaXN0Lkl0ZXJDYkZuKSBib29sIHsKCWlmIGNvdW50ID09IDAgewoJCXJldHVybiBmYWxzZQoJfQoKCS8vIE5vcm1hbGl6ZSBvZmZzZXQKCWlmIG9mZnNldCA8IDAgewoJCW9mZnNldCA9IDAKCX0KCXRvdGFsU2l6ZSA6PSBsLlRvdGFsU2l6ZSgpCglpZiBvZmZzZXQgPj0gdG90YWxTaXplIHsKCQlvZmZzZXQgPSB0b3RhbFNpemUgLSAxCgl9CgoJLy8gRGV0ZXJtaW5lIGVuZCBiYXNlZCBvbiBjb3VudCBkaXJlY3Rpb24KCXZhciBlbmQgaW50CglpZiBjb3VudCA+IDAgewoJCWVuZCA9IHRvdGFsU2l6ZSAtIDEKCX0gZWxzZSB7CgkJZW5kID0gMAoJfQoKCXdyYXBwZXJSZXR1cm5lZCA6PSBmYWxzZQoKCS8vIENhbGN1bGF0ZSBhYnNvbHV0ZSB2YWx1ZSBtYW51YWxseSBpbnN0ZWFkIG9mIHVzaW5nIGFicyBmdW5jdGlvbgoJcmVtYWluaW5nIDo9IGNvdW50CglpZiByZW1haW5pbmcgPCAwIHsKCQlyZW1haW5pbmcgPSAtcmVtYWluaW5nCgl9CgoJd3JhcHBlciA6PSBmdW5jKGluZGV4IGludCwgdmFsdWUgYW55KSBib29sIHsKCQlpZiByZW1haW5pbmcgPD0gMCB7CgkJCXdyYXBwZXJSZXR1cm5lZCA9IHRydWUKCQkJcmV0dXJuIHRydWUKCQl9CgkJcmVtYWluaW5nLS0KCQlyZXR1cm4gY2IoaW5kZXgsIHZhbHVlKQoJfQoKCXJldCA6PSBsLkl0ZXJhdG9yKG9mZnNldCwgZW5kLCB3cmFwcGVyKQoJaWYgd3JhcHBlclJldHVybmVkIHsKCQlyZXR1cm4gZmFsc2UKCX0KCXJldHVybiByZXQKfQoKLy8gU2V0IHVwZGF0ZXMgdGhlIHZhbHVlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgKZnVuYyAobCAqTGF5ZXJlZFByb3h5TGlzdCkgU2V0KGluZGV4IGludCwgdmFsdWUgYW55KSBlcnJvciB7CglpZiBpbmRleCA8IGwuc291cmNlSGVpZ2h0IHsKCQkvLyBDYW5ub3QgbW9kaWZ5IHNvdXJjZSBsaXN0IGRpcmVjdGx5CgkJcmV0dXJuIGVycm9ycy5OZXcoImNhbm5vdCBtb2RpZnkgc291cmNlIGxpc3QgZGlyZWN0bHkiKQoJfQoKCS8vIEFkanVzdCBpbmRleCB0byBiZSByZWxhdGl2ZSB0byB0YXJnZXQgbGlzdCBzdGFydGluZyBhdCAwCgl0YXJnZXRJbmRleCA6PSBpbmRleCAtIGwuc291cmNlSGVpZ2h0CglyZXR1cm4gbC50YXJnZXQuU2V0KHRhcmdldEluZGV4LCB2YWx1ZSkKfQoKLy8gTXVzdFNldCB1cGRhdGVzIHRoZSB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LCBwYW5pY2tpbmcgb24gZXJyb3IKZnVuYyAobCAqTGF5ZXJlZFByb3h5TGlzdCkgTXVzdFNldChpbmRleCBpbnQsIHZhbHVlIGFueSkgewoJaWYgZXJyIDo9IGwuU2V0KGluZGV4LCB2YWx1ZSk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KfQoKLy8gR2V0QnlPZmZzZXQgcmV0dXJucyBlbGVtZW50cyBzdGFydGluZyBmcm9tIG9mZnNldCB3aXRoIGNvdW50IGRldGVybWluaW5nIGRpcmVjdGlvbgpmdW5jIChsICpMYXllcmVkUHJveHlMaXN0KSBHZXRCeU9mZnNldChvZmZzZXQgaW50LCBjb3VudCBpbnQpIFtddWxpc3QuRW50cnkgewoJdmFyIGVudHJpZXMgW111bGlzdC5FbnRyeQoJbC5JdGVyYXRvckJ5T2Zmc2V0KG9mZnNldCwgY291bnQsIGZ1bmMoaW5kZXggaW50LCB2YWx1ZSBhbnkpIGJvb2wgewoJCWVudHJpZXMgPSBhcHBlbmQoZW50cmllcywgdWxpc3QuRW50cnl7SW5kZXg6IGluZGV4LCBWYWx1ZTogdmFsdWV9KQoJCXJldHVybiBmYWxzZQoJfSkKCXJldHVybiBlbnRyaWVzCn0KCi8vIFZlcmlmeSB0aGF0IExheWVyZWRQcm94eUxpc3QgaW1wbGVtZW50cyBJTGlzdAp2YXIgXyB1bGlzdC5JTGlzdCA9ICgqTGF5ZXJlZFByb3h5TGlzdCkobmlsKQoiIwoTL2duby5NZW1QYWNrYWdlVHlwZRIMCgpNUFVzZXJQcm9kEhMIzKGeEhIMMTAwMDAwMHVnbm90GqgBCjoKEy90bS5QdWJLZXlTZWNwMjU2azESIwohAgBSSj+NLAA6icQ/Rf6vbrjtRbbjo197vms7Sf+eLYPIEkC9TO+UTY0yoMU0gQG6UMXS4003+7RaOBytDKMEmgoMvwfSQBMSrjITclgKCs3xLNWmf5sFYv85S9EVGN0jdfebGihnMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcWx1dXhlIgpnbm9wdWJsaXNo