{ "name": "TestLocalMap", "structs": {}, "methods": [ { "name": "optIn", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "OptIn" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "setAndGetUint", "args": [ { "type": "string", "name": "key" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "setAndGetBytes", "args": [ { "type": "string", "name": "key" }, { "type": "byte[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "setAndGetString", "args": [ { "type": "string", "name": "key" }, { "type": "string", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "deleteValue", "args": [ { "type": "string", "name": "key" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "hasValue", "args": [ { "type": "string", "name": "key" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testKeyPrefix", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testPrefixedMap", "args": [ { "type": "string", "name": "key" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "setAndGetUintViaLocalState", "args": [ { "type": "string", "name": "key" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 8, "bytes": 8 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": { "uintMap": { "keyType": "AVMString", "valueType": "AVMUint64", "prefix": "dWludE1hcA==" }, "bytesMap": { "keyType": "AVMString", "valueType": "AVMBytes", "prefix": "Ynl0ZXNNYXA=" }, "stringMap": { "keyType": "AVMString", "valueType": "AVMString", "prefix": "c3RyaW5nTWFw" }, "prefixedMap": { "keyType": "AVMString", "valueType": "AVMUint64", "prefix": "cC8=" } }, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 426 ], "errorMessage": "bytes value should match" }, { "pc": [ 148, 198, 361, 424, 471 ], "errorMessage": "check LocalState exists" }, { "pc": [ 111, 158, 210, 255, 307, 323, 371, 387, 434 ], "errorMessage": "invalid array length header" }, { "pc": [ 118, 165, 217, 262, 314, 330, 378, 394, 441 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 129, 176, 452 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 200 ], "errorMessage": "prefixed map value should match" }, { "pc": [ 284 ], "errorMessage": "should have value before delete" }, { "pc": [ 299 ], "errorMessage": "should not have value after delete" }, { "pc": [ 363 ], "errorMessage": "string value should match" }, { "pc": [ 473 ], "errorMessage": "uint value should match" }, { "pc": [ 150 ], "errorMessage": "uint value via LocalState should match" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCAyIDEgOAogICAgYnl0ZWNibG9jayAidWludE1hcCIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czo0LTUKICAgIC8vIEBjb250cmFjdCh7IHN0YXRlVG90YWxzOiB7IGxvY2FsVWludHM6IDgsIGxvY2FsQnl0ZXM6IDggfSB9KQogICAgLy8gZXhwb3J0IGNsYXNzIFRlc3RMb2NhbE1hcCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNwogICAgcHVzaGJ5dGVzIDB4MjkzMTRkOTUgLy8gbWV0aG9kICJvcHRJbigpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fb3B0SW5fcm91dGVAMwogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4MDExMjRiNzMgMHhhZWM0NDFiOCAweGEyZDIwMzkyIDB4N2JjMTI2OWQgMHg3ZDQ0YWM5NiAweDM3NjRiMWVkIDB4YjM2Y2JlMmEgMHhkZWNlOTYwNSAvLyBtZXRob2QgInNldEFuZEdldFVpbnQoc3RyaW5nLHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJzZXRBbmRHZXRCeXRlcyhzdHJpbmcsYnl0ZVtdKXZvaWQiLCBtZXRob2QgInNldEFuZEdldFN0cmluZyhzdHJpbmcsc3RyaW5nKXZvaWQiLCBtZXRob2QgImRlbGV0ZVZhbHVlKHN0cmluZyl2b2lkIiwgbWV0aG9kICJoYXNWYWx1ZShzdHJpbmcpYm9vbCIsIG1ldGhvZCAidGVzdEtleVByZWZpeCgpdm9pZCIsIG1ldGhvZCAidGVzdFByZWZpeGVkTWFwKHN0cmluZyx1aW50NjQpdm9pZCIsIG1ldGhvZCAic2V0QW5kR2V0VWludFZpYUxvY2FsU3RhdGUoc3RyaW5nLHVpbnQ2NCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl9zZXRBbmRHZXRVaW50X3JvdXRlQDYgbWFpbl9zZXRBbmRHZXRCeXRlc19yb3V0ZUA3IG1haW5fc2V0QW5kR2V0U3RyaW5nX3JvdXRlQDggbWFpbl9kZWxldGVWYWx1ZV9yb3V0ZUA5IG1haW5faGFzVmFsdWVfcm91dGVAMTAgbWFpbl90ZXN0S2V5UHJlZml4X3JvdXRlQDExIG1haW5fdGVzdFByZWZpeGVkTWFwX3JvdXRlQDEyIG1haW5fc2V0QW5kR2V0VWludFZpYUxvY2FsU3RhdGVfcm91dGVAMTMKICAgIGVycgoKbWFpbl9zZXRBbmRHZXRVaW50VmlhTG9jYWxTdGF0ZV9yb3V0ZUAxMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czo1MAogICAgLy8gc2V0QW5kR2V0VWludFZpYUxvY2FsU3RhdGUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1aW50NjQpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMSAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6NgogICAgLy8gdWludE1hcCA9IExvY2FsTWFwPHN0cmluZywgdWludDY0PigpCiAgICBieXRlY18wIC8vICJ1aW50TWFwIgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czo1MQogICAgLy8gdGhpcy51aW50TWFwKGtleSkoVHhuLnNlbmRlcikudmFsdWUgPSB2YWx1ZQogICAgdHhuIFNlbmRlcgogICAgZGlnIDEKICAgIGRpZyAzCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6NTIKICAgIC8vIGFzc2VydCh0aGlzLnVpbnRNYXAoa2V5KShUeG4uc2VuZGVyKS52YWx1ZSA9PT0gdmFsdWUsICd1aW50IHZhbHVlIHZpYSBMb2NhbFN0YXRlIHNob3VsZCBtYXRjaCcpCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgTG9jYWxTdGF0ZSBleGlzdHMKICAgID09CiAgICBhc3NlcnQgLy8gdWludCB2YWx1ZSB2aWEgTG9jYWxTdGF0ZSBzaG91bGQgbWF0Y2gKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czo1MAogICAgLy8gc2V0QW5kR2V0VWludFZpYUxvY2FsU3RhdGUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1aW50NjQpIHsKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdFByZWZpeGVkTWFwX3JvdXRlQDEyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjQ1CiAgICAvLyB0ZXN0UHJlZml4ZWRNYXAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1aW50NjQpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMSAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6OQogICAgLy8gcHJlZml4ZWRNYXAgPSBMb2NhbE1hcDxzdHJpbmcsIHVpbnQ2ND4oeyBrZXlQcmVmaXg6ICdwLycgfSkKICAgIHB1c2hieXRlcyAicC8iCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjQ2CiAgICAvLyB0aGlzLnByZWZpeGVkTWFwKGtleSwgVHhuLnNlbmRlcikudmFsdWUgPSB2YWx1ZQogICAgdHhuIFNlbmRlcgogICAgZGlnIDEKICAgIGRpZyAzCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6NDcKICAgIC8vIGFzc2VydCh0aGlzLnByZWZpeGVkTWFwKGtleSwgVHhuLnNlbmRlcikudmFsdWUgPT09IHZhbHVlLCAncHJlZml4ZWQgbWFwIHZhbHVlIHNob3VsZCBtYXRjaCcpCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgTG9jYWxTdGF0ZSBleGlzdHMKICAgID09CiAgICBhc3NlcnQgLy8gcHJlZml4ZWQgbWFwIHZhbHVlIHNob3VsZCBtYXRjaAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjQ1CiAgICAvLyB0ZXN0UHJlZml4ZWRNYXAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1aW50NjQpIHsKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdEtleVByZWZpeF9yb3V0ZUAxMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czo0MAogICAgLy8gdGVzdEtleVByZWZpeCgpIHsKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCm1haW5faGFzVmFsdWVfcm91dGVAMTA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MzYKICAgIC8vIGhhc1ZhbHVlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjYKICAgIC8vIHVpbnRNYXAgPSBMb2NhbE1hcDxzdHJpbmcsIHVpbnQ2ND4oKQogICAgYnl0ZWNfMCAvLyAidWludE1hcCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjM3CiAgICAvLyByZXR1cm4gdGhpcy51aW50TWFwKGtleSwgVHhuLnNlbmRlcikuaGFzVmFsdWUKICAgIHR4biBTZW5kZXIKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIGJ1cnkgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjM2CiAgICAvLyBoYXNWYWx1ZShrZXk6IHN0cmluZyk6IGJvb2xlYW4gewogICAgcHVzaGJ5dGVzIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX2RlbGV0ZVZhbHVlX3JvdXRlQDk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MjkKICAgIC8vIGRlbGV0ZVZhbHVlKGtleTogc3RyaW5nKSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjYKICAgIC8vIHVpbnRNYXAgPSBMb2NhbE1hcDxzdHJpbmcsIHVpbnQ2ND4oKQogICAgYnl0ZWNfMCAvLyAidWludE1hcCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjMwCiAgICAvLyB0aGlzLnVpbnRNYXAoa2V5LCBUeG4uc2VuZGVyKS52YWx1ZSA9IDEyMwogICAgdHhuIFNlbmRlcgogICAgZGlnIDEKICAgIHB1c2hpbnQgMTIzCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MzEKICAgIC8vIGFzc2VydCh0aGlzLnVpbnRNYXAoa2V5LCBUeG4uc2VuZGVyKS5oYXNWYWx1ZSwgJ3Nob3VsZCBoYXZlIHZhbHVlIGJlZm9yZSBkZWxldGUnKQogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIGRpZyAyCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBidXJ5IDEKICAgIGFzc2VydCAvLyBzaG91bGQgaGF2ZSB2YWx1ZSBiZWZvcmUgZGVsZXRlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MzIKICAgIC8vIHRoaXMudWludE1hcChrZXksIFR4bi5zZW5kZXIpLmRlbGV0ZSgpCiAgICB0eG4gU2VuZGVyCiAgICBkaWcgMQogICAgYXBwX2xvY2FsX2RlbAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjMzCiAgICAvLyBhc3NlcnQoIXRoaXMudWludE1hcChrZXksIFR4bi5zZW5kZXIpLmhhc1ZhbHVlLCAnc2hvdWxkIG5vdCBoYXZlIHZhbHVlIGFmdGVyIGRlbGV0ZScpCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBidXJ5IDEKICAgICEKICAgIGFzc2VydCAvLyBzaG91bGQgbm90IGhhdmUgdmFsdWUgYWZ0ZXIgZGVsZXRlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MjkKICAgIC8vIGRlbGV0ZVZhbHVlKGtleTogc3RyaW5nKSB7CiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX3NldEFuZEdldFN0cmluZ19yb3V0ZUA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjI0CiAgICAvLyBzZXRBbmRHZXRTdHJpbmcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMSAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjgKICAgIC8vIHN0cmluZ01hcCA9IExvY2FsTWFwPHN0cmluZywgc3RyaW5nPigpCiAgICBwdXNoYnl0ZXMgInN0cmluZ01hcCIKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MjUKICAgIC8vIHRoaXMuc3RyaW5nTWFwKGtleSwgVHhuLnNlbmRlcikudmFsdWUgPSB2YWx1ZQogICAgdHhuIFNlbmRlcgogICAgZGlnIDEKICAgIGRpZyAzCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MjYKICAgIC8vIGFzc2VydCh0aGlzLnN0cmluZ01hcChrZXksIFR4bi5zZW5kZXIpLnZhbHVlID09PSB2YWx1ZSwgJ3N0cmluZyB2YWx1ZSBzaG91bGQgbWF0Y2gnKQogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIExvY2FsU3RhdGUgZXhpc3RzCiAgICA9PQogICAgYXNzZXJ0IC8vIHN0cmluZyB2YWx1ZSBzaG91bGQgbWF0Y2gKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czoyNAogICAgLy8gc2V0QW5kR2V0U3RyaW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7CiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX3NldEFuZEdldEJ5dGVzX3JvdXRlQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MTkKICAgIC8vIHNldEFuZEdldEJ5dGVzKGtleTogc3RyaW5nLCB2YWx1ZTogYnl0ZXMpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMSAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjcKICAgIC8vIGJ5dGVzTWFwID0gTG9jYWxNYXA8c3RyaW5nLCBieXRlcz4oKQogICAgcHVzaGJ5dGVzICJieXRlc01hcCIKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MjAKICAgIC8vIHRoaXMuYnl0ZXNNYXAoa2V5LCBUeG4uc2VuZGVyKS52YWx1ZSA9IHZhbHVlCiAgICB0eG4gU2VuZGVyCiAgICBkaWcgMQogICAgZGlnIDMKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czoyMQogICAgLy8gYXNzZXJ0KHRoaXMuYnl0ZXNNYXAoa2V5LCBUeG4uc2VuZGVyKS52YWx1ZSA9PT0gdmFsdWUsICdieXRlcyB2YWx1ZSBzaG91bGQgbWF0Y2gnKQogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIExvY2FsU3RhdGUgZXhpc3RzCiAgICA9PQogICAgYXNzZXJ0IC8vIGJ5dGVzIHZhbHVlIHNob3VsZCBtYXRjaAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjE5CiAgICAvLyBzZXRBbmRHZXRCeXRlcyhrZXk6IHN0cmluZywgdmFsdWU6IGJ5dGVzKSB7CiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX3NldEFuZEdldFVpbnRfcm91dGVANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czoxNAogICAgLy8gc2V0QW5kR2V0VWludChrZXk6IHN0cmluZywgdmFsdWU6IHVpbnQ2NCkgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18xIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czo2CiAgICAvLyB1aW50TWFwID0gTG9jYWxNYXA8c3RyaW5nLCB1aW50NjQ+KCkKICAgIGJ5dGVjXzAgLy8gInVpbnRNYXAiCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjE1CiAgICAvLyB0aGlzLnVpbnRNYXAoa2V5LCBUeG4uc2VuZGVyKS52YWx1ZSA9IHZhbHVlCiAgICB0eG4gU2VuZGVyCiAgICBkaWcgMQogICAgZGlnIDMKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czoxNgogICAgLy8gYXNzZXJ0KHRoaXMudWludE1hcChrZXksIFR4bi5zZW5kZXIpLnZhbHVlID09PSB2YWx1ZSwgJ3VpbnQgdmFsdWUgc2hvdWxkIG1hdGNoJykKICAgIHR4biBTZW5kZXIKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBMb2NhbFN0YXRlIGV4aXN0cwogICAgPT0KICAgIGFzc2VydCAvLyB1aW50IHZhbHVlIHNob3VsZCBtYXRjaAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLW1hcC5hbGdvLnRzOjE0CiAgICAvLyBzZXRBbmRHZXRVaW50KGtleTogc3RyaW5nLCB2YWx1ZTogdWludDY0KSB7CiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX29wdEluX3JvdXRlQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtbWFwLmFsZ28udHM6MTEKICAgIC8vIEBhYmltZXRob2QoeyBhbGxvd0FjdGlvbnM6ICdPcHRJbicgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMiAvLyBPcHRJbgogICAgPT0KICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAmJgogICAgcmV0dXJuCgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1tYXAuYWxnby50czo0LTUKICAgIC8vIEBjb250cmFjdCh7IHN0YXRlVG90YWxzOiB7IGxvY2FsVWludHM6IDgsIGxvY2FsQnl0ZXM6IDggfSB9KQogICAgLy8gZXhwb3J0IGNsYXNzIFRlc3RMb2NhbE1hcCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEKICAgIHJldHVybgo=" }, "byteCode": { "approval": "CyAEAAIBCCYBB3VpbnRNYXAxG0EBzoAEKTFNlTYaAI4BAbkxGRREMRhEgggEARJLcwSuxEG4BKLSA5IEe8EmnQR9RKyWBDdkse0Es2y+KgTezpYFNhoAjggBRAEFAMUAkQBkAGIAMAABADYaAUkiWSMISwEVEkRXAgA2GgJJFSUSRBcoTwJQMQBLAUsDZjEAIk8CY0QSRCRDNhoBSSJZIwhLARUSRFcCADYaAkkVJRJEF4ACcC9PAlAxAEsBSwNmMQAiTwJjRBJEJEMkQzYaAUkiWSMISwEVEkRXAgAoTFAxACJPAmNFAYABACJPAlSABBUffHVMULAkQzYaAUkiWSMISwEVEkRXAgAoTFAxAEsBgXtmMQAiSwJjRQFEMQBLAWgxACJPAmNFARREJEM2GgFJIlkjCEsBFRJEVwIANhoCSSJZIwhLARUSRFcCAIAJc3RyaW5nTWFwTwJQMQBLAUsDZjEAIk8CY0QSRCRDNhoBSSJZIwhLARUSRFcCADYaAkkiWSMISwEVEkRXAgCACGJ5dGVzTWFwTwJQMQBLAUsDZjEAIk8CY0QSRCRDNhoBSSJZIwhLARUSRFcCADYaAkkVJRJEFyhPAlAxAEsBSwNmMQAiTwJjRBJEJEMxGSQSMRgQQzEZFDEYFBBD", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }