Transaction executed successfully

Transaction Details

Inspect execution, participants, message data, gas usage, events and raw transaction data.

Transaction hash
8B589963CCE3884646E522AF8D46065A5CD7518F05A900463949D29104FC5EA2

Transaction overview

Status
Success
Execution completed
Block
#575205
Included in block
Message Type
m_addpkg
Primary message

Execution summary

TX INDEX
0
Position in block
GAS WANTED
200,000,000
Requested gas limit
GAS USED
23,515,101
Gas consumed
FEE
200000ugnot
Transaction fee

Participants

Sender
Package / Realm
Not available
Memo
None

Message

Message #1
m_addpkg
Caller
Arguments
g1t2kg2vtr3fukg43eujkn6x53gfdyakhngt4sfd25000000ugnot

Execution log

msg:0,success:true,log:,events:[]

Events

No events emitted by this transaction.

Raw encoded transaction

CreDAQoML3ZtLm1fYWRkcGtnEqWDAQooZzF0MmtnMnZ0cjNmdWtnNDNldWprbjZ4NTNnZmR5YWtobmd0NHNmZBLoggEKBmdub2ZseRJXZ25vLmxhbmQvci9nMXQya2cydnRyM2Z1a2c0M2V1amtuNng1M2dmZHlha2huZ3Q0c2ZkL2dub2ZseS9uZnRzL21hcmtldC9iYXphYXIvdjAvZ25vZmx5GvMJCgdkb2MuZ25vEucJLy8gUGFja2FnZSBnbm9mbHkgaXMgdGhlIG1hcmtldCBvZiBnbm9mbHkncyBwbGFuZXM6IGEgZml4ZWQtcHJpY2UgYm9vayB3aGVyZQovLyBhIHBsYW5lJ3Mgb3duZXIgbGlzdHMgaXQsIGFueW9uZSBidXlzIGl0LCBhbmQgZWFjaCBzYWxlIHBheXMgdGhlIHBsYW5lcwovLyByZWFsbSdzIHJveWFsdHkgKFJveWFsdHlJbmZvOiA1JSB0byB0aGUgZ25vZmx5IHRyZWFzdXJ5KSBvdXQgb2YgdGhlIHByaWNlLgovLwovLyBJdCBpcyBhIHdyYXBwZXIsIG5vdCBhIGNvbGxlY3Rpb246IGl0IG1pbnRzIG5vdGhpbmcuIFRoZSBwbGFuZXMgYXJlIHRoZQovLyB0b2tlbnMgb2YgZ25vLmxhbmQvci9nMXQya2cydnRyM2Z1a2c0M2V1amtuNng1M2dmZHlha2huZ3Q0c2ZkL2dub2ZseS9uZnRzL3BsYW5lcywKLy8gbW92ZWQgd2l0aCB0aGF0IHJlYWxtJ3MgVHJhbnNmZXJGcm9tLiBBIHNlbGxlciBmaXJzdCBhcHByb3ZlcyB0aGlzIHJlYWxtCi8vIHRoZXJlIChBcHByb3ZlIGZvciBvbmUgcGxhbmUsIG9yIFNldEFwcHJvdmFsRm9yQWxsKTsgTGlzdCB0aGVuIG1vdmVzIHRoZQovLyBwbGFuZSBoZXJlLCBpbiBlc2Nyb3csIEJ1eSBoYW5kcyBpdCB0byB0aGUgYnV5ZXIgYW5kIENhbmNlbCBiYWNrIHRvIHRoZQovLyBzZWxsZXIuCi8vCi8vIEl0cyBjYWxscyBhbmQgcmVhZHMgaGF2ZSB0aGUgc2hhcGVzIEJhemFhcidzIHNpdGUgKGJhemFhci5nbm9taS5mdW4pCi8vIHVzZXMgb24gYSBjb2xsZWN0aW9uIHBhY2thZ2UgKExpc3QsIFVwZGF0ZVByaWNlLCBDYW5jZWwsIEJ1eSwgVHJhbnNmZXI7Ci8vIExpc3RPcGVuLCBJdGVtTGluZSwgVG9rZW5zT2YsIE1pbnRlZCksIHNvIHRoYXQgaXQgY2FuIGJlIHJlZ2lzdGVyZWQgdGhlcmUKLy8gbGF0ZXIsIHVuZGVyIHRoZSBzbHVnIG9mIGl0cyBsYXN0IHBhdGggZWxlbWVudC4gSXQgaXMgbm90IHJlZ2lzdGVyZWQsIGFuZAovLyBwYXlzIEJhemFhciBub3RoaW5nLgovLwovLyBJdCBpcyB2ZXJzaW9uIHYwIG9mIHRoZSBtYXJrZXQgKHRoZSBwYXRoJ3MgdjApLiBTZXRQYXVzZWQgc3RvcHMgbmV3Ci8vIGxpc3RpbmdzIGZvciBhIG1vdmUgdG8gYSBuZXdlciBvbmU7IENhbmNlbCBhbmQgQnV5IGtlZXAgd29ya2luZywgc28gbm8KLy8gcGxhbmUgaXMgZXZlciBzdHVjayBoZXJlLgovLwovLyBFdmVyeSB3cml0ZSBpcyBhIGRpcmVjdCBjYWxsIGZyb20gYSB3YWxsZXQ6IG5vIHJlYWxtIGNhbiBsaXN0LCBidXkgb3IKLy8gY2FuY2VsIGluIGEgdXNlcidzIG5hbWUuCnBhY2thZ2UgZ25vZmx5Chr0CQoKZXJyb3JzLmdubxLlCXBhY2thZ2UgZ25vZmx5CgovLyBUaGUgcmVmdXNhbHMgb2YgdGhpcyByZWFsbSwgYXMgc3RyaW5nczogYSBzdHJpbmcgY29uc3RhbnQgY29zdHMgaXRzIGxlbmd0aAovLyBpbiBzdG9yYWdlIHdoZXJlIGFuIGVycm9ycy5OZXcgdmFsdWUgY29zdHMgYWJvdXQgYSBraWxvYnl0ZSAoc2VlIHRoZSBwbGFuZXMKLy8gcmVhbG0ncyBlcnJvcnMuZ25vKS4gQSBwYW5pYyB3aXRoIGEgc3RyaW5nIGFib3J0cyB0aGUgY2FsbCB3aXRoIGl0Lgpjb25zdCAoCgllcnJTcG9vZmVkUmVhbG0gPSAiZ25vZmx5IG1hcmtldDogc3Bvb2ZlZCByZWFsbSIKCWVyck5vdEFkbWluICAgICA9ICJnbm9mbHkgbWFya2V0OiBjYWxsZXIgaXMgbm90IGFuIGFkbWluIgoJZXJyTm90VXNlckNhbGwgID0gImdub2ZseSBtYXJrZXQ6IGNhbGwgaXQgZGlyZWN0bHkgZnJvbSBhIHdhbGxldCAobWFrZXR4IGNhbGwgb3IgQWRlbmEpIgoKCWVyclVua25vd25QbGFuZSA9ICJnbm9mbHkgbWFya2V0OiBubyBzdWNoIHBsYW5lIgoJZXJyTm90T3duZXIgICAgID0gImdub2ZseSBtYXJrZXQ6IGNhbGxlciBkb2VzIG5vdCBvd24gdGhpcyBwbGFuZSIKCWVyck5vdFNlbGxlciAgICA9ICJnbm9mbHkgbWFya2V0OiBjYWxsZXIgaXMgbm90IHRoZSBzZWxsZXIgb2YgdGhpcyBwbGFuZSIKCWVyckxpc3RlZCAgICAgICA9ICJnbm9mbHkgbWFya2V0OiB0aGlzIHBsYW5lIGlzIGxpc3RlZCIKCWVyck5vdExpc3RlZCAgICA9ICJnbm9mbHkgbWFya2V0OiB0aGlzIHBsYW5lIGlzIG5vdCBsaXN0ZWQiCgllcnJPd25MaXN0aW5nICAgPSAiZ25vZmx5IG1hcmtldDogYSBzZWxsZXIgY2Fubm90IGJ1eSB0aGVpciBvd24gbGlzdGluZyIKCWVyclBhdXNlZCAgICAgICA9ICJnbm9mbHkgbWFya2V0OiBuZXcgbGlzdGluZ3MgYXJlIHBhdXNlZCIKCWVyckJhZFByaWNlICAgICA9ICJnbm9mbHkgbWFya2V0OiBwcmljZSBtdXN0IGJlIGJldHdlZW4gMTAwMDAwMCBhbmQgMTAwMDAwMDAwMDAwMCB1Z25vdCIKCWVyck5vdEFwcHJvdmVkICA9ICJnbm9mbHkgbWFya2V0OiBhcHByb3ZlIHRoZSBtYXJrZXQgb24gdGhlIHBsYW5lcyByZWFsbSBmaXJzdCAoQXBwcm92ZSBvciBTZXRBcHByb3ZhbEZvckFsbCkiCgllcnJCYWRSZWNpcGllbnQgPSAiZ25vZmx5IG1hcmtldDogaW52YWxpZCByZWNpcGllbnQgYWRkcmVzcyIKCWVyck5vdFN0cmF5ICAgICA9ICJnbm9mbHkgbWFya2V0OiB0aGlzIHBsYW5lIGlzIG5vdCBoZWxkIGJ5IHRoZSBtYXJrZXQgb3V0c2lkZSBhIGxpc3RpbmciCikKGn4KC2dub21vZC50b21sEm9tb2R1bGUgPSAiZ25vLmxhbmQvci9nMXQya2cydnRyM2Z1a2c0M2V1amtuNng1M2dmZHlha2huZ3Q0c2ZkL2dub2ZseS9uZnRzL21hcmtldC9iYXphYXIvdjAvZ25vZmx5Igpnbm8gPSAiMC45IgoayTcKCm1hcmtldC5nbm8SujdwYWNrYWdlIGdub2ZseQoKaW1wb3J0ICgKCSJjaGFpbiIKCSJjaGFpbi9iYW5rZXIiCgkic3RyY29udiIKCgkvLyBPbmx5IGZvciBPcmlnaW5TZW5kLCBpbiBCdXkuIENhbGxlciBpZGVudGl0eSBhbHdheXMgY29tZXMgZnJvbSBjdXIsCgkvLyBuZXZlciBmcm9tIHRoaXMgcGFja2FnZS4KCSJjaGFpbi9ydW50aW1lL3Vuc2FmZSIKCgkiZ25vLmxhbmQvcC9udC9icHRyZWUvdjAiCgkiZ25vLmxhbmQvcC9udC9ncmM3MjEvdjAiCgoJImduby5sYW5kL3IvZzF0MmtnMnZ0cjNmdWtnNDNldWprbjZ4NTNnZmR5YWtobmd0NHNmZC9nbm9mbHkvbmZ0cy9wbGFuZXMiCikKCmNvbnN0ICgKCXBheURlbm9tID0gInVnbm90IgoKCS8vIG1pblByaWNlIGtlZXBzIHRoZSByb3lhbHR5IGFib3ZlIHplcm8gYWZ0ZXIgcm91bmRpbmc6IDUlIG9mIDEgR05PVC4KCW1pblByaWNlID0gaW50NjQoMV8wMDBfMDAwKQoJLy8gbWF4UHJpY2Uga2VlcHMgcHJpY2UgKiByb3lhbHR5IGJwcyBmYXIgYmVsb3cgYW4gaW50NjQuCgltYXhQcmljZSA9IGludDY0KDFfMDAwXzAwMF8wMDBfMDAwKQoKCXN1cHBseSA9IDc3NyAvLyBwbGFuZSBpZHMgcnVuIGZyb20gMSB0byA3NzcKKQoKLy8gbGlzdGluZyBpcyBvbmUgcGxhbmUgZm9yIHNhbGUuIFRoZSBwbGFuZSBpdHNlbGYgaXMgaGVsZCBieSB0aGlzIHJlYWxtCi8vIChlc2Nyb3cpIHVudGlsIGl0IGlzIGJvdWdodCBvciB0aGUgbGlzdGluZyBpcyBjYW5jZWxsZWQuCnR5cGUgbGlzdGluZyBzdHJ1Y3QgewoJc2VsbGVyIGFkZHJlc3MKCXByaWNlICBpbnQ2NCAvLyB1Z25vdAp9Cgp2YXIgKAoJLy8gbGlzdGluZ3MgYnkgcGxhbmUgaWQsIGFzIGEgdGhyZWUtZGlnaXQga2V5ICgiMDQyIikgc28gdGhhdCBpdGVyYXRpb24KCS8vIHJ1bnMgaW4gaWQgb3JkZXIuCglsaXN0aW5ncyBicHRyZWUuQlBUcmVlCgkvLyBwYXVzZWQgc3RvcHMgbmV3IGxpc3RpbmdzIGFuZCBwcmljZSBjaGFuZ2VzLCBmb3IgYSBtb3ZlIHRvIGEgbmV3ZXIKCS8vIHZlcnNpb24gb2YgdGhlIG1hcmtldC4gQ2FuY2VsIGFuZCBCdXkga2VlcCB3b3JraW5nOiBub3RoaW5nIGxpc3RlZCBoZXJlCgkvLyBjYW4gYmUgc3R1Y2suCglwYXVzZWQgYm9vbAoJLy8gc2VsZiBpcyB0aGlzIHJlYWxtJ3MgYWRkcmVzcywgcmVjb3JkZWQgYXQgaW5pdDogd2hhdCBzZWxsZXJzIGFwcHJvdmUKCS8vIG9uIHRoZSBwbGFuZXMgcmVhbG0uCglzZWxmIGFkZHJlc3MKKQoKZnVuYyBpbml0KGN1ciByZWFsbSkgewoJc2VsZiA9IGN1ci5BZGRyZXNzKCkKfQoKLy8gTGlzdCBwdXRzIHBsYW5lIGlkIHVwIGZvciBzYWxlIGF0IHByaWNlVWdub3QuIFRoZSBjYWxsZXIgbXVzdCBvd24gaXQgYW5kCi8vIGhhdmUgYXBwcm92ZWQgdGhpcyByZWFsbSBvbiB0aGUgcGxhbmVzIHJlYWxtIChBcHByb3ZlIGZvciB0aGlzIHBsYW5lLCBvcgovLyBTZXRBcHByb3ZhbEZvckFsbCk6IHRoZSBwbGFuZSBtb3ZlcyBoZXJlLCBpbiBlc2Nyb3csIHVudGlsIGl0IGlzIGJvdWdodCBvcgovLyB0aGUgbGlzdGluZyBpcyBjYW5jZWxsZWQuCmZ1bmMgTGlzdChjdXIgcmVhbG0sIGlkIGludCwgcHJpY2VVZ25vdCBpbnQ2NCkgewoJc2VsbGVyIDo9IHVzZXJPZigwLCBjdXIpCglpZiBwYXVzZWQgewoJCXBhbmljKGVyclBhdXNlZCkKCX0KCWNoZWNrUHJpY2UocHJpY2VVZ25vdCkKCWlmIGxpc3RpbmdzLkhhcyhrZXkoaWQpKSB7CgkJcGFuaWMoZXJyTGlzdGVkKQoJfQoJaWYgb3duZXIgOj0gb3duZXJPZihpZCk7IG93bmVyICE9IHNlbGxlciB7CgkJcGFuaWMoZXJyTm90T3duZXIpCgl9CglpZiAhcGxhbmVzLklzQXBwcm92ZWRGb3JBbGwoc2VsbGVyLCBzZWxmKSAmJiBwbGFuZXMuR2V0QXBwcm92ZWQoaW50NjQoaWQpKSAhPSBzZWxmIHsKCQlwYW5pYyhlcnJOb3RBcHByb3ZlZCkKCX0KCWxpc3RpbmdzLlNldChrZXkoaWQpLCAmbGlzdGluZ3tzZWxsZXI6IHNlbGxlciwgcHJpY2U6IHByaWNlVWdub3R9KQoJcGxhbmVzLlRyYW5zZmVyRnJvbShjcm9zcyhjdXIpLCBzZWxsZXIsIHNlbGYsIGludDY0KGlkKSkKCWNoYWluLkVtaXQoIkxpc3QiLCAiaWQiLCBzdHJjb252Lkl0b2EoaWQpLCAic2VsbGVyIiwgc2VsbGVyLlN0cmluZygpLCAicHJpY2UiLCBzdHJjb252LkZvcm1hdEludChwcmljZVVnbm90LCAxMCkpCn0KCi8vIFVwZGF0ZVByaWNlIGNoYW5nZXMgdGhlIHByaWNlIG9mIGEgcGxhbmUgdGhlIGNhbGxlciBsaXN0ZWQuCmZ1bmMgVXBkYXRlUHJpY2UoY3VyIHJlYWxtLCBpZCBpbnQsIHByaWNlVWdub3QgaW50NjQpIHsKCXNlbGxlciA6PSB1c2VyT2YoMCwgY3VyKQoJaWYgcGF1c2VkIHsKCQlwYW5pYyhlcnJQYXVzZWQpCgl9CgljaGVja1ByaWNlKHByaWNlVWdub3QpCglsIDo9IG11c3RMaXN0aW5nKGlkKQoJaWYgbC5zZWxsZXIgIT0gc2VsbGVyIHsKCQlwYW5pYyhlcnJOb3RTZWxsZXIpCgl9CglsLnByaWNlID0gcHJpY2VVZ25vdAoJY2hhaW4uRW1pdCgiVXBkYXRlUHJpY2UiLCAiaWQiLCBzdHJjb252Lkl0b2EoaWQpLCAic2VsbGVyIiwgc2VsbGVyLlN0cmluZygpLCAicHJpY2UiLCBzdHJjb252LkZvcm1hdEludChwcmljZVVnbm90LCAxMCkpCn0KCi8vIENhbmNlbCB0YWtlcyBhIGxpc3RpbmcgZG93biBhbmQgZ2l2ZXMgdGhlIHBsYW5lIGJhY2sgdG8gaXRzIHNlbGxlci4gSXQKLy8gd29ya3Mgd2hpbGUgdGhlIG1hcmtldCBpcyBwYXVzZWQuCmZ1bmMgQ2FuY2VsKGN1ciByZWFsbSwgaWQgaW50KSB7CglzZWxsZXIgOj0gdXNlck9mKDAsIGN1cikKCWwgOj0gbXVzdExpc3RpbmcoaWQpCglpZiBsLnNlbGxlciAhPSBzZWxsZXIgewoJCXBhbmljKGVyck5vdFNlbGxlcikKCX0KCWxpc3RpbmdzLlJlbW92ZShrZXkoaWQpKQoJcGxhbmVzLlRyYW5zZmVyRnJvbShjcm9zcyhjdXIpLCBjdXIuQWRkcmVzcygpLCBzZWxsZXIsIGludDY0KGlkKSkKCWNoYWluLkVtaXQoIkNhbmNlbCIsICJpZCIsIHN0cmNvbnYuSXRvYShpZCksICJzZWxsZXIiLCBzZWxsZXIuU3RyaW5nKCkpCn0KCi8vIEJ1eSBidXlzIGEgbGlzdGVkIHBsYW5lOiBzZW5kIGV4YWN0bHkgaXRzIHByaWNlIGluIHVnbm90LiBUaGUgcm95YWx0eSBvZgovLyB0aGUgcGxhbmVzIHJlYWxtIChSb3lhbHR5SW5mbzogNSUgdG8gdGhlIGdub2ZseSB0cmVhc3VyeSkgaXMgcGFpZCBvdXQgb2YKLy8gdGhlIHByaWNlLCB0aGUgc2VsbGVyIHJlY2VpdmVzIHRoZSByZXN0LCBhbmQgdGhlIHBsYW5lIGdvZXMgdG8gdGhlIGJ1eWVyLgovLyBJdCB3b3JrcyB3aGlsZSB0aGUgbWFya2V0IGlzIHBhdXNlZC4KZnVuYyBCdXkoY3VyIHJlYWxtLCBpZCBpbnQpIHsKCS8vIEEgZGlyZWN0IHVzZXIgY2FsbDogb25seSB0aGVuIGhhcyB0aGUgLXNlbmQgZW52ZWxvcGUgbGFuZGVkIGF0IHRoaXMKCS8vIHJlYWxtJ3MgYWRkcmVzcywgd2hpY2ggdGhlIE9yaWdpblNlbmQgYmFua2VyIGJlbG93IHBheXMgb3V0IG9mLgoJYnV5ZXIgOj0gdXNlck9mKDAsIGN1cikKCWwgOj0gbXVzdExpc3RpbmcoaWQpCglpZiBsLnNlbGxlciA9PSBidXllciB7CgkJcGFuaWMoZXJyT3duTGlzdGluZykKCX0KCXNlbnQgOj0gdW5zYWZlLk9yaWdpblNlbmQoKQoJaWYgbGVuKHNlbnQpICE9IDEgfHwgc2VudFswXS5EZW5vbSAhPSBwYXlEZW5vbSB8fCBzZW50WzBdLkFtb3VudCAhPSBsLnByaWNlIHsKCQlwYW5pYygiZ25vZmx5IG1hcmtldDogd3JvbmcgcGF5bWVudCwgc2VuZCBleGFjdGx5ICIgKyBzdHJjb252LkZvcm1hdEludChsLnByaWNlLCAxMCkgKyBwYXlEZW5vbSkKCX0KCS8vIFRoZSBsaXN0aW5nIGdvZXMgYmVmb3JlIGFueSBjb2luIG9yIHBsYW5lIG1vdmVzLgoJbGlzdGluZ3MuUmVtb3ZlKGtleShpZCkpCgoJcmVjZWl2ZXIsIHJveWFsdHkgOj0gcGxhbmVzLlJveWFsdHlJbmZvKGludDY0KGlkKSwgbC5wcmljZSkKCWlmIHJveWFsdHkgPCAwIHx8IHJveWFsdHkgPiBsLnByaWNlIHsKCQlyb3lhbHR5ID0gMAoJfQoJYmFuayA6PSBiYW5rZXIuTmV3QmFua2VyKGJhbmtlci5CYW5rZXJUeXBlT3JpZ2luU2VuZCwgY3VyKQoJaWYgcm95YWx0eSA+IDAgJiYgcmVjZWl2ZXIuSXNWYWxpZCgpIHsKCQliYW5rLlNlbmRDb2lucyhjdXIuQWRkcmVzcygpLCByZWNlaXZlciwgY2hhaW4uTmV3Q29pbnMoY2hhaW4uTmV3Q29pbihwYXlEZW5vbSwgcm95YWx0eSkpKQoJfSBlbHNlIHsKCQlyb3lhbHR5ID0gMAoJfQoJYmFuay5TZW5kQ29pbnMoY3VyLkFkZHJlc3MoKSwgbC5zZWxsZXIsIGNoYWluLk5ld0NvaW5zKGNoYWluLk5ld0NvaW4ocGF5RGVub20sIGwucHJpY2Utcm95YWx0eSkpKQoKCXBsYW5lcy5UcmFuc2ZlckZyb20oY3Jvc3MoY3VyKSwgY3VyLkFkZHJlc3MoKSwgYnV5ZXIsIGludDY0KGlkKSkKCWNoYWluLkVtaXQoIkJ1eSIsICJpZCIsIHN0cmNvbnYuSXRvYShpZCksICJzZWxsZXIiLCBsLnNlbGxlci5TdHJpbmcoKSwgImJ1eWVyIiwgYnV5ZXIuU3RyaW5nKCksCgkJInByaWNlIiwgc3RyY29udi5Gb3JtYXRJbnQobC5wcmljZSwgMTApLCAicm95YWx0eSIsIHN0cmNvbnYuRm9ybWF0SW50KHJveWFsdHksIDEwKSkKfQoKLy8gVHJhbnNmZXIgZ2l2ZXMgYSBwbGFuZSB0aGUgY2FsbGVyIG93bnMsIG5vdCBsaXN0ZWQsIHRvIGFub3RoZXIgYWRkcmVzcywKLy8gdGhyb3VnaCB0aGlzIHJlYWxtOiB0aGUgY2FsbCBCYXphYXIncyBzaXRlIG1ha2VzLiBJdCBuZWVkcyB0aGUgc2FtZQovLyBhcHByb3ZhbCBhcyBMaXN0LiBBIHBsYW5lIGNhbiBhbHdheXMgYmUgbW92ZWQgb24gdGhlIHBsYW5lcyByZWFsbSBpdHNlbGYuCmZ1bmMgVHJhbnNmZXIoY3VyIHJlYWxtLCB0byBhZGRyZXNzLCBpZCBpbnQpIHsKCWZyb20gOj0gdXNlck9mKDAsIGN1cikKCWlmICF0by5Jc1ZhbGlkKCkgewoJCXBhbmljKGVyckJhZFJlY2lwaWVudCkKCX0KCWlmIGxpc3RpbmdzLkhhcyhrZXkoaWQpKSB7CgkJcGFuaWMoZXJyTGlzdGVkKQoJfQoJaWYgb3duZXIgOj0gb3duZXJPZihpZCk7IG93bmVyICE9IGZyb20gewoJCXBhbmljKGVyck5vdE93bmVyKQoJfQoJcGxhbmVzLlRyYW5zZmVyRnJvbShjcm9zcyhjdXIpLCBmcm9tLCB0bywgaW50NjQoaWQpKQoJY2hhaW4uRW1pdCgiVHJhbnNmZXIiLCAiaWQiLCBzdHJjb252Lkl0b2EoaWQpLCAiZnJvbSIsIGZyb20uU3RyaW5nKCksICJ0byIsIHRvLlN0cmluZygpKQp9CgovLyBTZXRQYXVzZWQgc3RvcHMgKG9yIHJlc3VtZXMpIG5ldyBsaXN0aW5ncyBhbmQgcHJpY2UgY2hhbmdlcy4gQWRtaW4gb2YgdGhlCi8vIGdhbWUgcmVhbG0gb25seS4gQ2FuY2VsIGFuZCBCdXkga2VlcCB3b3JraW5nLCBzbyBhIG1vdmUgdG8gYSBuZXdlciBtYXJrZXQKLy8gbmV2ZXIgc3RyYW5kcyBhIHBsYW5lOiBzZWxsZXJzIGNhbmNlbCBoZXJlIGFuZCBsaXN0IHRoZXJlLgpmdW5jIFNldFBhdXNlZChjdXIgcmVhbG0sIHAgYm9vbCkgewoJYXNzZXJ0QWRtaW4oMCwgY3VyKQoJcGF1c2VkID0gcAoJY2hhaW4uRW1pdCgiUGF1c2VkIiwgInBhdXNlZCIsIHN0cmNvbnYuRm9ybWF0Qm9vbChwKSkKfQoKLy8gUmV0dXJuU3RyYXkgZ2l2ZXMgYmFjayBhIHBsYW5lIHRoaXMgcmVhbG0gaG9sZHMgb3V0c2lkZSBhbnkgbGlzdGluZzogb25lCi8vIHNvbWVvbmUgc2VudCBoZXJlIGJ5IG1pc3Rha2UuIEFkbWluIG9mIHRoZSBnYW1lIHJlYWxtIG9ubHk7IHRvIGlzIHdobyBpdAovLyBjYW1lIGZyb20sIGFzIHRoZSBjaGFpbidzIHRyYW5zZmVyIGV2ZW50cyBzaG93LgpmdW5jIFJldHVyblN0cmF5KGN1ciByZWFsbSwgaWQgaW50LCB0byBhZGRyZXNzKSB7Cglhc3NlcnRBZG1pbigwLCBjdXIpCglpZiAhdG8uSXNWYWxpZCgpIHsKCQlwYW5pYyhlcnJCYWRSZWNpcGllbnQpCgl9CglpZiBsaXN0aW5ncy5IYXMoa2V5KGlkKSkgfHwgb3duZXJPZihpZCkgIT0gY3VyLkFkZHJlc3MoKSB7CgkJcGFuaWMoZXJyTm90U3RyYXkpCgl9CglwbGFuZXMuVHJhbnNmZXJGcm9tKGNyb3NzKGN1ciksIGN1ci5BZGRyZXNzKCksIHRvLCBpbnQ2NChpZCkpCgljaGFpbi5FbWl0KCJSZXR1cm5TdHJheSIsICJpZCIsIHN0cmNvbnYuSXRvYShpZCksICJ0byIsIHRvLlN0cmluZygpKQp9CgovLyBQYXVzZWQgcmVwb3J0cyB3aGV0aGVyIG5ldyBsaXN0aW5ncyBhcmUgc3RvcHBlZC4KZnVuYyBQYXVzZWQoKSBib29sIHsgcmV0dXJuIHBhdXNlZCB9CgovLyBjaGVja1ByaWNlIHBhbmljcyB1bmxlc3MgcCBpcyBhIHByaWNlIHRoaXMgbWFya2V0IHRha2VzLgpmdW5jIGNoZWNrUHJpY2UocCBpbnQ2NCkgewoJaWYgcCA8IG1pblByaWNlIHx8IHAgPiBtYXhQcmljZSB7CgkJcGFuaWMoZXJyQmFkUHJpY2UpCgl9Cn0KCi8vIG11c3RMaXN0aW5nIHJldHVybnMgdGhlIGxpc3Rpbmcgb2YgcGxhbmUgaWQsIG9yIHBhbmljcy4KZnVuYyBtdXN0TGlzdGluZyhpZCBpbnQpICpsaXN0aW5nIHsKCXYgOj0gbGlzdGluZ3MuR2V0KGtleShpZCkpCglpZiB2ID09IG5pbCB7CgkJcGFuaWMoZXJyTm90TGlzdGVkKQoJfQoJcmV0dXJuIHYuKCpsaXN0aW5nKQp9CgovLyBnZXRMaXN0aW5nIHJldHVybnMgdGhlIGxpc3Rpbmcgb2YgcGxhbmUgaWQsIG9yIG5pbC4KZnVuYyBnZXRMaXN0aW5nKGlkIGludCkgKmxpc3RpbmcgewoJaWYgdiA6PSBsaXN0aW5ncy5HZXQoa2V5KGlkKSk7IHYgIT0gbmlsIHsKCQlyZXR1cm4gdi4oKmxpc3RpbmcpCgl9CglyZXR1cm4gbmlsCn0KCi8vIG93bmVyT2YgcmV0dXJucyB0aGUgb3duZXIgb2YgcGxhbmUgaWQgb24gdGhlIHBsYW5lcyByZWFsbSwgb3IgcGFuaWNzIGZvcgovLyBhbiBpZCB0aGF0IGlzIG5vdCBhIG1pbnRlZCBwbGFuZS4KZnVuYyBvd25lck9mKGlkIGludCkgYWRkcmVzcyB7CglpZiBpZCA8IDEgfHwgaWQgPiBzdXBwbHkgewoJCXBhbmljKGVyclVua25vd25QbGFuZSkKCX0KCW93bmVyLCBlcnIgOj0gcGxhbmVzLk93bmVyT2YodGlkKGlkKSkKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGVyclVua25vd25QbGFuZSkKCX0KCXJldHVybiBvd25lcgp9CgovLyBrZXkgaXMgdGhlIGxpc3RpbmdzIGtleSBvZiBwbGFuZSBpZDogdGhyZWUgZGlnaXRzLCAiMDQyIi4KZnVuYyBrZXkoaWQgaW50KSBzdHJpbmcgewoJcyA6PSBzdHJjb252Lkl0b2EoaWQpCglmb3IgbGVuKHMpIDwgMyB7CgkJcyA9ICIwIiArIHMKCX0KCXJldHVybiBzCn0KCmZ1bmMgdGlkKGlkIGludCkgZ3JjNzIxLlRva2VuSUQgeyByZXR1cm4gZ3JjNzIxLlRva2VuSUQoc3RyY29udi5JdG9hKGlkKSkgfQoa/ykKCHJlYWQuZ25vEvIpcGFja2FnZSBnbm9mbHkKCmltcG9ydCAoCgkic3RyY29udiIKCSJzdHJpbmdzIgoKCSJnbm8ubGFuZC9wL250L2dyYzcyMS92MCIKCSJnbm8ubGFuZC9wL29uYmxvYy9qc29uL3YwIgoKCSJnbm8ubGFuZC9yL2cxdDJrZzJ2dHIzZnVrZzQzZXVqa242eDUzZ2ZkeWFraG5ndDRzZmQvZ25vZmx5L25mdHMvcGxhbmVzIgopCgovLyBUaGUgcmVhZHMgYXJlIGluIHRoZSBzaGFwZXMgQmF6YWFyJ3Mgc2l0ZSAoYmF6YWFyLmdub21pLmZ1bikgcGFyc2VzIG9uIGEKLy8gY29sbGVjdGlvbiBwYWNrYWdlLCBzbyB0aGF0IHRoaXMgbWFya2V0IGNhbiBiZSByZWdpc3RlcmVkIHRoZXJlIGxhdGVyCi8vIHdpdGhvdXQgYSBuZXcgdmVyc2lvbi4gTGluZXMgYXJlIGZpZWxkcyBqb2luZWQgYnkgInwiOgovLwovLwlpZHxuYW1lfG93bmVyfHNlbGxlcnxwcmljZXxsaXN0ZWR8aW1hZ2V8Y29sbGVjdGlvbnxyYXJpdHl8dHJhaXRzfHJldmVhbGVkfHNsb3QKLy8KLy8gb3duZXIgaXMgdGhlIHBsYW5lcyByZWFsbSdzIG93bmVyLCB0aGlzIHJlYWxtIGZvciBhIGxpc3RlZCBwbGFuZSAoZXNjcm93KTsKLy8gc2VsbGVyIGFuZCBwcmljZSBhcmUgZW1wdHkgYW5kIDAgd2hlbiB0aGUgcGxhbmUgaXMgbm90IGxpc3RlZC4gY29sbGVjdGlvbgovLyBpcyB0aGUgc2x1ZyBCYXphYXIgd291bGQga25vdyB0aGlzIHJlYWxtIGJ5OiB0aGUgbGFzdCBwYXRoIGVsZW1lbnQuCgovLyBzbHVnIGlzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhpcyByZWFsbSdzIHBhdGguCmNvbnN0IHNsdWcgPSAiZ25vZmx5IgoKLy8gbWF4T3BlbiBpcyB0aGUgbW9zdCBsaXN0aW5ncyBMaXN0T3BlbiByZXR1cm5zLCBhcyBCYXphYXIncyBvd24gcmVhbG1zIGRvLgpjb25zdCBtYXhPcGVuID0gNTAKCi8vIE5hbWUgYW5kIFN5bWJvbCBhcmUgdGhlIHBsYW5lcyBjb2xsZWN0aW9uJ3M6IHRoZSBtYXJrZXQgc2VsbHMgbm90aGluZyBlbHNlLgpmdW5jIE5hbWUoKSBzdHJpbmcgICB7IHJldHVybiAiZ25vZmx5IHBsYW5lcyIgfQpmdW5jIFN5bWJvbCgpIHN0cmluZyB7IHJldHVybiAiUExBTkUiIH0KCi8vIE1pbnRlZCByZXR1cm5zIGhvdyBtYW55IHBsYW5lcyB3ZXJlIG1pbnRlZC4KZnVuYyBNaW50ZWQoKSBpbnQgeyByZXR1cm4gaW50KHBsYW5lcy5NaW50ZWQoKSkgfQoKLy8gT3duZXJPZiByZXR1cm5zIHRoZSBvd25lciBvZiBhIHBsYW5lIG9uIHRoZSBwbGFuZXMgcmVhbG06IHRoaXMgcmVhbG0gd2hpbGUKLy8gaXQgaXMgbGlzdGVkLgpmdW5jIE93bmVyT2YodGlkIHN0cmluZykgKGFkZHJlc3MsIGVycm9yKSB7CglyZXR1cm4gcGxhbmVzLk93bmVyT2YoZ3JjNzIxLlRva2VuSUQodGlkKSkKfQoKLy8gVG9rZW5VUkkgcmV0dXJucyB0aGUgaW1hZ2Ugb2YgYSBwbGFuZSwgYW4gaHR0cHMgVVJMLgpmdW5jIFRva2VuVVJJKHRpZCBzdHJpbmcpIHN0cmluZyB7Cgl1cmksIGVyciA6PSBwbGFuZXMuVG9rZW5VUkkoZ3JjNzIxLlRva2VuSUQodGlkKSkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiAiIgoJfQoJcmV0dXJuIHVyaQp9CgovLyBUb2tlbnNPZiByZXR1cm5zIHRoZSBpZHMgb2YgdGhlIHBsYW5lcyBvd25lciBob2xkcywgY29tbWEtc2VwYXJhdGVkLCBpbgovLyBpZCBvcmRlcjogIjMsNDIsNzAwIi4gQSBsaXN0ZWQgcGxhbmUgaXMgbm90IGFtb25nIHRoZW06IGl0IGlzIGhlbGQgaGVyZS4KZnVuYyBUb2tlbnNPZihvd25lciBzdHJpbmcpIHN0cmluZyB7CglpZHMgOj0gc3RyaW5ncy5UcmltU3VmZml4KHN0cmluZ3MuVHJpbVByZWZpeChwbGFuZXMuUGxhbmVzT2YoYWRkcmVzcyhvd25lcikpLCAiWyIpLCAiXSIpCglyZXR1cm4gaWRzCn0KCi8vIExpc3RPcGVuIHJldHVybnMgdGhlIGxpc3RpbmdzLCBvbmUgbGluZSBlYWNoLCBpbiBpZCBvcmRlciwgYXQgbW9zdCA1MC4KZnVuYyBMaXN0T3BlbigpIHN0cmluZyB7Cgl2YXIgbGluZXMgW11zdHJpbmcKCWxpc3RpbmdzLkl0ZXJhdGUoIiIsICIiLCBmdW5jKGsgc3RyaW5nLCB2IGFueSkgYm9vbCB7CgkJaWQsIF8gOj0gc3RyY29udi5BdG9pKGspCgkJbGluZXMgPSBhcHBlbmQobGluZXMsIGxpbmUoaWQsIHYuKCpsaXN0aW5nKSkpCgkJcmV0dXJuIGxlbihsaW5lcykgPj0gbWF4T3BlbgoJfSkKCXJldHVybiBzdHJpbmdzLkpvaW4obGluZXMsICJcbiIpCn0KCi8vIEl0ZW1MaW5lIHJldHVybnMgdGhlIGxpbmUgb2YgcGxhbmUgaWQsIGxpc3RlZCBvciBub3QuIEl0IHBhbmljcyBmb3IgYW4gaWQKLy8gdGhhdCBpcyBub3QgYSBtaW50ZWQgcGxhbmU6IEJhemFhcidzIHNpdGUgc2tpcHMgdGhlIGlkcyBpdCBjYW5ub3QgcmVhZC4KZnVuYyBJdGVtTGluZShpZCBpbnQpIHN0cmluZyB7Cglvd25lck9mKGlkKSAvLyBwYW5pY3MgZm9yIGFuIGlkIHRoYXQgaXMgbm90IG1pbnRlZAoJcmV0dXJuIGxpbmUoaWQsIGdldExpc3RpbmcoaWQpKQp9CgovLyBsaW5lIGJ1aWxkcyB0aGUgbGluZSBvZiBwbGFuZSBpZDsgbCBpcyBpdHMgbGlzdGluZywgbmlsIHdoZW4gaXQgaGFzIG5vbmUuCmZ1bmMgbGluZShpZCBpbnQsIGwgKmxpc3RpbmcpIHN0cmluZyB7CglwIDo9IHBsYW5lSW5mbyhpZCkKCW93bmVyLCBfIDo9IHBsYW5lcy5Pd25lck9mKHRpZChpZCkpCglzZWxsZXIsIHByaWNlLCBsaXN0ZWQgOj0gIiIsICIwIiwgImZhbHNlIgoJaWYgbCAhPSBuaWwgewoJCXNlbGxlciwgcHJpY2UsIGxpc3RlZCA9IGwuc2VsbGVyLlN0cmluZygpLCBzdHJjb252LkZvcm1hdEludChsLnByaWNlLCAxMCksICJ0cnVlIgoJfQoJdHJhaXRzIDo9ICJtb2RlbDoiICsgcC5tb2RlbCArICIscGlsb3Q6IiArIHAucGlsb3QgKyAiLGxhc2VyOiIgKyBwLmxhc2VyCglyZXR1cm4gc3RyaW5ncy5Kb2luKFtdc3RyaW5newoJCXN0cmNvbnYuSXRvYShpZCksIGNsZWFuKHAubmFtZSksIG93bmVyLlN0cmluZygpLCBzZWxsZXIsIHByaWNlLCBsaXN0ZWQsCgkJY2xlYW4ocC5pbWFnZSksIHNsdWcsIHAudGllciwgY2xlYW4odHJhaXRzKSwgInRydWUiLCAiIiwKCX0sICJ8IikKfQoKdHlwZSBwbGFuZSBzdHJ1Y3QgewoJbmFtZSwgaW1hZ2UsIHRpZXIsIG1vZGVsLCBwaWxvdCwgbGFzZXIgc3RyaW5nCn0KCi8vIHBsYW5lSW5mbyByZWFkcyBwbGFuZSBpZCBmcm9tIHRoZSBwbGFuZXMgcmVhbG0ncyBQbGFuZUpTT04uCmZ1bmMgcGxhbmVJbmZvKGlkIGludCkgcGxhbmUgewoJbm9kZSwgZXJyIDo9IGpzb24uVW5tYXJzaGFsKFtdYnl0ZShwbGFuZXMuUGxhbmVKU09OKGludDY0KGlkKSkpKQoJaWYgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyVW5rbm93blBsYW5lKQoJfQoJc3RyIDo9IGZ1bmMoayBzdHJpbmcpIHN0cmluZyB7CgkJdiwgZXJyIDo9IG5vZGUuR2V0S2V5KGspCgkJaWYgZXJyICE9IG5pbCB7CgkJCXJldHVybiAiIgoJCX0KCQlzLCBlcnIgOj0gdi5HZXRTdHJpbmcoKQoJCWlmIGVyciAhPSBuaWwgewoJCQlyZXR1cm4gIiIKCQl9CgkJcmV0dXJuIHMKCX0KCXJldHVybiBwbGFuZXsKCQluYW1lOiBzdHIoIm5hbWUiKSwgaW1hZ2U6IHN0cigiaW1hZ2UiKSwgdGllcjogc3RyKCJ0aWVyIiksCgkJbW9kZWw6IHN0cigibW9kZWwiKSwgcGlsb3Q6IHN0cigicGlsb3QiKSwgbGFzZXI6IHN0cigibGFzZXIiKSwKCX0KfQoKLy8gY2xlYW4ga2VlcHMgYSBmaWVsZCBmcm9tIGJyZWFraW5nIGEgbGluZTogbm8gInwiIGFuZCBubyBsaW5lIGJyZWFrLiBUaGUKLy8gcGxhbmVzIHJlYWxtJ3MgbmFtZXMgYW5kIFVSTHMgaGF2ZSBub25lOyB0aGlzIGlzIGEgZ3VhcmQsIG5vdCBhIGZpbHRlci4KZnVuYyBjbGVhbihzIHN0cmluZykgc3RyaW5nIHsKCXJldHVybiBzdHJpbmdzLk5ld1JlcGxhY2VyKCJ8IiwgIiAiLCAiXG4iLCAiICIsICJcciIsICIgIikuUmVwbGFjZShzKQp9CgovLyBSZW5kZXIgc2hvd3MgdGhlIGxpc3RpbmdzIG9uIGdub3dlYi4KZnVuYyBSZW5kZXIoXyBzdHJpbmcpIHN0cmluZyB7Cgl2YXIgYiBzdHJpbmdzLkJ1aWxkZXIKCWIuV3JpdGVTdHJpbmcoIiMgZ25vZmx5IHBsYW5lcyBtYXJrZXRcblxuIikKCWIuV3JpdGVTdHJpbmcoIlBsYW5lcyBvZiBbZ25vZmx5XShodHRwczovL2dub2ZseS54eXopIGZvciBzYWxlLiBBIGxpc3RlZCBwbGFuZSBpcyBoZWxkIGJ5IHRoaXMgcmVhbG0gdW50aWwgaXQgaXMgYm91Z2h0IG9yIHRoZSBsaXN0aW5nIGlzIGNhbmNlbGxlZC4gIikKCWIuV3JpdGVTdHJpbmcoIkVhY2ggc2FsZSBwYXlzIHRoZSBwbGFuZXMgcmVhbG0ncyByb3lhbHR5IHRvIHRoZSBnbm9mbHkgdHJlYXN1cnksIHRoZSByZXN0IHRvIHRoZSBzZWxsZXIuXG5cbiIpCglpZiBwYXVzZWQgewoJCWIuV3JpdGVTdHJpbmcoIk5ldyBsaXN0aW5ncyBhcmUgcGF1c2VkOiBsaXN0ZWQgcGxhbmVzIGNhbiBzdGlsbCBiZSBib3VnaHQgb3IgY2FuY2VsbGVkLlxuXG4iKQoJfQoJaWYgbGlzdGluZ3MuU2l6ZSgpID09IDAgewoJCWIuV3JpdGVTdHJpbmcoIk5vIHBsYW5lIGlzIGZvciBzYWxlLlxuIikKCQlyZXR1cm4gYi5TdHJpbmcoKQoJfQoJYi5Xcml0ZVN0cmluZygifCBQbGFuZSB8IFRpZXIgfCBQcmljZSB8IFNlbGxlciB8XG58LS0tfC0tLXwtLS18LS0tfFxuIikKCWxpc3RpbmdzLkl0ZXJhdGUoIiIsICIiLCBmdW5jKGsgc3RyaW5nLCB2IGFueSkgYm9vbCB7CgkJaWQsIF8gOj0gc3RyY29udi5BdG9pKGspCgkJbCA6PSB2LigqbGlzdGluZykKCQlwIDo9IHBsYW5lSW5mbyhpZCkKCQliLldyaXRlU3RyaW5nKCJ8IFsjIiArIGsgKyAiICIgKyBwLm5hbWUgKyAiXShodHRwczovL2dub2ZseS54eXovbmZ0L2NvbGxlY3Rpb25zL3BsYW5lcy8iICsgc3RyY29udi5JdG9hKGlkKSArICIpIHwgIiArCgkJCXAudGllciArICIgfCAiICsgZ25vdChsLnByaWNlKSArICIgfCAiICsgbC5zZWxsZXIuU3RyaW5nKCkgKyAiIHxcbiIpCgkJcmV0dXJuIGZhbHNlCgl9KQoJcmV0dXJuIGIuU3RyaW5nKCkKfQoKLy8gZ25vdCB3cml0ZXMgdWdub3QgYXMgR05PVDogMTAwMDAwMCBpcyAiMSBHTk9UIiwgMTUwMDAwMCAiMS41IEdOT1QiLgpmdW5jIGdub3QodWdub3QgaW50NjQpIHN0cmluZyB7Cgl3aG9sZSwgZnJhYyA6PSB1Z25vdC8xXzAwMF8wMDAsIHVnbm90JTFfMDAwXzAwMAoJaWYgZnJhYyA9PSAwIHsKCQlyZXR1cm4gc3RyY29udi5Gb3JtYXRJbnQod2hvbGUsIDEwKSArICIgR05PVCIKCX0KCWYgOj0gc3RyaW5ncy5UcmltUmlnaHQoc3RyY29udi5Gb3JtYXRJbnQoZnJhYysxXzAwMF8wMDAsIDEwKVsxOl0sICIwIikKCXJldHVybiBzdHJjb252LkZvcm1hdEludCh3aG9sZSwgMTApICsgIi4iICsgZiArICIgR05PVCIKfQoKLy8gQWRkcmVzcyBpcyB0aGlzIHJlYWxtJ3MgYWRkcmVzczogdGhlIG9uZSBzZWxsZXJzIGFwcHJvdmUgb24gdGhlIHBsYW5lcwovLyByZWFsbSwgYW5kIHRoZSBvd25lciBvZiBldmVyeSBsaXN0ZWQgcGxhbmUuCmZ1bmMgQWRkcmVzcygpIGFkZHJlc3MgeyByZXR1cm4gc2VsZiB9ChqlCwoJcm9sZXMuZ25vEpcLcGFja2FnZSBnbm9mbHkKCmltcG9ydCAiZ25vLmxhbmQvci9nMXQya2cydnRyM2Z1a2c0M2V1amtuNng1M2dmZHlha2huZ3Q0c2ZkL2dub2ZseS9nYW1lL3YwIgoKLy8gVGhlIG1hcmtldCBrZWVwcyBubyByb2xlcyBvZiBpdHMgb3duOiBpdHMgYWRtaW5zIGFyZSB0aGUgZ2FtZSByZWFsbSdzLAovLyBhc2tlZCBhZ2FpbiBhdCBldmVyeSBjYWxsLCBhcyB0aGUgcGxhbmVzIGFuZCBza2lucyByZWFsbXMgZG8uCgovLyBhdXRob3JpdHkgaXMgdGhlIG9uZSBxdWVzdGlvbiB0aGlzIHJlYWxtIGFza3MgYWJvdXQgcm9sZXMuCnR5cGUgYXV0aG9yaXR5IGludGVyZmFjZSB7CglJc0FkbWluKGFkZHIgYWRkcmVzcykgYm9vbAp9CgovLyBnYW1lUm9sZXMgYW5zd2VycyB3aXRoIHRoZSByb2xlcyBvZiB0aGUgZ2FtZSByZWFsbS4KdHlwZSBnYW1lUm9sZXMgc3RydWN0e30KCmZ1bmMgKGdhbWVSb2xlcykgSXNBZG1pbihhZGRyIGFkZHJlc3MpIGJvb2wgeyByZXR1cm4gZ2FtZS5Jc0FkbWluKGFkZHIpIH0KCi8vIHJvbGVzIGlzIHRoZSBhdXRob3JpdHkgb2YgdGhpcyByZWFsbS4gSXQgaXMgYSB2YXJpYWJsZSBvbmx5IHNvIHRoYXQgdGhlCi8vIHRlc3RzIGNhbiBhbnN3ZXIgZm9yIHRoZSBnYW1lIHJlYWxtLCB3aGljaCBoYXMgbm8gYWRtaW4gdW5kZXIgYGdubyB0ZXN0YC4KdmFyIHJvbGVzIGF1dGhvcml0eSA9IGdhbWVSb2xlc3t9CgovLyBjYWxsZXJPZiByZXR1cm5zIHRoZSB2ZXJpZmllZCBjYWxsZXIgb2YgYSBjcm9zc2luZyBmdW5jdGlvbjsgcmxtIG11c3QgYmUKLy8gaXRzIGxpdmUgY3VyLgpmdW5jIGNhbGxlck9mKF8gaW50LCBybG0gcmVhbG0pIGFkZHJlc3MgewoJaWYgIXJsbS5Jc0N1cnJlbnQoKSB7CgkJcGFuaWMoZXJyU3Bvb2ZlZFJlYWxtKQoJfQoJcmV0dXJuIHJsbS5QcmV2aW91cygpLkFkZHJlc3MoKQp9CgovLyB1c2VyT2YgcmV0dXJucyB0aGUgY2FsbGVyLCB3aG8gbXVzdCBiZSBhIHdhbGxldCBjYWxsaW5nIGRpcmVjdGx5OiBuZXZlciBhCi8vIHJlYWxtLCBzbyB0aGF0IG5vIGNvbnRyYWN0IGNhbiBhY3QgaW4gYSB1c2VyJ3MgbmFtZSBvciB3cmFwIGEgcHVyY2hhc2UuCmZ1bmMgdXNlck9mKF8gaW50LCBybG0gcmVhbG0pIGFkZHJlc3MgewoJY2FsbGVyIDo9IGNhbGxlck9mKDAsIHJsbSkKCWlmICFybG0uUHJldmlvdXMoKS5Jc1VzZXJDYWxsKCkgewoJCXBhbmljKGVyck5vdFVzZXJDYWxsKQoJfQoJcmV0dXJuIGNhbGxlcgp9CgovLyBhc3NlcnRBZG1pbiBwYW5pY3MgdW5sZXNzIHRoZSBjYWxsZXIgaXMgYW4gYWRtaW4gb2YgdGhlIGdhbWUgcmVhbG0uCmZ1bmMgYXNzZXJ0QWRtaW4oXyBpbnQsIHJsbSByZWFsbSkgYWRkcmVzcyB7CgljYWxsZXIgOj0gY2FsbGVyT2YoMCwgcmxtKQoJaWYgIXJvbGVzLklzQWRtaW4oY2FsbGVyKSB7CgkJcGFuaWMoZXJyTm90QWRtaW4pCgl9CglyZXR1cm4gY2FsbGVyCn0KIiIKEy9nbm8uTWVtUGFja2FnZVR5cGUSCwoJTVBVc2VyQWxsIg0yNTAwMDAwMHVnbm90EhMIgIjevgESCzIwMDAwMHVnbm90GqgBCjoKEy90bS5QdWJLZXlTZWNwMjU2azESIwohA15c2uhyZ5ZdurGGdYHiUqVPvyK6d8mbMTz3e9OpxdbHEkAzpkj2xX6i90+TM/OXjJqBi2hoy9HMy6U65T6cqeXG9jZk4HK8bGC+1Q4fk6rDfTINhm7T78odlDuMkJRJUWAvGihnMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcWx1dXhl

Raw transaction data

Raw JSON data