[ [ "Object", "object" ], [ "Whitespace", " " ], [ "LiteralString", "\"Token\"" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Code", "code" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "LineComment", "// Store the creator in slot zero." ], [ "Whitespace", "\n " ], [ "Identifier", "sstore" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "caller" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n\n " ], [ "LineComment", "// Deploy the contract" ], [ "Whitespace", "\n " ], [ "Identifier", "datacopy" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "dataoffset" ], [ "ParenOpen", "(" ], [ "LiteralString", "\"runtime\"" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "datasize" ], [ "ParenOpen", "(" ], [ "LiteralString", "\"runtime\"" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "return" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "datasize" ], [ "ParenOpen", "(" ], [ "LiteralString", "\"runtime\"" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Object", "object" ], [ "Whitespace", " " ], [ "LiteralString", "\"runtime\"" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Code", "code" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "LineComment", "// Protection against sending Ether" ], [ "Whitespace", "\n " ], [ "Identifier", "require" ], [ "ParenOpen", "(" ], [ "Identifier", "iszero" ], [ "ParenOpen", "(" ], [ "Identifier", "callvalue" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n\n " ], [ "LineComment", "// Dispatcher" ], [ "Whitespace", "\n " ], [ "Switch", "switch" ], [ "Whitespace", " " ], [ "Identifier", "selector" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Case", "case" ], [ "Whitespace", " " ], [ "LiteralHex", "0x70a08231" ], [ "Whitespace", " " ], [ "BlockComment", "/* \"balanceOf(address)\" */" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "returnUint" ], [ "ParenOpen", "(" ], [ "Identifier", "balanceOf" ], [ "ParenOpen", "(" ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Case", "case" ], [ "Whitespace", " " ], [ "LiteralHex", "0x18160ddd" ], [ "Whitespace", " " ], [ "BlockComment", "/* \"totalSupply()\" */" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "returnUint" ], [ "ParenOpen", "(" ], [ "Identifier", "totalSupply" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Case", "case" ], [ "Whitespace", " " ], [ "LiteralHex", "0xa9059cbb" ], [ "Whitespace", " " ], [ "BlockComment", "/* \"transfer(address,uint256)\" */" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "transfer" ], [ "ParenOpen", "(" ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "decodeAsUint" ], [ "ParenOpen", "(" ], [ "LiteralInt", "1" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "returnTrue" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Case", "case" ], [ "Whitespace", " " ], [ "LiteralHex", "0x23b872dd" ], [ "Whitespace", " " ], [ "BlockComment", "/* \"transferFrom(address,address,uint256)\" */" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "transferFrom" ], [ "ParenOpen", "(" ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "1" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "decodeAsUint" ], [ "ParenOpen", "(" ], [ "LiteralInt", "2" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "returnTrue" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Case", "case" ], [ "Whitespace", " " ], [ "LiteralHex", "0x095ea7b3" ], [ "Whitespace", " " ], [ "BlockComment", "/* \"approve(address,uint256)\" */" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "approve" ], [ "ParenOpen", "(" ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "decodeAsUint" ], [ "ParenOpen", "(" ], [ "LiteralInt", "1" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "returnTrue" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Case", "case" ], [ "Whitespace", " " ], [ "LiteralHex", "0xdd62ed3e" ], [ "Whitespace", " " ], [ "BlockComment", "/* \"allowance(address,address)\" */" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "returnUint" ], [ "ParenOpen", "(" ], [ "Identifier", "allowance" ], [ "ParenOpen", "(" ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "1" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Case", "case" ], [ "Whitespace", " " ], [ "LiteralHex", "0x40c10f19" ], [ "Whitespace", " " ], [ "BlockComment", "/* \"mint(address,uint256)\" */" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "mint" ], [ "ParenOpen", "(" ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "decodeAsUint" ], [ "ParenOpen", "(" ], [ "LiteralInt", "1" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "returnTrue" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Default", "default" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "revert" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "mint" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "require" ], [ "ParenOpen", "(" ], [ "Identifier", "calledByOwner" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n\n " ], [ "Identifier", "mintTokens" ], [ "ParenOpen", "(" ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "addToBalance" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "emitTransfer" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "transfer" ], [ "ParenOpen", "(" ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "executeTransfer" ], [ "ParenOpen", "(" ], [ "Identifier", "caller" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "approve" ], [ "ParenOpen", "(" ], [ "Identifier", "spender" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "revertIfZeroAddress" ], [ "ParenOpen", "(" ], [ "Identifier", "spender" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "setAllowance" ], [ "ParenOpen", "(" ], [ "Identifier", "caller" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "emitApproval" ], [ "ParenOpen", "(" ], [ "Identifier", "caller" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "transferFrom" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "decreaseAllowanceBy" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "caller" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "executeTransfer" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "executeTransfer" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "revertIfZeroAddress" ], [ "ParenOpen", "(" ], [ "Identifier", "to" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "deductFromBalance" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "addToBalance" ], [ "ParenOpen", "(" ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "emitTransfer" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n\n " ], [ "BlockComment", "/* ---------- calldata decoding functions ----------- */" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "selector" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "s" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "s" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "div" ], [ "ParenOpen", "(" ], [ "Identifier", "calldataload" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralHex", "0x100000000000000000000000000000000000000000000000000000000" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "decodeAsAddress" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "v" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "v" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "decodeAsUint" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "If", "if" ], [ "Whitespace", " " ], [ "Identifier", "iszero" ], [ "ParenOpen", "(" ], [ "Identifier", "iszero" ], [ "ParenOpen", "(" ], [ "Identifier", "and" ], [ "ParenOpen", "(" ], [ "Identifier", "v" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "not" ], [ "ParenOpen", "(" ], [ "LiteralHex", "0xffffffffffffffffffffffffffffffffffffffff" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "revert" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "decodeAsUint" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "v" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "pos" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "add" ], [ "ParenOpen", "(" ], [ "LiteralInt", "4" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "mul" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralHex", "0x20" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "If", "if" ], [ "Whitespace", " " ], [ "Identifier", "lt" ], [ "ParenOpen", "(" ], [ "Identifier", "calldatasize" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "add" ], [ "ParenOpen", "(" ], [ "Identifier", "pos" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralHex", "0x20" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "revert" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Identifier", "v" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "calldataload" ], [ "ParenOpen", "(" ], [ "Identifier", "pos" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "BlockComment", "/* ---------- calldata encoding functions ---------- */" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "returnUint" ], [ "ParenOpen", "(" ], [ "Identifier", "v" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "mstore" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "v" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "return" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralHex", "0x20" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "returnTrue" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "returnUint" ], [ "ParenOpen", "(" ], [ "LiteralInt", "1" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n " ], [ "BlockComment", "/* -------- events ---------- */" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "emitTransfer" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "signatureHash" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "LiteralHex", "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" ], [ "Whitespace", "\n " ], [ "Identifier", "emitEvent" ], [ "ParenOpen", "(" ], [ "Identifier", "signatureHash" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "to" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "emitApproval" ], [ "ParenOpen", "(" ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "signatureHash" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "LiteralHex", "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" ], [ "Whitespace", "\n " ], [ "Identifier", "emitEvent" ], [ "ParenOpen", "(" ], [ "Identifier", "signatureHash" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "from" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "emitEvent" ], [ "ParenOpen", "(" ], [ "Identifier", "signatureHash" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "indexed1" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "indexed2" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "nonIndexed" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "mstore" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "nonIndexed" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "log3" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralHex", "0x20" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "signatureHash" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "indexed1" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "indexed2" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n " ], [ "BlockComment", "/* -------- storage layout ---------- */" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "ownerPos" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "p" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", " " ], [ "Identifier", "p" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "LiteralInt", "0" ], [ "Whitespace", " " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "totalSupplyPos" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "p" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", " " ], [ "Identifier", "p" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "LiteralInt", "1" ], [ "Whitespace", " " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "accountToStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "add" ], [ "ParenOpen", "(" ], [ "LiteralHex", "0x1000" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "account" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "allowanceStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "accountToStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "mstore" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "offset" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "mstore" ], [ "ParenOpen", "(" ], [ "LiteralHex", "0x20" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "keccak256" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralHex", "0x40" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n " ], [ "BlockComment", "/* -------- storage access ---------- */" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "owner" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "o" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "o" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "sload" ], [ "ParenOpen", "(" ], [ "Identifier", "ownerPos" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "totalSupply" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "supply" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "supply" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "sload" ], [ "ParenOpen", "(" ], [ "Identifier", "totalSupplyPos" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "mintTokens" ], [ "ParenOpen", "(" ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "sstore" ], [ "ParenOpen", "(" ], [ "Identifier", "totalSupplyPos" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "safeAdd" ], [ "ParenOpen", "(" ], [ "Identifier", "totalSupply" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "balanceOf" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "bal" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "bal" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "sload" ], [ "ParenOpen", "(" ], [ "Identifier", "accountToStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "addToBalance" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "accountToStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "sstore" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "safeAdd" ], [ "ParenOpen", "(" ], [ "Identifier", "sload" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "deductFromBalance" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "accountToStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "bal" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "sload" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "require" ], [ "ParenOpen", "(" ], [ "Identifier", "lte" ], [ "ParenOpen", "(" ], [ "Identifier", "amount" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "bal" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "sstore" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "sub" ], [ "ParenOpen", "(" ], [ "Identifier", "bal" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "allowance" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "amount" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "sload" ], [ "ParenOpen", "(" ], [ "Identifier", "allowanceStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "setAllowance" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "sstore" ], [ "ParenOpen", "(" ], [ "Identifier", "allowanceStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "decreaseAllowanceBy" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "offset" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "allowanceStorageOffset" ], [ "ParenOpen", "(" ], [ "Identifier", "account" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "spender" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Let", "let" ], [ "Whitespace", " " ], [ "Identifier", "currentAllowance" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "sload" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "require" ], [ "ParenOpen", "(" ], [ "Identifier", "lte" ], [ "ParenOpen", "(" ], [ "Identifier", "amount" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "currentAllowance" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "Identifier", "sstore" ], [ "ParenOpen", "(" ], [ "Identifier", "offset" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "sub" ], [ "ParenOpen", "(" ], [ "Identifier", "currentAllowance" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "amount" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n\n " ], [ "BlockComment", "/* ---------- utility functions ---------- */" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "lte" ], [ "ParenOpen", "(" ], [ "Identifier", "a" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "b" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "r" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "r" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "iszero" ], [ "ParenOpen", "(" ], [ "Identifier", "gt" ], [ "ParenOpen", "(" ], [ "Identifier", "a" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "b" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "gte" ], [ "ParenOpen", "(" ], [ "Identifier", "a" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "b" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "r" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "r" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "iszero" ], [ "ParenOpen", "(" ], [ "Identifier", "lt" ], [ "ParenOpen", "(" ], [ "Identifier", "a" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "b" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "safeAdd" ], [ "ParenOpen", "(" ], [ "Identifier", "a" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "b" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "r" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "r" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "add" ], [ "ParenOpen", "(" ], [ "Identifier", "a" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "b" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "If", "if" ], [ "Whitespace", " " ], [ "Identifier", "or" ], [ "ParenOpen", "(" ], [ "Identifier", "lt" ], [ "ParenOpen", "(" ], [ "Identifier", "r" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "a" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "lt" ], [ "ParenOpen", "(" ], [ "Identifier", "r" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "b" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", " " ], [ "Identifier", "revert" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "calledByOwner" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "Returns", "->" ], [ "Whitespace", " " ], [ "Identifier", "cbo" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "cbo" ], [ "Whitespace", " " ], [ "Assign", ":=" ], [ "Whitespace", " " ], [ "Identifier", "eq" ], [ "ParenOpen", "(" ], [ "Identifier", "owner" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "Identifier", "caller" ], [ "ParenOpen", "(" ], [ "ParenClose", ")" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "revertIfZeroAddress" ], [ "ParenOpen", "(" ], [ "Identifier", "addr" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "Identifier", "require" ], [ "ParenOpen", "(" ], [ "Identifier", "addr" ], [ "ParenClose", ")" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "Function", "function" ], [ "Whitespace", " " ], [ "Identifier", "require" ], [ "ParenOpen", "(" ], [ "Identifier", "condition" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", "\n " ], [ "If", "if" ], [ "Whitespace", " " ], [ "Identifier", "iszero" ], [ "ParenOpen", "(" ], [ "Identifier", "condition" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceOpen", "{" ], [ "Whitespace", " " ], [ "Identifier", "revert" ], [ "ParenOpen", "(" ], [ "LiteralInt", "0" ], [ "Comma", "," ], [ "Whitespace", " " ], [ "LiteralInt", "0" ], [ "ParenClose", ")" ], [ "Whitespace", " " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n " ], [ "BraceClose", "}" ], [ "Whitespace", "\n" ], [ "BraceClose", "}" ], [ "Whitespace", "\n" ] ]