{ "name": "ReceiptAnchorContract", "structs": {}, "methods": [ { "name": "initialize", "args": [ { "type": "address", "name": "owner" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "anchorReceipt", "args": [ { "type": "byte[]", "name": "receiptHash" }, { "type": "string", "name": "serviceId" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "verifyReceipt", "args": [ { "type": "byte[]", "name": "receiptHash" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getReceiptIndex", "args": [ { "type": "byte[]", "name": "receiptHash" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getReceiptHash", "args": [ { "type": "uint64", "name": "index" } ], "returns": { "type": "byte[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getTotalReceipts", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getServiceReceipt", "args": [ { "type": "string", "name": "serviceId" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getContractInfo", "args": [], "returns": { "type": "(address,uint64)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 2, "bytes": 3 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "owner": { "keyType": "AVMString", "valueType": "address", "key": "b3duZXI=" }, "receiptCount": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "cmVjZWlwdENvdW50" }, "lastReceiptHash": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "bGFzdFJlY2VpcHRIYXNo" }, "lastServiceId": { "keyType": "AVMString", "valueType": "AVMString", "key": "bGFzdFNlcnZpY2VJZA==" }, "lastReceiptIndex": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bGFzdFJlY2VpcHRJbmRleA==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 87 ], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [ 162 ], "errorMessage": "OnCompletion must be NoOp && can only call when creating" }, { "pc": [ 308 ], "errorMessage": "Receipt hash not found" }, { "pc": [ 218, 264, 306, 312, 333, 341, 359, 366, 394, 415, 419 ], "errorMessage": "check GlobalState exists" }, { "pc": [ 188, 204, 250, 292, 379 ], "errorMessage": "invalid array length header" }, { "pc": [ 195, 211, 257, 299, 386 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 173 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 328 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCAxIDIKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAicmVjZWlwdENvdW50IiAibGFzdFJlY2VpcHRIYXNoIiAibGFzdFJlY2VpcHRJbmRleCIgIm93bmVyIiAibGFzdFNlcnZpY2VJZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjQKICAgIC8vIGV4cG9ydCBjbGFzcyBSZWNlaXB0QW5jaG9yQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTUKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gbXVzdCBiZSBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4ZWUxYzcxNTYgMHg3OThiYTE2NCAweGRhZTRkYTJhIDB4YWNmMDE2ZGEgMHgzZmI5NzRkNyAweDRkNzExNGI2IDB4NGY1NDkxY2YgMHhiYTFiYTUyNSAvLyBtZXRob2QgImluaXRpYWxpemUoYWRkcmVzcyl2b2lkIiwgbWV0aG9kICJhbmNob3JSZWNlaXB0KGJ5dGVbXSxzdHJpbmcpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlSZWNlaXB0KGJ5dGVbXSlib29sIiwgbWV0aG9kICJnZXRSZWNlaXB0SW5kZXgoYnl0ZVtdKXVpbnQ2NCIsIG1ldGhvZCAiZ2V0UmVjZWlwdEhhc2godWludDY0KWJ5dGVbXSIsIG1ldGhvZCAiZ2V0VG90YWxSZWNlaXB0cygpdWludDY0IiwgbWV0aG9kICJnZXRTZXJ2aWNlUmVjZWlwdChzdHJpbmcpdWludDY0IiwgbWV0aG9kICJnZXRDb250cmFjdEluZm8oKShhZGRyZXNzLHVpbnQ2NCkiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBpbml0aWFsaXplIGFuY2hvclJlY2VpcHQgdmVyaWZ5UmVjZWlwdCBnZXRSZWNlaXB0SW5kZXggZ2V0UmVjZWlwdEhhc2ggZ2V0VG90YWxSZWNlaXB0cyBnZXRTZXJ2aWNlUmVjZWlwdCBnZXRDb250cmFjdEluZm8KICAgIGVycgoKbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo0CiAgICAvLyBleHBvcnQgY2xhc3MgUmVjZWlwdEFuY2hvckNvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgTm9PcCAmJiBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo6UmVjZWlwdEFuY2hvckNvbnRyYWN0LmluaXRpYWxpemVbcm91dGluZ10oKSAtPiB2b2lkOgppbml0aWFsaXplOgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6MTEKICAgIC8vIEBhYmltZXRob2QoeyBhbGxvd0FjdGlvbnM6ICdOb09wJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMzIgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NQogICAgLy8gb3duZXIgPSBHbG9iYWxTdGF0ZTxBY2NvdW50PigpCiAgICBieXRlYyA0IC8vICJvd25lciIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjEzCiAgICAvLyB0aGlzLm93bmVyLnZhbHVlID0gb3duZXIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo2CiAgICAvLyByZWNlaXB0Q291bnQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KCkKICAgIGJ5dGVjXzEgLy8gInJlY2VpcHRDb3VudCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjE0CiAgICAvLyB0aGlzLnJlY2VpcHRDb3VudC52YWx1ZSA9IFVpbnQ2NCgwKQogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czoxMQogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnIH0pCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6OlJlY2VpcHRBbmNob3JDb250cmFjdC5hbmNob3JSZWNlaXB0W3JvdXRpbmddKCkgLT4gdm9pZDoKYW5jaG9yUmVjZWlwdDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjE3CiAgICAvLyBAYWJpbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiAnTm9PcCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6MTkKICAgIC8vIGNvbnN0IHJlY2VpcHRJZHggPSB0aGlzLnJlY2VpcHRDb3VudC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjYKICAgIC8vIHJlY2VpcHRDb3VudCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oKQogICAgYnl0ZWNfMSAvLyAicmVjZWlwdENvdW50IgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6MTkKICAgIC8vIGNvbnN0IHJlY2VpcHRJZHggPSB0aGlzLnJlY2VpcHRDb3VudC52YWx1ZQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjcKICAgIC8vIGxhc3RSZWNlaXB0SGFzaCA9IEdsb2JhbFN0YXRlPGJ5dGVzPigpCiAgICBieXRlY18yIC8vICJsYXN0UmVjZWlwdEhhc2giCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czoyMQogICAgLy8gdGhpcy5sYXN0UmVjZWlwdEhhc2gudmFsdWUgPSByZWNlaXB0SGFzaAogICAgdW5jb3ZlciAzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6OAogICAgLy8gbGFzdFNlcnZpY2VJZCA9IEdsb2JhbFN0YXRlPHN0cmluZz4oKQogICAgYnl0ZWMgNSAvLyAibGFzdFNlcnZpY2VJZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjIyCiAgICAvLyB0aGlzLmxhc3RTZXJ2aWNlSWQudmFsdWUgPSBzZXJ2aWNlSWQKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjkKICAgIC8vIGxhc3RSZWNlaXB0SW5kZXggPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KCkKICAgIGJ5dGVjXzMgLy8gImxhc3RSZWNlaXB0SW5kZXgiCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czoyMwogICAgLy8gdGhpcy5sYXN0UmVjZWlwdEluZGV4LnZhbHVlID0gcmVjZWlwdElkeAogICAgZGlnIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czoyNQogICAgLy8gdGhpcy5yZWNlaXB0Q291bnQudmFsdWUgPSByZWNlaXB0SWR4ICsgVWludDY0KDEpCiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICArCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo2CiAgICAvLyByZWNlaXB0Q291bnQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KCkKICAgIGJ5dGVjXzEgLy8gInJlY2VpcHRDb3VudCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjI1CiAgICAvLyB0aGlzLnJlY2VpcHRDb3VudC52YWx1ZSA9IHJlY2VpcHRJZHggKyBVaW50NjQoMSkKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czoxNwogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnIH0pCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6OlJlY2VpcHRBbmNob3JDb250cmFjdC52ZXJpZnlSZWNlaXB0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5UmVjZWlwdDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjMwCiAgICAvLyBAYWJpbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiAnTm9PcCcsIHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6MzIKICAgIC8vIGlmICh0aGlzLmxhc3RSZWNlaXB0SGFzaC52YWx1ZSA9PT0gcmVjZWlwdEhhc2gpIHsKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo3CiAgICAvLyBsYXN0UmVjZWlwdEhhc2ggPSBHbG9iYWxTdGF0ZTxieXRlcz4oKQogICAgYnl0ZWNfMiAvLyAibGFzdFJlY2VpcHRIYXNoIgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6MzIKICAgIC8vIGlmICh0aGlzLmxhc3RSZWNlaXB0SGFzaC52YWx1ZSA9PT0gcmVjZWlwdEhhc2gpIHsKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICA9PQogICAgYnogdmVyaWZ5UmVjZWlwdF9hZnRlcl9pZl9lbHNlQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjMzCiAgICAvLyByZXR1cm4gdHJ1ZQogICAgaW50Y18xIC8vIDEKCnZlcmlmeVJlY2VpcHRfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo6UmVjZWlwdEFuY2hvckNvbnRyYWN0LnZlcmlmeVJlY2VpcHRANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjMwCiAgICAvLyBAYWJpbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiAnTm9PcCcsIHJlYWRvbmx5OiB0cnVlIH0pCiAgICBwdXNoYnl0ZXMgMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgp2ZXJpZnlSZWNlaXB0X2FmdGVyX2lmX2Vsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjM1CiAgICAvLyByZXR1cm4gZmFsc2UKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czozMAogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnLCByZWFkb25seTogdHJ1ZSB9KQogICAgYiB2ZXJpZnlSZWNlaXB0X2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6OlJlY2VpcHRBbmNob3JDb250cmFjdC52ZXJpZnlSZWNlaXB0QDQKCgovLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo6UmVjZWlwdEFuY2hvckNvbnRyYWN0LmdldFJlY2VpcHRJbmRleFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldFJlY2VpcHRJbmRleDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjM4CiAgICAvLyBAYWJpbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiAnTm9PcCcsIHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NDAKICAgIC8vIGFzc2VydCh0aGlzLmxhc3RSZWNlaXB0SGFzaC52YWx1ZSA9PT0gcmVjZWlwdEhhc2gsICdSZWNlaXB0IGhhc2ggbm90IGZvdW5kJykKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo3CiAgICAvLyBsYXN0UmVjZWlwdEhhc2ggPSBHbG9iYWxTdGF0ZTxieXRlcz4oKQogICAgYnl0ZWNfMiAvLyAibGFzdFJlY2VpcHRIYXNoIgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NDAKICAgIC8vIGFzc2VydCh0aGlzLmxhc3RSZWNlaXB0SGFzaC52YWx1ZSA9PT0gcmVjZWlwdEhhc2gsICdSZWNlaXB0IGhhc2ggbm90IGZvdW5kJykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICA9PQogICAgYXNzZXJ0IC8vIFJlY2VpcHQgaGFzaCBub3QgZm91bmQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjQxCiAgICAvLyByZXR1cm4gdGhpcy5sYXN0UmVjZWlwdEluZGV4LnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6OQogICAgLy8gbGFzdFJlY2VpcHRJbmRleCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oKQogICAgYnl0ZWNfMyAvLyAibGFzdFJlY2VpcHRJbmRleCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjQxCiAgICAvLyByZXR1cm4gdGhpcy5sYXN0UmVjZWlwdEluZGV4LnZhbHVlCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6MzgKICAgIC8vIEBhYmltZXRob2QoeyBhbGxvd0FjdGlvbnM6ICdOb09wJywgcmVhZG9ubHk6IHRydWUgfSkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo6UmVjZWlwdEFuY2hvckNvbnRyYWN0LmdldFJlY2VpcHRIYXNoW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0UmVjZWlwdEhhc2g6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo0NAogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnLCByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgOCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NDYKICAgIC8vIGlmICh0aGlzLmxhc3RSZWNlaXB0SW5kZXgudmFsdWUgPT09IGluZGV4KSB7CiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6OQogICAgLy8gbGFzdFJlY2VpcHRJbmRleCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oKQogICAgYnl0ZWNfMyAvLyAibGFzdFJlY2VpcHRJbmRleCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjQ2CiAgICAvLyBpZiAodGhpcy5sYXN0UmVjZWlwdEluZGV4LnZhbHVlID09PSBpbmRleCkgewogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgID09CiAgICBieiBnZXRSZWNlaXB0SGFzaF9hZnRlcl9pZl9lbHNlQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjQ3CiAgICAvLyByZXR1cm4gdGhpcy5sYXN0UmVjZWlwdEhhc2gudmFsdWUKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo3CiAgICAvLyBsYXN0UmVjZWlwdEhhc2ggPSBHbG9iYWxTdGF0ZTxieXRlcz4oKQogICAgYnl0ZWNfMiAvLyAibGFzdFJlY2VpcHRIYXNoIgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NDcKICAgIC8vIHJldHVybiB0aGlzLmxhc3RSZWNlaXB0SGFzaC52YWx1ZQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKCmdldFJlY2VpcHRIYXNoX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6OlJlY2VpcHRBbmNob3JDb250cmFjdC5nZXRSZWNlaXB0SGFzaEA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NDQKICAgIC8vIEBhYmltZXRob2QoeyBhbGxvd0FjdGlvbnM6ICdOb09wJywgcmVhZG9ubHk6IHRydWUgfSkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgpnZXRSZWNlaXB0SGFzaF9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo0OQogICAgLy8gcmV0dXJuIHRoaXMubGFzdFJlY2VpcHRIYXNoLnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NwogICAgLy8gbGFzdFJlY2VpcHRIYXNoID0gR2xvYmFsU3RhdGU8Ynl0ZXM+KCkKICAgIGJ5dGVjXzIgLy8gImxhc3RSZWNlaXB0SGFzaCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjQ5CiAgICAvLyByZXR1cm4gdGhpcy5sYXN0UmVjZWlwdEhhc2gudmFsdWUKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo0NAogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnLCByZWFkb25seTogdHJ1ZSB9KQogICAgYiBnZXRSZWNlaXB0SGFzaF9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjpSZWNlaXB0QW5jaG9yQ29udHJhY3QuZ2V0UmVjZWlwdEhhc2hANAoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjpSZWNlaXB0QW5jaG9yQ29udHJhY3QuZ2V0VG90YWxSZWNlaXB0c1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldFRvdGFsUmVjZWlwdHM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo1NAogICAgLy8gcmV0dXJuIHRoaXMucmVjZWlwdENvdW50LnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NgogICAgLy8gcmVjZWlwdENvdW50ID0gR2xvYmFsU3RhdGU8dWludDY0PigpCiAgICBieXRlY18xIC8vICJyZWNlaXB0Q291bnQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo1NAogICAgLy8gcmV0dXJuIHRoaXMucmVjZWlwdENvdW50LnZhbHVlCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NTIKICAgIC8vIEBhYmltZXRob2QoeyBhbGxvd0FjdGlvbnM6ICdOb09wJywgcmVhZG9ubHk6IHRydWUgfSkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo6UmVjZWlwdEFuY2hvckNvbnRyYWN0LmdldFNlcnZpY2VSZWNlaXB0W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0U2VydmljZVJlY2VpcHQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo1NwogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnLCByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjU5CiAgICAvLyBpZiAodGhpcy5sYXN0U2VydmljZUlkLnZhbHVlID09PSBzZXJ2aWNlSWQpIHsKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo4CiAgICAvLyBsYXN0U2VydmljZUlkID0gR2xvYmFsU3RhdGU8c3RyaW5nPigpCiAgICBieXRlYyA1IC8vICJsYXN0U2VydmljZUlkIgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NTkKICAgIC8vIGlmICh0aGlzLmxhc3RTZXJ2aWNlSWQudmFsdWUgPT09IHNlcnZpY2VJZCkgewogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgID09CiAgICBieiBnZXRTZXJ2aWNlUmVjZWlwdF9hZnRlcl9pZl9lbHNlQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjYwCiAgICAvLyByZXR1cm4gVWludDY0KDEpCiAgICBpbnRjXzEgLy8gMQoKZ2V0U2VydmljZVJlY2VpcHRfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo6UmVjZWlwdEFuY2hvckNvbnRyYWN0LmdldFNlcnZpY2VSZWNlaXB0QDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo1NwogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnLCByZWFkb25seTogdHJ1ZSB9KQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKZ2V0U2VydmljZVJlY2VpcHRfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NjIKICAgIC8vIHJldHVybiBVaW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo1NwogICAgLy8gQGFiaW1ldGhvZCh7IGFsbG93QWN0aW9uczogJ05vT3AnLCByZWFkb25seTogdHJ1ZSB9KQogICAgYiBnZXRTZXJ2aWNlUmVjZWlwdF9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjpSZWNlaXB0QW5jaG9yQ29udHJhY3QuZ2V0U2VydmljZVJlY2VpcHRANAoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjpSZWNlaXB0QW5jaG9yQ29udHJhY3QuZ2V0Q29udHJhY3RJbmZvW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0Q29udHJhY3RJbmZvOgogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NjcKICAgIC8vIHJldHVybiBbdGhpcy5vd25lci52YWx1ZSwgdGhpcy5yZWNlaXB0Q291bnQudmFsdWVdCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NQogICAgLy8gb3duZXIgPSBHbG9iYWxTdGF0ZTxBY2NvdW50PigpCiAgICBieXRlYyA0IC8vICJvd25lciIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjY3CiAgICAvLyByZXR1cm4gW3RoaXMub3duZXIudmFsdWUsIHRoaXMucmVjZWlwdENvdW50LnZhbHVlXQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcmVjZWlwdF9hbmNob3IvY29udHJhY3QuYWxnby50czo2CiAgICAvLyByZWNlaXB0Q291bnQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KCkKICAgIGJ5dGVjXzEgLy8gInJlY2VpcHRDb3VudCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZWNlaXB0X2FuY2hvci9jb250cmFjdC5hbGdvLnRzOjY3CiAgICAvLyByZXR1cm4gW3RoaXMub3duZXIudmFsdWUsIHRoaXMucmVjZWlwdENvdW50LnZhbHVlXQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIGl0b2IKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL3JlY2VpcHRfYW5jaG9yL2NvbnRyYWN0LmFsZ28udHM6NjUKICAgIC8vIEBhYmltZXRob2QoeyBhbGxvd0FjdGlvbnM6ICdOb09wJywgcmVhZG9ubHk6IHRydWUgfSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyADAAECJgYEFR98dQxyZWNlaXB0Q291bnQPbGFzdFJlY2VpcHRIYXNoEGxhc3RSZWNlaXB0SW5kZXgFb3duZXINbGFzdFNlcnZpY2VJZDEbQQBHMRkURDEYRIIIBO4ccVYEeYuhZATa5NoqBKzwFtoEP7l01wRNcRS2BE9Ukc8EuhulJTYaAI4IAAsAHQBbAIUApgDRANwBAQAxGRQxGBQQRCNDNhoBSRWBIBJEJwRMZykiZyNDNhoBSSJZJAhLARUSRFcCADYaAkkiWSQISwEVEkRXAgAiKWVEKk8DZycFTwJnK0sBZ0kjCClMZxYoTFCwI0M2GgFJIlkkCEsBFRJEVwIAIiplRBJBAA4jgAEAIk8CVChMULAjQyJC/+82GgFJIlkkCEsBFRJEVwIAIiplRBJEIitlRBYoTFCwI0M2GgFJFYEIEkQXIitlRBJBABIiKmVESRUWVwYCTFAoTFCwI0MiKmVEQv/rIillRBYoTFCwI0M2GgFJIlkkCEsBFRJEVwIAIicFZUQSQQAIIxYoTFCwI0MiQv/1IicEZUQiKWVEFlAoTFCwI0M=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 3, "patch": 2 } }, "events": [], "templateVariables": {} }