{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/L2NativeToken.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/L1/L2NativeToken.sol\":{\"keccak256\":\"0x2b590fcd928d3490d29df584242a28990f8ebbbe375b37f7fe430a7b72924f0e\",\"urls\":[\"bzz-raw://9937058f528d8bdcbdee8e0fcc23f6b7a05aca4703937779bd57cc033961caac\",\"dweb:/ipfs/Qmf74TwEkHpA8D6onjwiRfNpnL8wVeLKJfssa7yJ1fUJQa\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L1/L2NativeToken.sol":"IERC165"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/L1/L2NativeToken.sol":{"keccak256":"0x2b590fcd928d3490d29df584242a28990f8ebbbe375b37f7fe430a7b72924f0e","urls":["bzz-raw://9937058f528d8bdcbdee8e0fcc23f6b7a05aca4703937779bd57cc033961caac","dweb:/ipfs/Qmf74TwEkHpA8D6onjwiRfNpnL8wVeLKJfssa7yJ1fUJQa"],"license":null}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}}},"ast":{"absolutePath":"src/L1/L2NativeToken.sol","id":91279,"exportedSymbols":{"AuthController":[91042],"Context":[89354],"ERC165":[90844],"ERC165Checker":[90619],"ERC20":[90173],"ERC20Detailed":[90451],"ERC20Mintable":[90391],"ERC20OnApprove":[90963],"IERC165":[90791],"IERC20":[89557],"L2NativeToken":[91278],"MinterRole":[90365],"MinterRoleRenounceTarget":[90967],"OnApprove":[90872],"Ownable":[89481],"OwnableTarget":[90980],"PauserRoleRenounceTarget":[90971],"Roles":[90260],"SafeMath":[89751],"SeigManagerI":[90781],"SeigToken":[91237]},"nodeType":"SourceUnit","src":"127:37495:144","nodes":[{"id":89326,"nodeType":"PragmaDirective","src":"127:23:144","nodes":[],"literals":["solidity","0.8",".15"]},{"id":89354,"nodeType":"ContractDefinition","src":"652:595:144","nodes":[{"id":89330,"nodeType":"FunctionDefinition","src":"829:17:144","nodes":[],"body":{"id":89329,"nodeType":"Block","src":"843:3:144","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":89327,"nodeType":"ParameterList","parameters":[],"src":"840:2:144"},"returnParameters":{"id":89328,"nodeType":"ParameterList","parameters":[],"src":"843:0:144"},"scope":89354,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89342,"nodeType":"FunctionDefinition","src":"905:97:144","nodes":[],"body":{"id":89341,"nodeType":"Block","src":"959:43:144","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":89337,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"984:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":89338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"984:10:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":89336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"976:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89335,"name":"address","nodeType":"ElementaryTypeName","src":"976:7:144","typeDescriptions":{}}},"id":89339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"976:19:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":89334,"id":89340,"nodeType":"Return","src":"969:26:144"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"914:10:144","parameters":{"id":89331,"nodeType":"ParameterList","parameters":[],"src":"924:2:144"},"returnParameters":{"id":89334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89342,"src":"950:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89332,"name":"address","nodeType":"ElementaryTypeName","src":"950:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"949:9:144"},"scope":89354,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":89353,"nodeType":"FunctionDefinition","src":"1008:237:144","nodes":[],"body":{"id":89352,"nodeType":"Block","src":"1065:180:144","nodes":[],"statements":[{"expression":{"id":89347,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1075:4:144","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$89354","typeString":"contract Context"}},"id":89348,"nodeType":"ExpressionStatement","src":"1075:4:144"},{"expression":{"expression":{"id":89349,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1230:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":89350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"1230:8:144","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":89346,"id":89351,"nodeType":"Return","src":"1223:15:144"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"1017:8:144","parameters":{"id":89343,"nodeType":"ParameterList","parameters":[],"src":"1025:2:144"},"returnParameters":{"id":89346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89353,"src":"1051:12:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":89344,"name":"bytes","nodeType":"ElementaryTypeName","src":"1051:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1050:14:144"},"scope":89354,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[89354],"name":"Context","nameLocation":"661:7:144","scope":91279,"usedErrors":[]},{"id":89481,"nodeType":"ContractDefinition","src":"1674:1980:144","nodes":[{"id":89359,"nodeType":"VariableDeclaration","src":"1708:22:144","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1724:6:144","scope":89481,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89358,"name":"address","nodeType":"ElementaryTypeName","src":"1708:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":89365,"nodeType":"EventDefinition","src":"1737:84:144","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"1743:20:144","parameters":{"id":89364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89361,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1780:13:144","nodeType":"VariableDeclaration","scope":89365,"src":"1764:29:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89360,"name":"address","nodeType":"ElementaryTypeName","src":"1764:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89363,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1811:8:144","nodeType":"VariableDeclaration","scope":89365,"src":"1795:24:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89362,"name":"address","nodeType":"ElementaryTypeName","src":"1795:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1763:57:144"}},{"id":89387,"nodeType":"FunctionDefinition","src":"1923:149:144","nodes":[],"body":{"id":89386,"nodeType":"Block","src":"1937:135:144","nodes":[],"statements":[{"assignments":[89370],"declarations":[{"constant":false,"id":89370,"mutability":"mutable","name":"msgSender","nameLocation":"1955:9:144","nodeType":"VariableDeclaration","scope":89386,"src":"1947:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89369,"name":"address","nodeType":"ElementaryTypeName","src":"1947:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":89373,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":89371,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"1967:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1947:32:144"},{"expression":{"id":89376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89374,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"1989:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":89375,"name":"msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89370,"src":"1998:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1989:18:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":89377,"nodeType":"ExpressionStatement","src":"1989:18:144"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":89381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2051:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2043:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89379,"name":"address","nodeType":"ElementaryTypeName","src":"2043:7:144","typeDescriptions":{}}},"id":89382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2043:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89383,"name":"msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89370,"src":"2055:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":89378,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89365,"src":"2022:20:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":89384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2022:43:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89385,"nodeType":"EmitStatement","src":"2017:48:144"}]},"documentation":{"id":89366,"nodeType":"StructuredDocumentation","src":"1827:91:144","text":" @dev Initializes the contract setting the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":89367,"nodeType":"ParameterList","parameters":[],"src":"1934:2:144"},"returnParameters":{"id":89368,"nodeType":"ParameterList","parameters":[],"src":"1937:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89396,"nodeType":"FunctionDefinition","src":"2148:77:144","nodes":[],"body":{"id":89395,"nodeType":"Block","src":"2195:30:144","nodes":[],"statements":[{"expression":{"id":89393,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"2212:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":89392,"id":89394,"nodeType":"Return","src":"2205:13:144"}]},"documentation":{"id":89388,"nodeType":"StructuredDocumentation","src":"2078:65:144","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2157:5:144","parameters":{"id":89389,"nodeType":"ParameterList","parameters":[],"src":"2162:2:144"},"returnParameters":{"id":89392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89396,"src":"2186:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89390,"name":"address","nodeType":"ElementaryTypeName","src":"2186:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2185:9:144"},"scope":89481,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":89407,"nodeType":"ModifierDefinition","src":"2313:103:144","nodes":[],"body":{"id":89406,"nodeType":"Block","src":"2334:82:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":89400,"name":"isOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89419,"src":"2352:7:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":89401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2352:9:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":89402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2363:34:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":89399,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2344:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2344:54:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89404,"nodeType":"ExpressionStatement","src":"2344:54:144"},{"id":89405,"nodeType":"PlaceholderStatement","src":"2408:1:144"}]},"documentation":{"id":89397,"nodeType":"StructuredDocumentation","src":"2231:77:144","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2322:9:144","parameters":{"id":89398,"nodeType":"ParameterList","parameters":[],"src":"2331:2:144"},"virtual":false,"visibility":"internal"},{"id":89419,"nodeType":"FunctionDefinition","src":"2499:92:144","nodes":[],"body":{"id":89418,"nodeType":"Block","src":"2545:46:144","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":89416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":89413,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"2562:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2562:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":89415,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"2578:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2562:22:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":89412,"id":89417,"nodeType":"Return","src":"2555:29:144"}]},"documentation":{"id":89408,"nodeType":"StructuredDocumentation","src":"2422:72:144","text":" @dev Returns true if the caller is the current owner."},"functionSelector":"8f32d59b","implemented":true,"kind":"function","modifiers":[],"name":"isOwner","nameLocation":"2508:7:144","parameters":{"id":89409,"nodeType":"ParameterList","parameters":[],"src":"2515:2:144"},"returnParameters":{"id":89412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89419,"src":"2539:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89410,"name":"bool","nodeType":"ElementaryTypeName","src":"2539:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2538:6:144"},"scope":89481,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":89441,"nodeType":"FunctionDefinition","src":"2933:137:144","nodes":[],"body":{"id":89440,"nodeType":"Block","src":"2979:91:144","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":89426,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3015:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":89429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3031:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3023:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89427,"name":"address","nodeType":"ElementaryTypeName","src":"3023:7:144","typeDescriptions":{}}},"id":89430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3023:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":89425,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89365,"src":"2994:20:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":89431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2994:40:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89432,"nodeType":"EmitStatement","src":"2989:45:144"},{"expression":{"id":89438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89433,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3044:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":89436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3061:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3053:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89434,"name":"address","nodeType":"ElementaryTypeName","src":"3053:7:144","typeDescriptions":{}}},"id":89437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3053:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3044:19:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":89439,"nodeType":"ExpressionStatement","src":"3044:19:144"}]},"documentation":{"id":89420,"nodeType":"StructuredDocumentation","src":"2597:331:144","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":89423,"kind":"modifierInvocation","modifierName":{"id":89422,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"2969:9:144"},"nodeType":"ModifierInvocation","src":"2969:9:144"}],"name":"renounceOwnership","nameLocation":"2942:17:144","parameters":{"id":89421,"nodeType":"ParameterList","parameters":[],"src":"2959:2:144"},"returnParameters":{"id":89424,"nodeType":"ParameterList","parameters":[],"src":"2979:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89454,"nodeType":"FunctionDefinition","src":"3219:107:144","nodes":[],"body":{"id":89453,"nodeType":"Block","src":"3281:45:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":89450,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89444,"src":"3310:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":89449,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89480,"src":"3291:18:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":89451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3291:28:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89452,"nodeType":"ExpressionStatement","src":"3291:28:144"}]},"documentation":{"id":89442,"nodeType":"StructuredDocumentation","src":"3076:138:144","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":89447,"kind":"modifierInvocation","modifierName":{"id":89446,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"3271:9:144"},"nodeType":"ModifierInvocation","src":"3271:9:144"}],"name":"transferOwnership","nameLocation":"3228:17:144","parameters":{"id":89445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89444,"mutability":"mutable","name":"newOwner","nameLocation":"3254:8:144","nodeType":"VariableDeclaration","scope":89454,"src":"3246:16:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89443,"name":"address","nodeType":"ElementaryTypeName","src":"3246:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3245:18:144"},"returnParameters":{"id":89448,"nodeType":"ParameterList","parameters":[],"src":"3281:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89480,"nodeType":"FunctionDefinition","src":"3427:225:144","nodes":[],"body":{"id":89479,"nodeType":"Block","src":"3482:170:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":89466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89461,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89457,"src":"3500:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":89464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3520:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3512:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89462,"name":"address","nodeType":"ElementaryTypeName","src":"3512:7:144","typeDescriptions":{}}},"id":89465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3512:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3500:22:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":89467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3524:40:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":89460,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3492:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3492:73:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89469,"nodeType":"ExpressionStatement","src":"3492:73:144"},{"eventCall":{"arguments":[{"id":89471,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3601:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89472,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89457,"src":"3609:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":89470,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89365,"src":"3580:20:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":89473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3580:38:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89474,"nodeType":"EmitStatement","src":"3575:43:144"},{"expression":{"id":89477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89475,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3628:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":89476,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89457,"src":"3637:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3628:17:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":89478,"nodeType":"ExpressionStatement","src":"3628:17:144"}]},"documentation":{"id":89455,"nodeType":"StructuredDocumentation","src":"3332:90:144","text":" @dev Transfers ownership of the contract to a new account (`newOwner`)."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3436:18:144","parameters":{"id":89458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89457,"mutability":"mutable","name":"newOwner","nameLocation":"3463:8:144","nodeType":"VariableDeclaration","scope":89480,"src":"3455:16:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89456,"name":"address","nodeType":"ElementaryTypeName","src":"3455:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3454:18:144"},"returnParameters":{"id":89459,"nodeType":"ParameterList","parameters":[],"src":"3482:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":89356,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":89354,"src":"1694:7:144"},"id":89357,"nodeType":"InheritanceSpecifier","src":"1694:7:144"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":89355,"nodeType":"StructuredDocumentation","src":"1313:360:144","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[89481,89354],"name":"Ownable","nameLocation":"1683:7:144","scope":91279,"usedErrors":[]},{"id":89557,"nodeType":"ContractDefinition","src":"3872:2566:144","nodes":[{"id":89488,"nodeType":"FunctionDefinition","src":"3966:55:144","nodes":[],"documentation":{"id":89483,"nodeType":"StructuredDocumentation","src":"3895:66:144","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3975:11:144","parameters":{"id":89484,"nodeType":"ParameterList","parameters":[],"src":"3986:2:144"},"returnParameters":{"id":89487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89488,"src":"4012:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89485,"name":"uint256","nodeType":"ElementaryTypeName","src":"4012:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4011:9:144"},"scope":89557,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":89496,"nodeType":"FunctionDefinition","src":"4104:68:144","nodes":[],"documentation":{"id":89489,"nodeType":"StructuredDocumentation","src":"4027:72:144","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4113:9:144","parameters":{"id":89492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89491,"mutability":"mutable","name":"account","nameLocation":"4131:7:144","nodeType":"VariableDeclaration","scope":89496,"src":"4123:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89490,"name":"address","nodeType":"ElementaryTypeName","src":"4123:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4122:17:144"},"returnParameters":{"id":89495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89494,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89496,"src":"4163:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89493,"name":"uint256","nodeType":"ElementaryTypeName","src":"4163:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4162:9:144"},"scope":89557,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":89506,"nodeType":"FunctionDefinition","src":"4392:77:144","nodes":[],"documentation":{"id":89497,"nodeType":"StructuredDocumentation","src":"4178:209:144","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4401:8:144","parameters":{"id":89502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89499,"mutability":"mutable","name":"recipient","nameLocation":"4418:9:144","nodeType":"VariableDeclaration","scope":89506,"src":"4410:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89498,"name":"address","nodeType":"ElementaryTypeName","src":"4410:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89501,"mutability":"mutable","name":"amount","nameLocation":"4437:6:144","nodeType":"VariableDeclaration","scope":89506,"src":"4429:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89500,"name":"uint256","nodeType":"ElementaryTypeName","src":"4429:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4409:35:144"},"returnParameters":{"id":89505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89506,"src":"4463:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89503,"name":"bool","nodeType":"ElementaryTypeName","src":"4463:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4462:6:144"},"scope":89557,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":89516,"nodeType":"FunctionDefinition","src":"4744:83:144","nodes":[],"documentation":{"id":89507,"nodeType":"StructuredDocumentation","src":"4475:264:144","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4753:9:144","parameters":{"id":89512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89509,"mutability":"mutable","name":"owner","nameLocation":"4771:5:144","nodeType":"VariableDeclaration","scope":89516,"src":"4763:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89508,"name":"address","nodeType":"ElementaryTypeName","src":"4763:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89511,"mutability":"mutable","name":"spender","nameLocation":"4786:7:144","nodeType":"VariableDeclaration","scope":89516,"src":"4778:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89510,"name":"address","nodeType":"ElementaryTypeName","src":"4778:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4762:32:144"},"returnParameters":{"id":89515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89516,"src":"4818:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89513,"name":"uint256","nodeType":"ElementaryTypeName","src":"4818:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4817:9:144"},"scope":89557,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":89526,"nodeType":"FunctionDefinition","src":"5480:74:144","nodes":[],"documentation":{"id":89517,"nodeType":"StructuredDocumentation","src":"4833:642:144","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5489:7:144","parameters":{"id":89522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89519,"mutability":"mutable","name":"spender","nameLocation":"5505:7:144","nodeType":"VariableDeclaration","scope":89526,"src":"5497:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89518,"name":"address","nodeType":"ElementaryTypeName","src":"5497:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89521,"mutability":"mutable","name":"amount","nameLocation":"5522:6:144","nodeType":"VariableDeclaration","scope":89526,"src":"5514:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89520,"name":"uint256","nodeType":"ElementaryTypeName","src":"5514:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5496:33:144"},"returnParameters":{"id":89525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89526,"src":"5548:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89523,"name":"bool","nodeType":"ElementaryTypeName","src":"5548:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5547:6:144"},"scope":89557,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":89538,"nodeType":"FunctionDefinition","src":"5861:97:144","nodes":[],"documentation":{"id":89527,"nodeType":"StructuredDocumentation","src":"5560:296:144","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5870:12:144","parameters":{"id":89534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89529,"mutability":"mutable","name":"sender","nameLocation":"5891:6:144","nodeType":"VariableDeclaration","scope":89538,"src":"5883:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89528,"name":"address","nodeType":"ElementaryTypeName","src":"5883:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89531,"mutability":"mutable","name":"recipient","nameLocation":"5907:9:144","nodeType":"VariableDeclaration","scope":89538,"src":"5899:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89530,"name":"address","nodeType":"ElementaryTypeName","src":"5899:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89533,"mutability":"mutable","name":"amount","nameLocation":"5926:6:144","nodeType":"VariableDeclaration","scope":89538,"src":"5918:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89532,"name":"uint256","nodeType":"ElementaryTypeName","src":"5918:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5882:51:144"},"returnParameters":{"id":89537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89538,"src":"5952:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89535,"name":"bool","nodeType":"ElementaryTypeName","src":"5952:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5951:6:144"},"scope":89557,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":89547,"nodeType":"EventDefinition","src":"6127:72:144","nodes":[],"anonymous":false,"documentation":{"id":89539,"nodeType":"StructuredDocumentation","src":"5964:158:144","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"6133:8:144","parameters":{"id":89546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89541,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"6158:4:144","nodeType":"VariableDeclaration","scope":89547,"src":"6142:20:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89540,"name":"address","nodeType":"ElementaryTypeName","src":"6142:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89543,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"6180:2:144","nodeType":"VariableDeclaration","scope":89547,"src":"6164:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89542,"name":"address","nodeType":"ElementaryTypeName","src":"6164:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89545,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"6192:5:144","nodeType":"VariableDeclaration","scope":89547,"src":"6184:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89544,"name":"uint256","nodeType":"ElementaryTypeName","src":"6184:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6141:57:144"}},{"id":89556,"nodeType":"EventDefinition","src":"6358:78:144","nodes":[],"anonymous":false,"documentation":{"id":89548,"nodeType":"StructuredDocumentation","src":"6205:148:144","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"6364:8:144","parameters":{"id":89555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89550,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"6389:5:144","nodeType":"VariableDeclaration","scope":89556,"src":"6373:21:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89549,"name":"address","nodeType":"ElementaryTypeName","src":"6373:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89552,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"6412:7:144","nodeType":"VariableDeclaration","scope":89556,"src":"6396:23:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89551,"name":"address","nodeType":"ElementaryTypeName","src":"6396:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89554,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"6429:5:144","nodeType":"VariableDeclaration","scope":89556,"src":"6421:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89553,"name":"uint256","nodeType":"ElementaryTypeName","src":"6421:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6372:63:144"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":89482,"nodeType":"StructuredDocumentation","src":"3721:150:144","text":" @dev Interface of the ERC20 standard as defined in the EIP. Does not include\n the optional functions; to access them see {ERC20Detailed}."},"fullyImplemented":false,"linearizedBaseContracts":[89557],"name":"IERC20","nameLocation":"3882:6:144","scope":91279,"usedErrors":[]},{"id":89751,"nodeType":"ContractDefinition","src":"7064:4708:144","nodes":[{"id":89584,"nodeType":"FunctionDefinition","src":"7309:176:144","nodes":[],"body":{"id":89583,"nodeType":"Block","src":"7376:109:144","nodes":[],"statements":[{"assignments":[89569],"declarations":[{"constant":false,"id":89569,"mutability":"mutable","name":"c","nameLocation":"7394:1:144","nodeType":"VariableDeclaration","scope":89583,"src":"7386:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89568,"name":"uint256","nodeType":"ElementaryTypeName","src":"7386:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":89573,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89570,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89561,"src":"7398:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":89571,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89563,"src":"7402:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7398:5:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7386:17:144"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89575,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89569,"src":"7421:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":89576,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89561,"src":"7426:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7421:6:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":89578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7429:29:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""},"value":"SafeMath: addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"id":89574,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7413:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7413:46:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89580,"nodeType":"ExpressionStatement","src":"7413:46:144"},{"expression":{"id":89581,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89569,"src":"7477:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89567,"id":89582,"nodeType":"Return","src":"7470:8:144"}]},"documentation":{"id":89559,"nodeType":"StructuredDocumentation","src":"7087:217:144","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"7318:3:144","parameters":{"id":89564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89561,"mutability":"mutable","name":"a","nameLocation":"7330:1:144","nodeType":"VariableDeclaration","scope":89584,"src":"7322:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89560,"name":"uint256","nodeType":"ElementaryTypeName","src":"7322:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89563,"mutability":"mutable","name":"b","nameLocation":"7341:1:144","nodeType":"VariableDeclaration","scope":89584,"src":"7333:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89562,"name":"uint256","nodeType":"ElementaryTypeName","src":"7333:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7321:22:144"},"returnParameters":{"id":89567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89584,"src":"7367:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89565,"name":"uint256","nodeType":"ElementaryTypeName","src":"7367:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7366:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":89601,"nodeType":"FunctionDefinition","src":"7749:134:144","nodes":[],"body":{"id":89600,"nodeType":"Block","src":"7816:67:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":89595,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89587,"src":"7837:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":89596,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89589,"src":"7840:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":89597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7843:32:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""},"value":"SafeMath: subtraction overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"id":89594,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[89601,89629],"referencedDeclaration":89629,"src":"7833:3:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":89598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7833:43:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89593,"id":89599,"nodeType":"Return","src":"7826:50:144"}]},"documentation":{"id":89585,"nodeType":"StructuredDocumentation","src":"7491:253:144","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"implemented":true,"kind":"function","modifiers":[],"name":"sub","nameLocation":"7758:3:144","parameters":{"id":89590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89587,"mutability":"mutable","name":"a","nameLocation":"7770:1:144","nodeType":"VariableDeclaration","scope":89601,"src":"7762:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89586,"name":"uint256","nodeType":"ElementaryTypeName","src":"7762:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89589,"mutability":"mutable","name":"b","nameLocation":"7781:1:144","nodeType":"VariableDeclaration","scope":89601,"src":"7773:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89588,"name":"uint256","nodeType":"ElementaryTypeName","src":"7773:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7761:22:144"},"returnParameters":{"id":89593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89601,"src":"7807:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89591,"name":"uint256","nodeType":"ElementaryTypeName","src":"7807:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7806:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":89629,"nodeType":"FunctionDefinition","src":"8207:187:144","nodes":[],"body":{"id":89628,"nodeType":"Block","src":"8302:92:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89614,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89606,"src":"8320:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":89615,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89604,"src":"8325:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8320:6:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":89617,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89608,"src":"8328:12:144","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":89613,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8312:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8312:29:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89619,"nodeType":"ExpressionStatement","src":"8312:29:144"},{"assignments":[89621],"declarations":[{"constant":false,"id":89621,"mutability":"mutable","name":"c","nameLocation":"8359:1:144","nodeType":"VariableDeclaration","scope":89628,"src":"8351:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89620,"name":"uint256","nodeType":"ElementaryTypeName","src":"8351:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":89625,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89622,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89604,"src":"8363:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":89623,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89606,"src":"8367:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8363:5:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8351:17:144"},{"expression":{"id":89626,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89621,"src":"8386:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89612,"id":89627,"nodeType":"Return","src":"8379:8:144"}]},"documentation":{"id":89602,"nodeType":"StructuredDocumentation","src":"7889:313:144","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow.\n _Available since v2.4.0._"},"implemented":true,"kind":"function","modifiers":[],"name":"sub","nameLocation":"8216:3:144","parameters":{"id":89609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89604,"mutability":"mutable","name":"a","nameLocation":"8228:1:144","nodeType":"VariableDeclaration","scope":89629,"src":"8220:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89603,"name":"uint256","nodeType":"ElementaryTypeName","src":"8220:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89606,"mutability":"mutable","name":"b","nameLocation":"8239:1:144","nodeType":"VariableDeclaration","scope":89629,"src":"8231:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89605,"name":"uint256","nodeType":"ElementaryTypeName","src":"8231:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89608,"mutability":"mutable","name":"errorMessage","nameLocation":"8256:12:144","nodeType":"VariableDeclaration","scope":89629,"src":"8242:26:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":89607,"name":"string","nodeType":"ElementaryTypeName","src":"8242:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8219:50:144"},"returnParameters":{"id":89612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89629,"src":"8293:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89610,"name":"uint256","nodeType":"ElementaryTypeName","src":"8293:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8292:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":89664,"nodeType":"FunctionDefinition","src":"8634:459:144","nodes":[],"body":{"id":89663,"nodeType":"Block","src":"8701:392:144","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89639,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89632,"src":"8933:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":89640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8938:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8933:6:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":89645,"nodeType":"IfStatement","src":"8929:45:144","trueBody":{"id":89644,"nodeType":"Block","src":"8941:33:144","statements":[{"expression":{"hexValue":"30","id":89642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8962:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":89638,"id":89643,"nodeType":"Return","src":"8955:8:144"}]}},{"assignments":[89647],"declarations":[{"constant":false,"id":89647,"mutability":"mutable","name":"c","nameLocation":"8992:1:144","nodeType":"VariableDeclaration","scope":89663,"src":"8984:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89646,"name":"uint256","nodeType":"ElementaryTypeName","src":"8984:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":89651,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89648,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89632,"src":"8996:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":89649,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89634,"src":"9000:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8996:5:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8984:17:144"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89653,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89647,"src":"9019:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":89654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89632,"src":"9023:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9019:5:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":89656,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89634,"src":"9028:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9019:10:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":89658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9031:35:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""},"value":"SafeMath: multiplication overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"id":89652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9011:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9011:56:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89660,"nodeType":"ExpressionStatement","src":"9011:56:144"},{"expression":{"id":89661,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89647,"src":"9085:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89638,"id":89662,"nodeType":"Return","src":"9078:8:144"}]},"documentation":{"id":89630,"nodeType":"StructuredDocumentation","src":"8400:229:144","text":" @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."},"implemented":true,"kind":"function","modifiers":[],"name":"mul","nameLocation":"8643:3:144","parameters":{"id":89635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89632,"mutability":"mutable","name":"a","nameLocation":"8655:1:144","nodeType":"VariableDeclaration","scope":89664,"src":"8647:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89631,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89634,"mutability":"mutable","name":"b","nameLocation":"8666:1:144","nodeType":"VariableDeclaration","scope":89664,"src":"8658:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89633,"name":"uint256","nodeType":"ElementaryTypeName","src":"8658:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:22:144"},"returnParameters":{"id":89638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89637,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89664,"src":"8692:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89636,"name":"uint256","nodeType":"ElementaryTypeName","src":"8692:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8691:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":89681,"nodeType":"FunctionDefinition","src":"9548:130:144","nodes":[],"body":{"id":89680,"nodeType":"Block","src":"9615:63:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":89675,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89667,"src":"9636:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":89676,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89669,"src":"9639:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":89677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9642:28:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""},"value":"SafeMath: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"id":89674,"name":"div","nodeType":"Identifier","overloadedDeclarations":[89681,89709],"referencedDeclaration":89709,"src":"9632:3:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":89678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9632:39:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89673,"id":89679,"nodeType":"Return","src":"9625:46:144"}]},"documentation":{"id":89665,"nodeType":"StructuredDocumentation","src":"9099:444:144","text":" @dev Returns the integer division of two unsigned integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"div","nameLocation":"9557:3:144","parameters":{"id":89670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89667,"mutability":"mutable","name":"a","nameLocation":"9569:1:144","nodeType":"VariableDeclaration","scope":89681,"src":"9561:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89666,"name":"uint256","nodeType":"ElementaryTypeName","src":"9561:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89669,"mutability":"mutable","name":"b","nameLocation":"9580:1:144","nodeType":"VariableDeclaration","scope":89681,"src":"9572:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89668,"name":"uint256","nodeType":"ElementaryTypeName","src":"9572:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9560:22:144"},"returnParameters":{"id":89673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89681,"src":"9606:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89671,"name":"uint256","nodeType":"ElementaryTypeName","src":"9606:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9605:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":89709,"nodeType":"FunctionDefinition","src":"10193:338:144","nodes":[],"body":{"id":89708,"nodeType":"Block","src":"10288:243:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89694,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89686,"src":"10372:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":89695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10376:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10372:5:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":89697,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89688,"src":"10379:12:144","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":89693,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10364:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10364:28:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89699,"nodeType":"ExpressionStatement","src":"10364:28:144"},{"assignments":[89701],"declarations":[{"constant":false,"id":89701,"mutability":"mutable","name":"c","nameLocation":"10410:1:144","nodeType":"VariableDeclaration","scope":89708,"src":"10402:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89700,"name":"uint256","nodeType":"ElementaryTypeName","src":"10402:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":89705,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89702,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89684,"src":"10414:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":89703,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89686,"src":"10418:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10414:5:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10402:17:144"},{"expression":{"id":89706,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89701,"src":"10523:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89692,"id":89707,"nodeType":"Return","src":"10516:8:144"}]},"documentation":{"id":89682,"nodeType":"StructuredDocumentation","src":"9684:504:144","text":" @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero.\n _Available since v2.4.0._"},"implemented":true,"kind":"function","modifiers":[],"name":"div","nameLocation":"10202:3:144","parameters":{"id":89689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89684,"mutability":"mutable","name":"a","nameLocation":"10214:1:144","nodeType":"VariableDeclaration","scope":89709,"src":"10206:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89683,"name":"uint256","nodeType":"ElementaryTypeName","src":"10206:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89686,"mutability":"mutable","name":"b","nameLocation":"10225:1:144","nodeType":"VariableDeclaration","scope":89709,"src":"10217:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89685,"name":"uint256","nodeType":"ElementaryTypeName","src":"10217:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89688,"mutability":"mutable","name":"errorMessage","nameLocation":"10242:12:144","nodeType":"VariableDeclaration","scope":89709,"src":"10228:26:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":89687,"name":"string","nodeType":"ElementaryTypeName","src":"10228:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10205:50:144"},"returnParameters":{"id":89692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89691,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89709,"src":"10279:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89690,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":89726,"nodeType":"FunctionDefinition","src":"10975:128:144","nodes":[],"body":{"id":89725,"nodeType":"Block","src":"11042:61:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":89720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89712,"src":"11063:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":89721,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89714,"src":"11066:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":89722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11069:26:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""},"value":"SafeMath: modulo by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"id":89719,"name":"mod","nodeType":"Identifier","overloadedDeclarations":[89726,89750],"referencedDeclaration":89750,"src":"11059:3:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":89723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11059:37:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89718,"id":89724,"nodeType":"Return","src":"11052:44:144"}]},"documentation":{"id":89710,"nodeType":"StructuredDocumentation","src":"10537:433:144","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"mod","nameLocation":"10984:3:144","parameters":{"id":89715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89712,"mutability":"mutable","name":"a","nameLocation":"10996:1:144","nodeType":"VariableDeclaration","scope":89726,"src":"10988:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89711,"name":"uint256","nodeType":"ElementaryTypeName","src":"10988:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89714,"mutability":"mutable","name":"b","nameLocation":"11007:1:144","nodeType":"VariableDeclaration","scope":89726,"src":"10999:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89713,"name":"uint256","nodeType":"ElementaryTypeName","src":"10999:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10987:22:144"},"returnParameters":{"id":89718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89726,"src":"11033:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89716,"name":"uint256","nodeType":"ElementaryTypeName","src":"11033:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11032:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":89750,"nodeType":"FunctionDefinition","src":"11607:163:144","nodes":[],"body":{"id":89749,"nodeType":"Block","src":"11702:68:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89739,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89731,"src":"11720:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":89740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11725:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11720:6:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":89742,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89733,"src":"11728:12:144","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":89738,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11712:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11712:29:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89744,"nodeType":"ExpressionStatement","src":"11712:29:144"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":89747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89745,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89729,"src":"11758:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":89746,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89731,"src":"11762:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11758:5:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89737,"id":89748,"nodeType":"Return","src":"11751:12:144"}]},"documentation":{"id":89727,"nodeType":"StructuredDocumentation","src":"11109:493:144","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero.\n _Available since v2.4.0._"},"implemented":true,"kind":"function","modifiers":[],"name":"mod","nameLocation":"11616:3:144","parameters":{"id":89734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89729,"mutability":"mutable","name":"a","nameLocation":"11628:1:144","nodeType":"VariableDeclaration","scope":89750,"src":"11620:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89728,"name":"uint256","nodeType":"ElementaryTypeName","src":"11620:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89731,"mutability":"mutable","name":"b","nameLocation":"11639:1:144","nodeType":"VariableDeclaration","scope":89750,"src":"11631:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89730,"name":"uint256","nodeType":"ElementaryTypeName","src":"11631:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89733,"mutability":"mutable","name":"errorMessage","nameLocation":"11656:12:144","nodeType":"VariableDeclaration","scope":89750,"src":"11642:26:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":89732,"name":"string","nodeType":"ElementaryTypeName","src":"11642:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11619:50:144"},"returnParameters":{"id":89737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89750,"src":"11693:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89735,"name":"uint256","nodeType":"ElementaryTypeName","src":"11693:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11692:9:144"},"scope":89751,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SafeMath","contractDependencies":[],"contractKind":"library","documentation":{"id":89558,"nodeType":"StructuredDocumentation","src":"6500:563:144","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"linearizedBaseContracts":[89751],"name":"SafeMath","nameLocation":"7072:8:144","scope":91279,"usedErrors":[]},{"id":90173,"nodeType":"ContractDefinition","src":"12991:7005:144","nodes":[{"id":89759,"nodeType":"UsingForDirective","src":"13031:27:144","nodes":[],"global":false,"libraryName":{"id":89757,"name":"SafeMath","nodeType":"IdentifierPath","referencedDeclaration":89751,"src":"13037:8:144"},"typeName":{"id":89758,"name":"uint256","nodeType":"ElementaryTypeName","src":"13050:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":89763,"nodeType":"VariableDeclaration","src":"13064:45:144","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"13100:9:144","scope":90173,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":89762,"keyType":{"id":89760,"name":"address","nodeType":"ElementaryTypeName","src":"13072:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"13064:27:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":89761,"name":"uint256","nodeType":"ElementaryTypeName","src":"13083:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":89769,"nodeType":"VariableDeclaration","src":"13116:67:144","nodes":[],"constant":false,"mutability":"mutable","name":"_allowances","nameLocation":"13172:11:144","scope":90173,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":89768,"keyType":{"id":89764,"name":"address","nodeType":"ElementaryTypeName","src":"13124:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"13116:47:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":89767,"keyType":{"id":89765,"name":"address","nodeType":"ElementaryTypeName","src":"13143:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"13135:27:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":89766,"name":"uint256","nodeType":"ElementaryTypeName","src":"13154:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"id":89771,"nodeType":"VariableDeclaration","src":"13190:28:144","nodes":[],"constant":false,"mutability":"mutable","name":"_totalSupply","nameLocation":"13206:12:144","scope":90173,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89770,"name":"uint256","nodeType":"ElementaryTypeName","src":"13190:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":89780,"nodeType":"FunctionDefinition","src":"13279:89:144","nodes":[],"body":{"id":89779,"nodeType":"Block","src":"13332:36:144","nodes":[],"statements":[{"expression":{"id":89777,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89771,"src":"13349:12:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89776,"id":89778,"nodeType":"Return","src":"13342:19:144"}]},"baseFunctions":[89488],"documentation":{"id":89772,"nodeType":"StructuredDocumentation","src":"13225:49:144","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"13288:11:144","parameters":{"id":89773,"nodeType":"ParameterList","parameters":[],"src":"13299:2:144"},"returnParameters":{"id":89776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89780,"src":"13323:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89774,"name":"uint256","nodeType":"ElementaryTypeName","src":"13323:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13322:9:144"},"scope":90173,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":89793,"nodeType":"FunctionDefinition","src":"13426:108:144","nodes":[],"body":{"id":89792,"nodeType":"Block","src":"13492:42:144","nodes":[],"statements":[{"expression":{"baseExpression":{"id":89788,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"13509:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89790,"indexExpression":{"id":89789,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89783,"src":"13519:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13509:18:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89787,"id":89791,"nodeType":"Return","src":"13502:25:144"}]},"baseFunctions":[89496],"documentation":{"id":89781,"nodeType":"StructuredDocumentation","src":"13374:47:144","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"13435:9:144","parameters":{"id":89784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89783,"mutability":"mutable","name":"account","nameLocation":"13453:7:144","nodeType":"VariableDeclaration","scope":89793,"src":"13445:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89782,"name":"address","nodeType":"ElementaryTypeName","src":"13445:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13444:17:144"},"returnParameters":{"id":89787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89793,"src":"13483:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89785,"name":"uint256","nodeType":"ElementaryTypeName","src":"13483:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13482:9:144"},"scope":90173,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":89813,"nodeType":"FunctionDefinition","src":"13737:155:144","nodes":[],"body":{"id":89812,"nodeType":"Block","src":"13812:80:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":89804,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"13832:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13832:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89806,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89796,"src":"13846:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89807,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89798,"src":"13857:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":89803,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90004,"src":"13822:9:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":89808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13822:42:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89809,"nodeType":"ExpressionStatement","src":"13822:42:144"},{"expression":{"hexValue":"74727565","id":89810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13881:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":89802,"id":89811,"nodeType":"Return","src":"13874:11:144"}]},"baseFunctions":[89506],"documentation":{"id":89794,"nodeType":"StructuredDocumentation","src":"13540:192:144","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"13746:8:144","parameters":{"id":89799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89796,"mutability":"mutable","name":"recipient","nameLocation":"13763:9:144","nodeType":"VariableDeclaration","scope":89813,"src":"13755:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89795,"name":"address","nodeType":"ElementaryTypeName","src":"13755:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89798,"mutability":"mutable","name":"amount","nameLocation":"13782:6:144","nodeType":"VariableDeclaration","scope":89813,"src":"13774:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89797,"name":"uint256","nodeType":"ElementaryTypeName","src":"13774:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13754:35:144"},"returnParameters":{"id":89802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89813,"src":"13806:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89800,"name":"bool","nodeType":"ElementaryTypeName","src":"13806:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13805:6:144"},"scope":90173,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89830,"nodeType":"FunctionDefinition","src":"13950:132:144","nodes":[],"body":{"id":89829,"nodeType":"Block","src":"14031:51:144","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":89823,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89769,"src":"14048:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":89825,"indexExpression":{"id":89824,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89816,"src":"14060:5:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14048:18:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89827,"indexExpression":{"id":89826,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89818,"src":"14067:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14048:27:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":89822,"id":89828,"nodeType":"Return","src":"14041:34:144"}]},"baseFunctions":[89516],"documentation":{"id":89814,"nodeType":"StructuredDocumentation","src":"13898:47:144","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"13959:9:144","parameters":{"id":89819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89816,"mutability":"mutable","name":"owner","nameLocation":"13977:5:144","nodeType":"VariableDeclaration","scope":89830,"src":"13969:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89815,"name":"address","nodeType":"ElementaryTypeName","src":"13969:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89818,"mutability":"mutable","name":"spender","nameLocation":"13992:7:144","nodeType":"VariableDeclaration","scope":89830,"src":"13984:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89817,"name":"address","nodeType":"ElementaryTypeName","src":"13984:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13968:32:144"},"returnParameters":{"id":89822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89830,"src":"14022:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89820,"name":"uint256","nodeType":"ElementaryTypeName","src":"14022:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14021:9:144"},"scope":90173,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":89850,"nodeType":"FunctionDefinition","src":"14220:149:144","nodes":[],"body":{"id":89849,"nodeType":"Block","src":"14292:77:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":89841,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"14311:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14311:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89843,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89833,"src":"14325:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89844,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89835,"src":"14334:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":89840,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90142,"src":"14302:8:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":89845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14302:39:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89846,"nodeType":"ExpressionStatement","src":"14302:39:144"},{"expression":{"hexValue":"74727565","id":89847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14358:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":89839,"id":89848,"nodeType":"Return","src":"14351:11:144"}]},"baseFunctions":[89526],"documentation":{"id":89831,"nodeType":"StructuredDocumentation","src":"14088:127:144","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"14229:7:144","parameters":{"id":89836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89833,"mutability":"mutable","name":"spender","nameLocation":"14245:7:144","nodeType":"VariableDeclaration","scope":89850,"src":"14237:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89832,"name":"address","nodeType":"ElementaryTypeName","src":"14237:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89835,"mutability":"mutable","name":"amount","nameLocation":"14262:6:144","nodeType":"VariableDeclaration","scope":89850,"src":"14254:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89834,"name":"uint256","nodeType":"ElementaryTypeName","src":"14254:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14236:33:144"},"returnParameters":{"id":89839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89850,"src":"14286:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89837,"name":"bool","nodeType":"ElementaryTypeName","src":"14286:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14285:6:144"},"scope":90173,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89887,"nodeType":"FunctionDefinition","src":"14827:354:144","nodes":[],"body":{"id":89886,"nodeType":"Block","src":"14930:251:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":89863,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89853,"src":"14950:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89864,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89855,"src":"14958:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89865,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89857,"src":"14969:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":89862,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90004,"src":"14940:9:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":89866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14940:36:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89867,"nodeType":"ExpressionStatement","src":"14940:36:144"},{"expression":{"arguments":[{"id":89869,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89853,"src":"15008:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":89870,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"15028:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15028:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":89879,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89857,"src":"15092:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365","id":89880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15100:42:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","typeString":"literal_string \"ERC20: transfer amount exceeds allowance\""},"value":"ERC20: transfer amount exceeds allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","typeString":"literal_string \"ERC20: transfer amount exceeds allowance\""}],"expression":{"baseExpression":{"baseExpression":{"id":89872,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89769,"src":"15054:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":89874,"indexExpression":{"id":89873,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89853,"src":"15066:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15054:19:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89877,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":89875,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"15074:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15074:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15054:33:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":89878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":89629,"src":"15054:37:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":89881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15054:89:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":89868,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90142,"src":"14986:8:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":89882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14986:167:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89883,"nodeType":"ExpressionStatement","src":"14986:167:144"},{"expression":{"hexValue":"74727565","id":89884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15170:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":89861,"id":89885,"nodeType":"Return","src":"15163:11:144"}]},"baseFunctions":[89538],"documentation":{"id":89851,"nodeType":"StructuredDocumentation","src":"14375:447:144","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for `sender`'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"14836:12:144","parameters":{"id":89858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89853,"mutability":"mutable","name":"sender","nameLocation":"14857:6:144","nodeType":"VariableDeclaration","scope":89887,"src":"14849:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89852,"name":"address","nodeType":"ElementaryTypeName","src":"14849:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89855,"mutability":"mutable","name":"recipient","nameLocation":"14873:9:144","nodeType":"VariableDeclaration","scope":89887,"src":"14865:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89854,"name":"address","nodeType":"ElementaryTypeName","src":"14865:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89857,"mutability":"mutable","name":"amount","nameLocation":"14892:6:144","nodeType":"VariableDeclaration","scope":89887,"src":"14884:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89856,"name":"uint256","nodeType":"ElementaryTypeName","src":"14884:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14848:51:144"},"returnParameters":{"id":89861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89887,"src":"14924:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89859,"name":"bool","nodeType":"ElementaryTypeName","src":"14924:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14923:6:144"},"scope":90173,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":89915,"nodeType":"FunctionDefinition","src":"15576:215:144","nodes":[],"body":{"id":89914,"nodeType":"Block","src":"15670:121:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":89898,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"15689:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15689:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89900,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89890,"src":"15703:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":89908,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89892,"src":"15751:10:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":89901,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89769,"src":"15712:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":89904,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":89902,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"15724:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15724:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15712:25:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89906,"indexExpression":{"id":89905,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89890,"src":"15738:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15712:34:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":89907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":89584,"src":"15712:38:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":89909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15712:50:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":89897,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90142,"src":"15680:8:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":89910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15680:83:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89911,"nodeType":"ExpressionStatement","src":"15680:83:144"},{"expression":{"hexValue":"74727565","id":89912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15780:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":89896,"id":89913,"nodeType":"Return","src":"15773:11:144"}]},"documentation":{"id":89888,"nodeType":"StructuredDocumentation","src":"15187:384:144","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"15585:17:144","parameters":{"id":89893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89890,"mutability":"mutable","name":"spender","nameLocation":"15611:7:144","nodeType":"VariableDeclaration","scope":89915,"src":"15603:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89889,"name":"address","nodeType":"ElementaryTypeName","src":"15603:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89892,"mutability":"mutable","name":"addedValue","nameLocation":"15628:10:144","nodeType":"VariableDeclaration","scope":89915,"src":"15620:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89891,"name":"uint256","nodeType":"ElementaryTypeName","src":"15620:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15602:37:144"},"returnParameters":{"id":89896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89895,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89915,"src":"15664:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89894,"name":"bool","nodeType":"ElementaryTypeName","src":"15664:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15663:6:144"},"scope":90173,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":89944,"nodeType":"FunctionDefinition","src":"16278:304:144","nodes":[],"body":{"id":89943,"nodeType":"Block","src":"16369:213:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":89926,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"16401:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16401:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89928,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89918,"src":"16427:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":89936,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89920,"src":"16487:15:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":89937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16504:39:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"expression":{"baseExpression":{"baseExpression":{"id":89929,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89769,"src":"16448:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":89932,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":89930,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"16460:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16460:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16448:25:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89934,"indexExpression":{"id":89933,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89918,"src":"16474:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16448:34:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":89935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":89629,"src":"16448:38:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":89938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16448:96:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":89925,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90142,"src":"16379:8:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":89939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16379:175:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89940,"nodeType":"ExpressionStatement","src":"16379:175:144"},{"expression":{"hexValue":"74727565","id":89941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16571:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":89924,"id":89942,"nodeType":"Return","src":"16564:11:144"}]},"documentation":{"id":89916,"nodeType":"StructuredDocumentation","src":"15797:476:144","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"16287:17:144","parameters":{"id":89921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89918,"mutability":"mutable","name":"spender","nameLocation":"16313:7:144","nodeType":"VariableDeclaration","scope":89944,"src":"16305:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89917,"name":"address","nodeType":"ElementaryTypeName","src":"16305:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89920,"mutability":"mutable","name":"subtractedValue","nameLocation":"16330:15:144","nodeType":"VariableDeclaration","scope":89944,"src":"16322:23:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89919,"name":"uint256","nodeType":"ElementaryTypeName","src":"16322:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16304:42:144"},"returnParameters":{"id":89924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89944,"src":"16363:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89922,"name":"bool","nodeType":"ElementaryTypeName","src":"16363:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16362:6:144"},"scope":90173,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90004,"nodeType":"FunctionDefinition","src":"17056:472:144","nodes":[],"body":{"id":90003,"nodeType":"Block","src":"17143:385:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":89960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89955,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89947,"src":"17161:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":89958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17179:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17171:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89956,"name":"address","nodeType":"ElementaryTypeName","src":"17171:7:144","typeDescriptions":{}}},"id":89959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17171:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17161:20:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":89961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17183:39:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":89954,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17153:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17153:70:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89963,"nodeType":"ExpressionStatement","src":"17153:70:144"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":89970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89965,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89949,"src":"17241:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":89968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17262:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17254:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89966,"name":"address","nodeType":"ElementaryTypeName","src":"17254:7:144","typeDescriptions":{}}},"id":89969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17254:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17241:23:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":89971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17266:37:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":89964,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17233:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17233:71:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89973,"nodeType":"ExpressionStatement","src":"17233:71:144"},{"expression":{"id":89984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":89974,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"17315:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89976,"indexExpression":{"id":89975,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89947,"src":"17325:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17315:17:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":89981,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89951,"src":"17357:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":89982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17365:40:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"expression":{"baseExpression":{"id":89977,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"17335:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89979,"indexExpression":{"id":89978,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89947,"src":"17345:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17335:17:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":89980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":89629,"src":"17335:21:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":89983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17335:71:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17315:91:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":89985,"nodeType":"ExpressionStatement","src":"17315:91:144"},{"expression":{"id":89995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":89986,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"17416:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89988,"indexExpression":{"id":89987,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89949,"src":"17426:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17416:20:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":89993,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89951,"src":"17464:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":89989,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"17439:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":89991,"indexExpression":{"id":89990,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89949,"src":"17449:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17439:20:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":89992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":89584,"src":"17439:24:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":89994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17439:32:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17416:55:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":89996,"nodeType":"ExpressionStatement","src":"17416:55:144"},{"eventCall":{"arguments":[{"id":89998,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89947,"src":"17495:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89999,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89949,"src":"17503:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90000,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89951,"src":"17514:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":89997,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89547,"src":"17486:8:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":90001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17486:35:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90002,"nodeType":"EmitStatement","src":"17481:40:144"}]},"documentation":{"id":89945,"nodeType":"StructuredDocumentation","src":"16588:463:144","text":" @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"17065:9:144","parameters":{"id":89952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89947,"mutability":"mutable","name":"sender","nameLocation":"17083:6:144","nodeType":"VariableDeclaration","scope":90004,"src":"17075:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89946,"name":"address","nodeType":"ElementaryTypeName","src":"17075:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89949,"mutability":"mutable","name":"recipient","nameLocation":"17099:9:144","nodeType":"VariableDeclaration","scope":90004,"src":"17091:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89948,"name":"address","nodeType":"ElementaryTypeName","src":"17091:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89951,"mutability":"mutable","name":"amount","nameLocation":"17118:6:144","nodeType":"VariableDeclaration","scope":90004,"src":"17110:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89950,"name":"uint256","nodeType":"ElementaryTypeName","src":"17110:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17074:51:144"},"returnParameters":{"id":89953,"nodeType":"ParameterList","parameters":[],"src":"17143:0:144"},"scope":90173,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":90050,"nodeType":"FunctionDefinition","src":"17805:310:144","nodes":[],"body":{"id":90049,"nodeType":"Block","src":"17870:245:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90013,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90007,"src":"17888:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":90016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17907:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17899:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90014,"name":"address","nodeType":"ElementaryTypeName","src":"17899:7:144","typeDescriptions":{}}},"id":90017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17899:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17888:21:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":90019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17911:33:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":90012,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17880:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17880:65:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90021,"nodeType":"ExpressionStatement","src":"17880:65:144"},{"expression":{"id":90027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90022,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89771,"src":"17956:12:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":90025,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90009,"src":"17988:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":90023,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89771,"src":"17971:12:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":89584,"src":"17971:16:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":90026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17971:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17956:39:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90028,"nodeType":"ExpressionStatement","src":"17956:39:144"},{"expression":{"id":90038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":90029,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"18005:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":90031,"indexExpression":{"id":90030,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90007,"src":"18015:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18005:18:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":90036,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90009,"src":"18049:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":90032,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"18026:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":90034,"indexExpression":{"id":90033,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90007,"src":"18036:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18026:18:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":89584,"src":"18026:22:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":90037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18026:30:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18005:51:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90039,"nodeType":"ExpressionStatement","src":"18005:51:144"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":90043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18088:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18080:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90041,"name":"address","nodeType":"ElementaryTypeName","src":"18080:7:144","typeDescriptions":{}}},"id":90044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18080:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90045,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90007,"src":"18092:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90046,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90009,"src":"18101:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":90040,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89547,"src":"18071:8:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":90047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18071:37:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90048,"nodeType":"EmitStatement","src":"18066:42:144"}]},"documentation":{"id":90005,"nodeType":"StructuredDocumentation","src":"17534:266:144","text":" @dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"17814:5:144","parameters":{"id":90010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90007,"mutability":"mutable","name":"account","nameLocation":"17828:7:144","nodeType":"VariableDeclaration","scope":90050,"src":"17820:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90006,"name":"address","nodeType":"ElementaryTypeName","src":"17820:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90009,"mutability":"mutable","name":"amount","nameLocation":"17845:6:144","nodeType":"VariableDeclaration","scope":90050,"src":"17837:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90008,"name":"uint256","nodeType":"ElementaryTypeName","src":"17837:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17819:33:144"},"returnParameters":{"id":90011,"nodeType":"ParameterList","parameters":[],"src":"17870:0:144"},"scope":90173,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":90097,"nodeType":"FunctionDefinition","src":"18434:350:144","nodes":[],"body":{"id":90096,"nodeType":"Block","src":"18499:285:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90059,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90053,"src":"18517:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":90062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18536:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18528:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90060,"name":"address","nodeType":"ElementaryTypeName","src":"18528:7:144","typeDescriptions":{}}},"id":90063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18528:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18517:21:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":90065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18540:35:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":90058,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18509:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18509:67:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90067,"nodeType":"ExpressionStatement","src":"18509:67:144"},{"expression":{"id":90078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":90068,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"18587:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":90070,"indexExpression":{"id":90069,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90053,"src":"18597:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18587:18:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":90075,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90055,"src":"18631:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":90076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18639:36:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"expression":{"baseExpression":{"id":90071,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89763,"src":"18608:9:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":90073,"indexExpression":{"id":90072,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90053,"src":"18618:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18608:18:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":89629,"src":"18608:22:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":90077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18608:68:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18587:89:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90079,"nodeType":"ExpressionStatement","src":"18587:89:144"},{"expression":{"id":90085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90080,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89771,"src":"18686:12:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":90083,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90055,"src":"18718:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":90081,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89771,"src":"18701:12:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":89601,"src":"18701:16:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":90084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18701:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18686:39:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90086,"nodeType":"ExpressionStatement","src":"18686:39:144"},{"eventCall":{"arguments":[{"id":90088,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90053,"src":"18749:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":90091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18766:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18758:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90089,"name":"address","nodeType":"ElementaryTypeName","src":"18758:7:144","typeDescriptions":{}}},"id":90092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18758:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90093,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90055,"src":"18770:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":90087,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89547,"src":"18740:8:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":90094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18740:37:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90095,"nodeType":"EmitStatement","src":"18735:42:144"}]},"documentation":{"id":90051,"nodeType":"StructuredDocumentation","src":"18121:308:144","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"18443:5:144","parameters":{"id":90056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90053,"mutability":"mutable","name":"account","nameLocation":"18457:7:144","nodeType":"VariableDeclaration","scope":90097,"src":"18449:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90052,"name":"address","nodeType":"ElementaryTypeName","src":"18449:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90055,"mutability":"mutable","name":"amount","nameLocation":"18474:6:144","nodeType":"VariableDeclaration","scope":90097,"src":"18466:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90054,"name":"uint256","nodeType":"ElementaryTypeName","src":"18466:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18448:33:144"},"returnParameters":{"id":90057,"nodeType":"ParameterList","parameters":[],"src":"18499:0:144"},"scope":90173,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":90142,"nodeType":"FunctionDefinition","src":"19209:332:144","nodes":[],"body":{"id":90141,"nodeType":"Block","src":"19284:257:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90108,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90100,"src":"19302:5:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":90111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19319:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19311:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90109,"name":"address","nodeType":"ElementaryTypeName","src":"19311:7:144","typeDescriptions":{}}},"id":90112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19311:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19302:19:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":90114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19323:38:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":90107,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19294:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19294:68:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90116,"nodeType":"ExpressionStatement","src":"19294:68:144"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90118,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90102,"src":"19380:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":90121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19399:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19391:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90119,"name":"address","nodeType":"ElementaryTypeName","src":"19391:7:144","typeDescriptions":{}}},"id":90122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19391:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19380:21:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":90124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19403:36:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":90117,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19372:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19372:68:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90126,"nodeType":"ExpressionStatement","src":"19372:68:144"},{"expression":{"id":90133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":90127,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89769,"src":"19451:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":90130,"indexExpression":{"id":90128,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90100,"src":"19463:5:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19451:18:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":90131,"indexExpression":{"id":90129,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90102,"src":"19470:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19451:27:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":90132,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90104,"src":"19481:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19451:36:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90134,"nodeType":"ExpressionStatement","src":"19451:36:144"},{"eventCall":{"arguments":[{"id":90136,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90100,"src":"19511:5:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90137,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90102,"src":"19518:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90138,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90104,"src":"19527:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":90135,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89556,"src":"19502:8:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":90139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19502:32:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90140,"nodeType":"EmitStatement","src":"19497:37:144"}]},"documentation":{"id":90098,"nodeType":"StructuredDocumentation","src":"18790:414:144","text":" @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"19218:8:144","parameters":{"id":90105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90100,"mutability":"mutable","name":"owner","nameLocation":"19235:5:144","nodeType":"VariableDeclaration","scope":90142,"src":"19227:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90099,"name":"address","nodeType":"ElementaryTypeName","src":"19227:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90102,"mutability":"mutable","name":"spender","nameLocation":"19250:7:144","nodeType":"VariableDeclaration","scope":90142,"src":"19242:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90101,"name":"address","nodeType":"ElementaryTypeName","src":"19242:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90104,"mutability":"mutable","name":"amount","nameLocation":"19267:6:144","nodeType":"VariableDeclaration","scope":90142,"src":"19259:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90103,"name":"uint256","nodeType":"ElementaryTypeName","src":"19259:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19226:48:144"},"returnParameters":{"id":90106,"nodeType":"ParameterList","parameters":[],"src":"19284:0:144"},"scope":90173,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":90172,"nodeType":"FunctionDefinition","src":"19719:275:144","nodes":[],"body":{"id":90171,"nodeType":"Block","src":"19780:214:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90151,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90145,"src":"19796:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90152,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90147,"src":"19805:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":90150,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90097,"src":"19790:5:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":90153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19790:22:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90154,"nodeType":"ExpressionStatement","src":"19790:22:144"},{"expression":{"arguments":[{"id":90156,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90145,"src":"19844:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":90157,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"19865:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":90158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19865:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":90166,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90147,"src":"19930:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365","id":90167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19938:38:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db","typeString":"literal_string \"ERC20: burn amount exceeds allowance\""},"value":"ERC20: burn amount exceeds allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db","typeString":"literal_string \"ERC20: burn amount exceeds allowance\""}],"expression":{"baseExpression":{"baseExpression":{"id":90159,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89769,"src":"19891:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":90161,"indexExpression":{"id":90160,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90145,"src":"19903:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19891:20:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":90164,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":90162,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"19912:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":90163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19912:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19891:34:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":89629,"src":"19891:38:144","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":90168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19891:86:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":90155,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90142,"src":"19822:8:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":90169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19822:165:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90170,"nodeType":"ExpressionStatement","src":"19822:165:144"}]},"documentation":{"id":90143,"nodeType":"StructuredDocumentation","src":"19547:167:144","text":" @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n from the caller's allowance.\n See {_burn} and {_approve}."},"implemented":true,"kind":"function","modifiers":[],"name":"_burnFrom","nameLocation":"19728:9:144","parameters":{"id":90148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90145,"mutability":"mutable","name":"account","nameLocation":"19746:7:144","nodeType":"VariableDeclaration","scope":90172,"src":"19738:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90144,"name":"address","nodeType":"ElementaryTypeName","src":"19738:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90147,"mutability":"mutable","name":"amount","nameLocation":"19763:6:144","nodeType":"VariableDeclaration","scope":90172,"src":"19755:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90146,"name":"uint256","nodeType":"ElementaryTypeName","src":"19755:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19737:33:144"},"returnParameters":{"id":90149,"nodeType":"ParameterList","parameters":[],"src":"19780:0:144"},"scope":90173,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":89753,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":89354,"src":"13009:7:144"},"id":89754,"nodeType":"InheritanceSpecifier","src":"13009:7:144"},{"baseName":{"id":89755,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":89557,"src":"13018:6:144"},"id":89756,"nodeType":"InheritanceSpecifier","src":"13018:6:144"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":89752,"nodeType":"StructuredDocumentation","src":"11838:1152:144","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20Mintable}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"linearizedBaseContracts":[90173,89557,89354],"name":"ERC20","nameLocation":"13000:5:144","scope":91279,"usedErrors":[]},{"id":90260,"nodeType":"ContractDefinition","src":"20140:872:144","nodes":[{"id":90179,"nodeType":"StructDefinition","src":"20160:60:144","nodes":[],"canonicalName":"Roles.Role","members":[{"constant":false,"id":90178,"mutability":"mutable","name":"bearer","nameLocation":"20207:6:144","nodeType":"VariableDeclaration","scope":90179,"src":"20182:31:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":90177,"keyType":{"id":90175,"name":"address","nodeType":"ElementaryTypeName","src":"20190:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"20182:24:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":90176,"name":"bool","nodeType":"ElementaryTypeName","src":"20201:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"Role","nameLocation":"20167:4:144","scope":90260,"visibility":"public"},{"id":90206,"nodeType":"FunctionDefinition","src":"20291:175:144","nodes":[],"body":{"id":90205,"nodeType":"Block","src":"20349:117:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20367:19:144","subExpression":{"arguments":[{"id":90190,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90183,"src":"20372:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role storage pointer"}},{"id":90191,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90185,"src":"20378:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":90189,"name":"has","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90259,"src":"20368:3:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$90179_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":90192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20368:18:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526f6c65733a206163636f756e7420616c72656164792068617320726f6c65","id":90194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20388:33:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a","typeString":"literal_string \"Roles: account already has role\""},"value":"Roles: account already has role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a","typeString":"literal_string \"Roles: account already has role\""}],"id":90188,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20359:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20359:63:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90196,"nodeType":"ExpressionStatement","src":"20359:63:144"},{"expression":{"id":90203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":90197,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90183,"src":"20432:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role storage pointer"}},"id":90200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bearer","nodeType":"MemberAccess","referencedDeclaration":90178,"src":"20432:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":90201,"indexExpression":{"id":90199,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90185,"src":"20444:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20432:20:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":90202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20455:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"20432:27:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90204,"nodeType":"ExpressionStatement","src":"20432:27:144"}]},"documentation":{"id":90180,"nodeType":"StructuredDocumentation","src":"20226:60:144","text":" @dev Give an account access to this role."},"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"20300:3:144","parameters":{"id":90186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90183,"mutability":"mutable","name":"role","nameLocation":"20317:4:144","nodeType":"VariableDeclaration","scope":90206,"src":"20304:17:144","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"},"typeName":{"id":90182,"nodeType":"UserDefinedTypeName","pathNode":{"id":90181,"name":"Role","nodeType":"IdentifierPath","referencedDeclaration":90179,"src":"20304:4:144"},"referencedDeclaration":90179,"src":"20304:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"internal"},{"constant":false,"id":90185,"mutability":"mutable","name":"account","nameLocation":"20331:7:144","nodeType":"VariableDeclaration","scope":90206,"src":"20323:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90184,"name":"address","nodeType":"ElementaryTypeName","src":"20323:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20303:36:144"},"returnParameters":{"id":90187,"nodeType":"ParameterList","parameters":[],"src":"20349:0:144"},"scope":90260,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":90232,"nodeType":"FunctionDefinition","src":"20541:180:144","nodes":[],"body":{"id":90231,"nodeType":"Block","src":"20602:119:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":90217,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90210,"src":"20624:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role storage pointer"}},{"id":90218,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90212,"src":"20630:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":90216,"name":"has","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90259,"src":"20620:3:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$90179_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":90219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20620:18:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65","id":90220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20640:35:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257","typeString":"literal_string \"Roles: account does not have role\""},"value":"Roles: account does not have role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257","typeString":"literal_string \"Roles: account does not have role\""}],"id":90215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20612:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20612:64:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90222,"nodeType":"ExpressionStatement","src":"20612:64:144"},{"expression":{"id":90229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":90223,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90210,"src":"20686:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role storage pointer"}},"id":90226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bearer","nodeType":"MemberAccess","referencedDeclaration":90178,"src":"20686:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":90227,"indexExpression":{"id":90225,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90212,"src":"20698:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20686:20:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":90228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20709:5:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"20686:28:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90230,"nodeType":"ExpressionStatement","src":"20686:28:144"}]},"documentation":{"id":90207,"nodeType":"StructuredDocumentation","src":"20472:64:144","text":" @dev Remove an account's access to this role."},"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"20550:6:144","parameters":{"id":90213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90210,"mutability":"mutable","name":"role","nameLocation":"20570:4:144","nodeType":"VariableDeclaration","scope":90232,"src":"20557:17:144","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"},"typeName":{"id":90209,"nodeType":"UserDefinedTypeName","pathNode":{"id":90208,"name":"Role","nodeType":"IdentifierPath","referencedDeclaration":90179,"src":"20557:4:144"},"referencedDeclaration":90179,"src":"20557:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"internal"},{"constant":false,"id":90212,"mutability":"mutable","name":"account","nameLocation":"20584:7:144","nodeType":"VariableDeclaration","scope":90232,"src":"20576:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90211,"name":"address","nodeType":"ElementaryTypeName","src":"20576:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20556:36:144"},"returnParameters":{"id":90214,"nodeType":"ParameterList","parameters":[],"src":"20602:0:144"},"scope":90260,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":90259,"nodeType":"FunctionDefinition","src":"20810:200:144","nodes":[],"body":{"id":90258,"nodeType":"Block","src":"20888:122:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90244,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90238,"src":"20906:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":90247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20925:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20917:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90245,"name":"address","nodeType":"ElementaryTypeName","src":"20917:7:144","typeDescriptions":{}}},"id":90248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20917:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20906:21:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373","id":90250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20929:36:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f","typeString":"literal_string \"Roles: account is the zero address\""},"value":"Roles: account is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f","typeString":"literal_string \"Roles: account is the zero address\""}],"id":90243,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20898:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20898:68:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90252,"nodeType":"ExpressionStatement","src":"20898:68:144"},{"expression":{"baseExpression":{"expression":{"id":90253,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90236,"src":"20983:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role storage pointer"}},"id":90254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bearer","nodeType":"MemberAccess","referencedDeclaration":90178,"src":"20983:11:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":90256,"indexExpression":{"id":90255,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90238,"src":"20995:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20983:20:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":90242,"id":90257,"nodeType":"Return","src":"20976:27:144"}]},"documentation":{"id":90233,"nodeType":"StructuredDocumentation","src":"20727:78:144","text":" @dev Check if an account has this role.\n @return bool"},"implemented":true,"kind":"function","modifiers":[],"name":"has","nameLocation":"20819:3:144","parameters":{"id":90239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90236,"mutability":"mutable","name":"role","nameLocation":"20836:4:144","nodeType":"VariableDeclaration","scope":90259,"src":"20823:17:144","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"},"typeName":{"id":90235,"nodeType":"UserDefinedTypeName","pathNode":{"id":90234,"name":"Role","nodeType":"IdentifierPath","referencedDeclaration":90179,"src":"20823:4:144"},"referencedDeclaration":90179,"src":"20823:4:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"internal"},{"constant":false,"id":90238,"mutability":"mutable","name":"account","nameLocation":"20850:7:144","nodeType":"VariableDeclaration","scope":90259,"src":"20842:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90237,"name":"address","nodeType":"ElementaryTypeName","src":"20842:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20822:36:144"},"returnParameters":{"id":90242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90241,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90259,"src":"20882:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90240,"name":"bool","nodeType":"ElementaryTypeName","src":"20882:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20881:6:144"},"scope":90260,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Roles","contractDependencies":[],"contractKind":"library","documentation":{"id":90174,"nodeType":"StructuredDocumentation","src":"20057:82:144","text":" @title Roles\n @dev Library for managing addresses assigned to a Role."},"fullyImplemented":true,"linearizedBaseContracts":[90260],"name":"Roles","nameLocation":"20148:5:144","scope":91279,"usedErrors":[]},{"id":90365,"nodeType":"ContractDefinition","src":"21084:949:144","nodes":[{"id":90266,"nodeType":"UsingForDirective","src":"21121:27:144","nodes":[],"global":false,"libraryName":{"id":90263,"name":"Roles","nodeType":"IdentifierPath","referencedDeclaration":90260,"src":"21127:5:144"},"typeName":{"id":90265,"nodeType":"UserDefinedTypeName","pathNode":{"id":90264,"name":"Roles.Role","nodeType":"IdentifierPath","referencedDeclaration":90179,"src":"21137:10:144"},"referencedDeclaration":90179,"src":"21137:10:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"}}},{"id":90270,"nodeType":"EventDefinition","src":"21154:43:144","nodes":[],"anonymous":false,"eventSelector":"6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6","name":"MinterAdded","nameLocation":"21160:11:144","parameters":{"id":90269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90268,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"21188:7:144","nodeType":"VariableDeclaration","scope":90270,"src":"21172:23:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90267,"name":"address","nodeType":"ElementaryTypeName","src":"21172:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21171:25:144"}},{"id":90274,"nodeType":"EventDefinition","src":"21202:45:144","nodes":[],"anonymous":false,"eventSelector":"e94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692","name":"MinterRemoved","nameLocation":"21208:13:144","parameters":{"id":90273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90272,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"21238:7:144","nodeType":"VariableDeclaration","scope":90274,"src":"21222:23:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90271,"name":"address","nodeType":"ElementaryTypeName","src":"21222:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21221:25:144"}},{"id":90277,"nodeType":"VariableDeclaration","src":"21253:27:144","nodes":[],"constant":false,"mutability":"mutable","name":"_minters","nameLocation":"21272:8:144","scope":90365,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage","typeString":"struct Roles.Role"},"typeName":{"id":90276,"nodeType":"UserDefinedTypeName","pathNode":{"id":90275,"name":"Roles.Role","nodeType":"IdentifierPath","referencedDeclaration":90179,"src":"21253:10:144"},"referencedDeclaration":90179,"src":"21253:10:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"private"},{"id":90286,"nodeType":"FunctionDefinition","src":"21287:55:144","nodes":[],"body":{"id":90285,"nodeType":"Block","src":"21301:41:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":90281,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"21322:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":90282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21322:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90280,"name":"_addMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90348,"src":"21311:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":90283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21311:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90284,"nodeType":"ExpressionStatement","src":"21311:24:144"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":90278,"nodeType":"ParameterList","parameters":[],"src":"21298:2:144"},"returnParameters":{"id":90279,"nodeType":"ParameterList","parameters":[],"src":"21301:0:144"},"scope":90365,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90298,"nodeType":"ModifierDefinition","src":"21348:133:144","nodes":[],"body":{"id":90297,"nodeType":"Block","src":"21370:111:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":90290,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"21397:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":90291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21397:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90289,"name":"isMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90311,"src":"21388:8:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":90292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21388:22:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65","id":90293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21412:50:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_79ecb50133735b20228dea9d08fe36a462bbc1350f591a146908848db91104cd","typeString":"literal_string \"MinterRole: caller does not have the Minter role\""},"value":"MinterRole: caller does not have the Minter role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_79ecb50133735b20228dea9d08fe36a462bbc1350f591a146908848db91104cd","typeString":"literal_string \"MinterRole: caller does not have the Minter role\""}],"id":90288,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"21380:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21380:83:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90295,"nodeType":"ExpressionStatement","src":"21380:83:144"},{"id":90296,"nodeType":"PlaceholderStatement","src":"21473:1:144"}]},"name":"onlyMinter","nameLocation":"21357:10:144","parameters":{"id":90287,"nodeType":"ParameterList","parameters":[],"src":"21367:2:144"},"virtual":false,"visibility":"internal"},{"id":90311,"nodeType":"FunctionDefinition","src":"21487:107:144","nodes":[],"body":{"id":90310,"nodeType":"Block","src":"21549:45:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90307,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90300,"src":"21579:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":90305,"name":"_minters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90277,"src":"21566:8:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage","typeString":"struct Roles.Role storage ref"}},"id":90306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":90259,"src":"21566:12:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$90179_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$90179_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":90308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21566:21:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":90304,"id":90309,"nodeType":"Return","src":"21559:28:144"}]},"functionSelector":"aa271e1a","implemented":true,"kind":"function","modifiers":[],"name":"isMinter","nameLocation":"21496:8:144","parameters":{"id":90301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90300,"mutability":"mutable","name":"account","nameLocation":"21513:7:144","nodeType":"VariableDeclaration","scope":90311,"src":"21505:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90299,"name":"address","nodeType":"ElementaryTypeName","src":"21505:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21504:17:144"},"returnParameters":{"id":90304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90311,"src":"21543:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90302,"name":"bool","nodeType":"ElementaryTypeName","src":"21543:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21542:6:144"},"scope":90365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":90323,"nodeType":"FunctionDefinition","src":"21600:90:144","nodes":[],"body":{"id":90322,"nodeType":"Block","src":"21654:36:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90319,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90313,"src":"21675:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90318,"name":"_addMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90348,"src":"21664:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":90320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21664:19:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90321,"nodeType":"ExpressionStatement","src":"21664:19:144"}]},"functionSelector":"983b2d56","implemented":true,"kind":"function","modifiers":[{"id":90316,"kind":"modifierInvocation","modifierName":{"id":90315,"name":"onlyMinter","nodeType":"IdentifierPath","referencedDeclaration":90298,"src":"21643:10:144"},"nodeType":"ModifierInvocation","src":"21643:10:144"}],"name":"addMinter","nameLocation":"21609:9:144","parameters":{"id":90314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90313,"mutability":"mutable","name":"account","nameLocation":"21627:7:144","nodeType":"VariableDeclaration","scope":90323,"src":"21619:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90312,"name":"address","nodeType":"ElementaryTypeName","src":"21619:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21618:17:144"},"returnParameters":{"id":90317,"nodeType":"ParameterList","parameters":[],"src":"21654:0:144"},"scope":90365,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90332,"nodeType":"FunctionDefinition","src":"21696:77:144","nodes":[],"body":{"id":90331,"nodeType":"Block","src":"21729:44:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":90327,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"21753:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":90328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21753:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90326,"name":"_removeMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90364,"src":"21739:13:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":90329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21739:27:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90330,"nodeType":"ExpressionStatement","src":"21739:27:144"}]},"functionSelector":"98650275","implemented":true,"kind":"function","modifiers":[],"name":"renounceMinter","nameLocation":"21705:14:144","parameters":{"id":90324,"nodeType":"ParameterList","parameters":[],"src":"21719:2:144"},"returnParameters":{"id":90325,"nodeType":"ParameterList","parameters":[],"src":"21729:0:144"},"scope":90365,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90348,"nodeType":"FunctionDefinition","src":"21779:119:144","nodes":[],"body":{"id":90347,"nodeType":"Block","src":"21825:73:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90340,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90334,"src":"21848:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":90337,"name":"_minters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90277,"src":"21835:8:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage","typeString":"struct Roles.Role storage ref"}},"id":90339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":90206,"src":"21835:12:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$90179_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$90179_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":90341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21835:21:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90342,"nodeType":"ExpressionStatement","src":"21835:21:144"},{"eventCall":{"arguments":[{"id":90344,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90334,"src":"21883:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90343,"name":"MinterAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90270,"src":"21871:11:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":90345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21871:20:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90346,"nodeType":"EmitStatement","src":"21866:25:144"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_addMinter","nameLocation":"21788:10:144","parameters":{"id":90335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90334,"mutability":"mutable","name":"account","nameLocation":"21807:7:144","nodeType":"VariableDeclaration","scope":90348,"src":"21799:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90333,"name":"address","nodeType":"ElementaryTypeName","src":"21799:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21798:17:144"},"returnParameters":{"id":90336,"nodeType":"ParameterList","parameters":[],"src":"21825:0:144"},"scope":90365,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":90364,"nodeType":"FunctionDefinition","src":"21904:127:144","nodes":[],"body":{"id":90363,"nodeType":"Block","src":"21953:78:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90356,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90350,"src":"21979:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":90353,"name":"_minters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90277,"src":"21963:8:144","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$90179_storage","typeString":"struct Roles.Role storage ref"}},"id":90355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":90232,"src":"21963:15:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$90179_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$90179_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":90357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21963:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90358,"nodeType":"ExpressionStatement","src":"21963:24:144"},{"eventCall":{"arguments":[{"id":90360,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90350,"src":"22016:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90359,"name":"MinterRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90274,"src":"22002:13:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":90361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22002:22:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90362,"nodeType":"EmitStatement","src":"21997:27:144"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeMinter","nameLocation":"21913:13:144","parameters":{"id":90351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90350,"mutability":"mutable","name":"account","nameLocation":"21935:7:144","nodeType":"VariableDeclaration","scope":90364,"src":"21927:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90349,"name":"address","nodeType":"ElementaryTypeName","src":"21927:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21926:17:144"},"returnParameters":{"id":90352,"nodeType":"ParameterList","parameters":[],"src":"21953:0:144"},"scope":90365,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":90261,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":89354,"src":"21107:7:144"},"id":90262,"nodeType":"InheritanceSpecifier","src":"21107:7:144"}],"canonicalName":"MinterRole","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[90365,89354],"name":"MinterRole","nameLocation":"21093:10:144","scope":91279,"usedErrors":[]},{"id":90391,"nodeType":"ContractDefinition","src":"22337:322:144","nodes":[{"id":90390,"nodeType":"FunctionDefinition","src":"22517:140:144","nodes":[],"body":{"id":90389,"nodeType":"Block","src":"22597:60:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90383,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90373,"src":"22613:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90384,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90375,"src":"22622:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":90382,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90050,"src":"22607:5:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":90385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22607:22:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90386,"nodeType":"ExpressionStatement","src":"22607:22:144"},{"expression":{"hexValue":"74727565","id":90387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22646:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":90381,"id":90388,"nodeType":"Return","src":"22639:11:144"}]},"documentation":{"id":90371,"nodeType":"StructuredDocumentation","src":"22387:125:144","text":" @dev See {ERC20-_mint}.\n Requirements:\n - the caller must have the {MinterRole}."},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":90378,"kind":"modifierInvocation","modifierName":{"id":90377,"name":"onlyMinter","nodeType":"IdentifierPath","referencedDeclaration":90298,"src":"22571:10:144"},"nodeType":"ModifierInvocation","src":"22571:10:144"}],"name":"mint","nameLocation":"22526:4:144","parameters":{"id":90376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90373,"mutability":"mutable","name":"account","nameLocation":"22539:7:144","nodeType":"VariableDeclaration","scope":90390,"src":"22531:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90372,"name":"address","nodeType":"ElementaryTypeName","src":"22531:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90375,"mutability":"mutable","name":"amount","nameLocation":"22556:6:144","nodeType":"VariableDeclaration","scope":90390,"src":"22548:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90374,"name":"uint256","nodeType":"ElementaryTypeName","src":"22548:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22530:33:144"},"returnParameters":{"id":90381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90390,"src":"22591:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90379,"name":"bool","nodeType":"ElementaryTypeName","src":"22591:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22590:6:144"},"scope":90391,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":90367,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":90173,"src":"22363:5:144"},"id":90368,"nodeType":"InheritanceSpecifier","src":"22363:5:144"},{"baseName":{"id":90369,"name":"MinterRole","nodeType":"IdentifierPath","referencedDeclaration":90365,"src":"22370:10:144"},"id":90370,"nodeType":"InheritanceSpecifier","src":"22370:10:144"}],"canonicalName":"ERC20Mintable","contractDependencies":[],"contractKind":"contract","documentation":{"id":90366,"nodeType":"StructuredDocumentation","src":"22107:229:144","text":" @dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},\n which have permission to mint (create) new tokens as they see fit.\n At construction, the deployer of the contract is the only minter."},"fullyImplemented":true,"linearizedBaseContracts":[90391,90365,90173,89557,89354],"name":"ERC20Mintable","nameLocation":"22346:13:144","scope":91279,"usedErrors":[]},{"id":90451,"nodeType":"ContractDefinition","src":"22793:1447:144","nodes":[{"id":90396,"nodeType":"VariableDeclaration","src":"22841:20:144","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"22856:5:144","scope":90451,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":90395,"name":"string","nodeType":"ElementaryTypeName","src":"22841:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":90398,"nodeType":"VariableDeclaration","src":"22867:22:144","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"22882:7:144","scope":90451,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":90397,"name":"string","nodeType":"ElementaryTypeName","src":"22867:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":90400,"nodeType":"VariableDeclaration","src":"22895:23:144","nodes":[],"constant":false,"mutability":"mutable","name":"_decimals","nameLocation":"22909:9:144","scope":90451,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":90399,"name":"uint8","nodeType":"ElementaryTypeName","src":"22895:5:144","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"id":90423,"nodeType":"FunctionDefinition","src":"23109:155:144","nodes":[],"body":{"id":90422,"nodeType":"Block","src":"23179:85:144","nodes":[],"statements":[{"expression":{"id":90412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90410,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90396,"src":"23189:5:144","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":90411,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90403,"src":"23197:4:144","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"23189:12:144","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":90413,"nodeType":"ExpressionStatement","src":"23189:12:144"},{"expression":{"id":90416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90414,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90398,"src":"23211:7:144","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":90415,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90405,"src":"23221:6:144","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"23211:16:144","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":90417,"nodeType":"ExpressionStatement","src":"23211:16:144"},{"expression":{"id":90420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90418,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90400,"src":"23237:9:144","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":90419,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90407,"src":"23249:8:144","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"23237:20:144","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":90421,"nodeType":"ExpressionStatement","src":"23237:20:144"}]},"documentation":{"id":90401,"nodeType":"StructuredDocumentation","src":"22925:179:144","text":" @dev Sets the values for `name`, `symbol`, and `decimals`. All three of\n these values are immutable: they can only be set once during\n construction."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":90408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90403,"mutability":"mutable","name":"name","nameLocation":"23135:4:144","nodeType":"VariableDeclaration","scope":90423,"src":"23121:18:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":90402,"name":"string","nodeType":"ElementaryTypeName","src":"23121:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":90405,"mutability":"mutable","name":"symbol","nameLocation":"23155:6:144","nodeType":"VariableDeclaration","scope":90423,"src":"23141:20:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":90404,"name":"string","nodeType":"ElementaryTypeName","src":"23141:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":90407,"mutability":"mutable","name":"decimals","nameLocation":"23169:8:144","nodeType":"VariableDeclaration","scope":90423,"src":"23163:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":90406,"name":"uint8","nodeType":"ElementaryTypeName","src":"23163:5:144","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"23120:58:144"},"returnParameters":{"id":90409,"nodeType":"ParameterList","parameters":[],"src":"23179:0:144"},"scope":90451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":90432,"nodeType":"FunctionDefinition","src":"23329:81:144","nodes":[],"body":{"id":90431,"nodeType":"Block","src":"23381:29:144","nodes":[],"statements":[{"expression":{"id":90429,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90396,"src":"23398:5:144","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":90428,"id":90430,"nodeType":"Return","src":"23391:12:144"}]},"documentation":{"id":90424,"nodeType":"StructuredDocumentation","src":"23270:54:144","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"23338:4:144","parameters":{"id":90425,"nodeType":"ParameterList","parameters":[],"src":"23342:2:144"},"returnParameters":{"id":90428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90432,"src":"23366:13:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":90426,"name":"string","nodeType":"ElementaryTypeName","src":"23366:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23365:15:144"},"scope":90451,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":90441,"nodeType":"FunctionDefinition","src":"23523:85:144","nodes":[],"body":{"id":90440,"nodeType":"Block","src":"23577:31:144","nodes":[],"statements":[{"expression":{"id":90438,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90398,"src":"23594:7:144","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":90437,"id":90439,"nodeType":"Return","src":"23587:14:144"}]},"documentation":{"id":90433,"nodeType":"StructuredDocumentation","src":"23416:102:144","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"23532:6:144","parameters":{"id":90434,"nodeType":"ParameterList","parameters":[],"src":"23538:2:144"},"returnParameters":{"id":90437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90441,"src":"23562:13:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":90435,"name":"string","nodeType":"ElementaryTypeName","src":"23562:6:144","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23561:15:144"},"scope":90451,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":90450,"nodeType":"FunctionDefinition","src":"24157:81:144","nodes":[],"body":{"id":90449,"nodeType":"Block","src":"24205:33:144","nodes":[],"statements":[{"expression":{"id":90447,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90400,"src":"24222:9:144","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":90446,"id":90448,"nodeType":"Return","src":"24215:16:144"}]},"documentation":{"id":90442,"nodeType":"StructuredDocumentation","src":"23614:538:144","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"24166:8:144","parameters":{"id":90443,"nodeType":"ParameterList","parameters":[],"src":"24174:2:144"},"returnParameters":{"id":90446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90445,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90450,"src":"24198:5:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":90444,"name":"uint8","nodeType":"ElementaryTypeName","src":"24198:5:144","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"24197:7:144"},"scope":90451,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":90393,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":89557,"src":"22828:6:144"},"id":90394,"nodeType":"InheritanceSpecifier","src":"22828:6:144"}],"canonicalName":"ERC20Detailed","contractDependencies":[],"contractKind":"contract","documentation":{"id":90392,"nodeType":"StructuredDocumentation","src":"22733:59:144","text":" @dev Optional functions from the ERC20 standard."},"fullyImplemented":false,"linearizedBaseContracts":[90451,89557],"name":"ERC20Detailed","nameLocation":"22811:13:144","scope":91279,"usedErrors":[]},{"id":90619,"nodeType":"ContractDefinition","src":"24594:4170:144","nodes":[{"id":90455,"nodeType":"VariableDeclaration","src":"24696:58:144","nodes":[],"constant":true,"mutability":"constant","name":"_INTERFACE_ID_INVALID","nameLocation":"24720:21:144","scope":90619,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90453,"name":"bytes4","nodeType":"ElementaryTypeName","src":"24696:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30786666666666666666","id":90454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24744:10:144","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"visibility":"private"},{"id":90458,"nodeType":"VariableDeclaration","src":"24844:57:144","nodes":[],"constant":true,"mutability":"constant","name":"_INTERFACE_ID_ERC165","nameLocation":"24868:20:144","scope":90619,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90456,"name":"bytes4","nodeType":"ElementaryTypeName","src":"24844:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783031666663396137","id":90457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:10:144","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"visibility":"private"},{"id":90478,"nodeType":"FunctionDefinition","src":"24996:395:144","nodes":[],"body":{"id":90477,"nodeType":"Block","src":"25067:324:144","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":90475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":90467,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90461,"src":"25281:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90468,"name":"_INTERFACE_ID_ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90458,"src":"25290:20:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90466,"name":"_supportsERC165Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90569,"src":"25256:24:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":90469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25256:55:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":90474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"25327:57:144","subExpression":{"arguments":[{"id":90471,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90461,"src":"25353:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90472,"name":"_INTERFACE_ID_INVALID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90455,"src":"25362:21:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90470,"name":"_supportsERC165Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90569,"src":"25328:24:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":90473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25328:56:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25256:128:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":90465,"id":90476,"nodeType":"Return","src":"25249:135:144"}]},"documentation":{"id":90459,"nodeType":"StructuredDocumentation","src":"24908:83:144","text":" @dev Returns true if `account` supports the {IERC165} interface,"},"implemented":true,"kind":"function","modifiers":[],"name":"_supportsERC165","nameLocation":"25005:15:144","parameters":{"id":90462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90461,"mutability":"mutable","name":"account","nameLocation":"25029:7:144","nodeType":"VariableDeclaration","scope":90478,"src":"25021:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90460,"name":"address","nodeType":"ElementaryTypeName","src":"25021:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25020:17:144"},"returnParameters":{"id":90465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90478,"src":"25061:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90463,"name":"bool","nodeType":"ElementaryTypeName","src":"25061:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25060:6:144"},"scope":90619,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":90498,"nodeType":"FunctionDefinition","src":"25609:276:144","nodes":[],"body":{"id":90497,"nodeType":"Block","src":"25703:182:144","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":90495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":90489,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90481,"src":"25820:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90488,"name":"_supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90478,"src":"25804:15:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":90490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25804:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":90492,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90481,"src":"25857:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90493,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90483,"src":"25866:11:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90491,"name":"_supportsERC165Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90569,"src":"25832:24:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":90494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25832:46:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25804:74:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":90487,"id":90496,"nodeType":"Return","src":"25797:81:144"}]},"documentation":{"id":90479,"nodeType":"StructuredDocumentation","src":"25397:207:144","text":" @dev Returns true if `account` supports the interface defined by\n `interfaceId`. Support for {IERC165} itself is queried automatically.\n See {IERC165-supportsInterface}."},"implemented":true,"kind":"function","modifiers":[],"name":"_supportsInterface","nameLocation":"25618:18:144","parameters":{"id":90484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90481,"mutability":"mutable","name":"account","nameLocation":"25645:7:144","nodeType":"VariableDeclaration","scope":90498,"src":"25637:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90480,"name":"address","nodeType":"ElementaryTypeName","src":"25637:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90483,"mutability":"mutable","name":"interfaceId","nameLocation":"25661:11:144","nodeType":"VariableDeclaration","scope":90498,"src":"25654:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90482,"name":"bytes4","nodeType":"ElementaryTypeName","src":"25654:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"25636:37:144"},"returnParameters":{"id":90487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90498,"src":"25697:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90485,"name":"bool","nodeType":"ElementaryTypeName","src":"25697:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25696:6:144"},"scope":90619,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":90544,"nodeType":"FunctionDefinition","src":"26220:538:144","nodes":[],"body":{"id":90543,"nodeType":"Block","src":"26328:430:144","nodes":[],"statements":[{"condition":{"id":90512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"26384:25:144","subExpression":{"arguments":[{"id":90510,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90501,"src":"26401:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90509,"name":"_supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90478,"src":"26385:15:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":90511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26385:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90516,"nodeType":"IfStatement","src":"26380:68:144","trueBody":{"id":90515,"nodeType":"Block","src":"26411:37:144","statements":[{"expression":{"hexValue":"66616c7365","id":90513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26432:5:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":90508,"id":90514,"nodeType":"Return","src":"26425:12:144"}]}},{"body":{"id":90539,"nodeType":"Block","src":"26568:126:144","statements":[{"condition":{"id":90534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"26586:51:144","subExpression":{"arguments":[{"id":90529,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90501,"src":"26612:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":90530,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90504,"src":"26621:12:144","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":90532,"indexExpression":{"id":90531,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90518,"src":"26634:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26621:15:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90528,"name":"_supportsERC165Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90569,"src":"26587:24:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":90533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26587:50:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90538,"nodeType":"IfStatement","src":"26582:102:144","trueBody":{"id":90537,"nodeType":"Block","src":"26639:45:144","statements":[{"expression":{"hexValue":"66616c7365","id":90535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26664:5:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":90508,"id":90536,"nodeType":"Return","src":"26657:12:144"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":90524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90521,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90518,"src":"26538:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":90522,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90504,"src":"26542:12:144","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":90523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"26542:19:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26538:23:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90540,"initializationExpression":{"assignments":[90518],"declarations":[{"constant":false,"id":90518,"mutability":"mutable","name":"i","nameLocation":"26531:1:144","nodeType":"VariableDeclaration","scope":90540,"src":"26523:9:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90517,"name":"uint256","nodeType":"ElementaryTypeName","src":"26523:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":90520,"initialValue":{"hexValue":"30","id":90519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26535:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26523:13:144"},"loopExpression":{"expression":{"id":90526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26563:3:144","subExpression":{"id":90525,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90518,"src":"26563:1:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":90527,"nodeType":"ExpressionStatement","src":"26563:3:144"},"nodeType":"ForStatement","src":"26518:176:144"},{"expression":{"hexValue":"74727565","id":90541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26747:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":90508,"id":90542,"nodeType":"Return","src":"26740:11:144"}]},"documentation":{"id":90499,"nodeType":"StructuredDocumentation","src":"25891:324:144","text":" @dev Returns true if `account` supports all the interfaces defined in\n `interfaceIds`. Support for {IERC165} itself is queried automatically.\n Batch-querying can lead to gas savings by skipping repeated checks for\n {IERC165} support.\n See {IERC165-supportsInterface}."},"implemented":true,"kind":"function","modifiers":[],"name":"_supportsAllInterfaces","nameLocation":"26229:22:144","parameters":{"id":90505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90501,"mutability":"mutable","name":"account","nameLocation":"26260:7:144","nodeType":"VariableDeclaration","scope":90544,"src":"26252:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90500,"name":"address","nodeType":"ElementaryTypeName","src":"26252:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90504,"mutability":"mutable","name":"interfaceIds","nameLocation":"26285:12:144","nodeType":"VariableDeclaration","scope":90544,"src":"26269:28:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":90502,"name":"bytes4","nodeType":"ElementaryTypeName","src":"26269:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":90503,"nodeType":"ArrayTypeName","src":"26269:8:144","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"26251:47:144"},"returnParameters":{"id":90508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90544,"src":"26322:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90506,"name":"bool","nodeType":"ElementaryTypeName","src":"26322:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"26321:6:144"},"scope":90619,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":90569,"nodeType":"FunctionDefinition","src":"27448:395:144","nodes":[],"body":{"id":90568,"nodeType":"Block","src":"27547:296:144","nodes":[],"statements":[{"assignments":[90555,90557],"declarations":[{"constant":false,"id":90555,"mutability":"mutable","name":"success","nameLocation":"27725:7:144","nodeType":"VariableDeclaration","scope":90568,"src":"27720:12:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90554,"name":"bool","nodeType":"ElementaryTypeName","src":"27720:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":90557,"mutability":"mutable","name":"result","nameLocation":"27739:6:144","nodeType":"VariableDeclaration","scope":90568,"src":"27734:11:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90556,"name":"bool","nodeType":"ElementaryTypeName","src":"27734:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":90562,"initialValue":{"arguments":[{"id":90559,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90547,"src":"27778:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90560,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90549,"src":"27787:11:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90558,"name":"_callERC165SupportsInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90618,"src":"27749:28:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$_t_bool_$","typeString":"function (address,bytes4) view returns (bool,bool)"}},"id":90561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27749:50:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"nodeType":"VariableDeclarationStatement","src":"27719:80:144"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":90565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90563,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90555,"src":"27818:7:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":90564,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90557,"src":"27829:6:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27818:17:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":90566,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27817:19:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":90553,"id":90567,"nodeType":"Return","src":"27810:26:144"}]},"documentation":{"id":90545,"nodeType":"StructuredDocumentation","src":"26764:679:144","text":" @notice Query if a contract implements an interface, does not check ERC165 support\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return true if the contract at account indicates support of the interface with\n identifier interfaceId, false otherwise\n @dev Assumes that account contains a contract that supports ERC165, otherwise\n the behavior of this method is undefined. This precondition can be checked\n with the `supportsERC165` method in this library.\n Interface identification is specified in ERC-165."},"implemented":true,"kind":"function","modifiers":[],"name":"_supportsERC165Interface","nameLocation":"27457:24:144","parameters":{"id":90550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90547,"mutability":"mutable","name":"account","nameLocation":"27490:7:144","nodeType":"VariableDeclaration","scope":90569,"src":"27482:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90546,"name":"address","nodeType":"ElementaryTypeName","src":"27482:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90549,"mutability":"mutable","name":"interfaceId","nameLocation":"27506:11:144","nodeType":"VariableDeclaration","scope":90569,"src":"27499:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90548,"name":"bytes4","nodeType":"ElementaryTypeName","src":"27499:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"27481:37:144"},"returnParameters":{"id":90553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90569,"src":"27541:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90551,"name":"bool","nodeType":"ElementaryTypeName","src":"27541:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"27540:6:144"},"scope":90619,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":90618,"nodeType":"FunctionDefinition","src":"28360:402:144","nodes":[],"body":{"id":90617,"nodeType":"Block","src":"28469:293:144","nodes":[],"statements":[{"assignments":[90582],"declarations":[{"constant":false,"id":90582,"mutability":"mutable","name":"encodedParams","nameLocation":"28492:13:144","nodeType":"VariableDeclaration","scope":90617,"src":"28479:26:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90581,"name":"bytes","nodeType":"ElementaryTypeName","src":"28479:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":90588,"initialValue":{"arguments":[{"id":90585,"name":"_INTERFACE_ID_ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90458,"src":"28531:20:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":90586,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90574,"src":"28553:11:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":90583,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"28508:3:144","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":90584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"28508:22:144","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":90587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28508:57:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"28479:86:144"},{"assignments":[90590,90592],"declarations":[{"constant":false,"id":90590,"mutability":"mutable","name":"success","nameLocation":"28581:7:144","nodeType":"VariableDeclaration","scope":90617,"src":"28576:12:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90589,"name":"bool","nodeType":"ElementaryTypeName","src":"28576:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":90592,"mutability":"mutable","name":"result","nameLocation":"28603:6:144","nodeType":"VariableDeclaration","scope":90617,"src":"28590:19:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90591,"name":"bytes","nodeType":"ElementaryTypeName","src":"28590:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":90597,"initialValue":{"arguments":[{"id":90595,"name":"encodedParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90582,"src":"28632:13:144","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":90593,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90572,"src":"28613:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":90594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"28613:18:144","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":90596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28613:33:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"28575:71:144"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":90601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":90598,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90592,"src":"28660:6:144","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":90599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"28660:13:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":90600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28676:2:144","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"28660:18:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90606,"nodeType":"IfStatement","src":"28656:45:144","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":90602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28688:5:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":90603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28695:5:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":90604,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28687:14:144","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"functionReturnParameters":90580,"id":90605,"nodeType":"Return","src":"28680:21:144"}},{"expression":{"components":[{"id":90607,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90590,"src":"28719:7:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":90610,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90592,"src":"28739:6:144","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":90612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28748:4:144","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":90611,"name":"bool","nodeType":"ElementaryTypeName","src":"28748:4:144","typeDescriptions":{}}}],"id":90613,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28747:6:144","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":90608,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"28728:3:144","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":90609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"28728:10:144","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":90614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28728:26:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":90615,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28718:37:144","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"functionReturnParameters":90580,"id":90616,"nodeType":"Return","src":"28711:44:144"}]},"documentation":{"id":90570,"nodeType":"StructuredDocumentation","src":"27849:506:144","text":" @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return success true if the STATICCALL succeeded, false otherwise\n @return result true if the STATICCALL succeeded and the contract at account\n indicates support of the interface with identifier interfaceId, false otherwise"},"implemented":true,"kind":"function","modifiers":[],"name":"_callERC165SupportsInterface","nameLocation":"28369:28:144","parameters":{"id":90575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90572,"mutability":"mutable","name":"account","nameLocation":"28406:7:144","nodeType":"VariableDeclaration","scope":90618,"src":"28398:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90571,"name":"address","nodeType":"ElementaryTypeName","src":"28398:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90574,"mutability":"mutable","name":"interfaceId","nameLocation":"28422:11:144","nodeType":"VariableDeclaration","scope":90618,"src":"28415:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90573,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28415:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28397:37:144"},"returnParameters":{"id":90580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90618,"src":"28457:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90576,"name":"bool","nodeType":"ElementaryTypeName","src":"28457:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":90579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90618,"src":"28463:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90578,"name":"bool","nodeType":"ElementaryTypeName","src":"28463:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28456:12:144"},"scope":90619,"stateMutability":"view","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"ERC165Checker","contractDependencies":[],"contractKind":"library","documentation":{"id":90452,"nodeType":"StructuredDocumentation","src":"24316:277:144","text":" @dev Library used to query support of an interface declared via {IERC165}.\n Note that these functions return the actual result of the query: they do not\n `revert` if an interface is not supported. It is up to the caller to decide\n what to do in these cases."},"fullyImplemented":true,"linearizedBaseContracts":[90619],"name":"ERC165Checker","nameLocation":"24602:13:144","scope":91279,"usedErrors":[]},{"id":90781,"nodeType":"ContractDefinition","src":"28820:1877:144","nodes":[{"id":90624,"nodeType":"FunctionDefinition","src":"28849:52:144","nodes":[],"functionSelector":"7b103999","implemented":false,"kind":"function","modifiers":[],"name":"registry","nameLocation":"28858:8:144","parameters":{"id":90620,"nodeType":"ParameterList","parameters":[],"src":"28866:2:144"},"returnParameters":{"id":90623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90624,"src":"28892:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90621,"name":"address","nodeType":"ElementaryTypeName","src":"28892:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28891:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90629,"nodeType":"FunctionDefinition","src":"28906:58:144","nodes":[],"functionSelector":"6c7ac9d8","implemented":false,"kind":"function","modifiers":[],"name":"depositManager","nameLocation":"28915:14:144","parameters":{"id":90625,"nodeType":"ParameterList","parameters":[],"src":"28929:2:144"},"returnParameters":{"id":90628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90629,"src":"28955:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90626,"name":"address","nodeType":"ElementaryTypeName","src":"28955:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28954:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90634,"nodeType":"FunctionDefinition","src":"28969:47:144","nodes":[],"functionSelector":"cc48b947","implemented":false,"kind":"function","modifiers":[],"name":"ton","nameLocation":"28978:3:144","parameters":{"id":90630,"nodeType":"ParameterList","parameters":[],"src":"28981:2:144"},"returnParameters":{"id":90633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90634,"src":"29007:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90631,"name":"address","nodeType":"ElementaryTypeName","src":"29007:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29006:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90639,"nodeType":"FunctionDefinition","src":"29021:48:144","nodes":[],"functionSelector":"8d62d949","implemented":false,"kind":"function","modifiers":[],"name":"wton","nameLocation":"29030:4:144","parameters":{"id":90635,"nodeType":"ParameterList","parameters":[],"src":"29034:2:144"},"returnParameters":{"id":90638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90637,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90639,"src":"29060:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90636,"name":"address","nodeType":"ElementaryTypeName","src":"29060:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29059:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90644,"nodeType":"FunctionDefinition","src":"29074:52:144","nodes":[],"functionSelector":"3e832e1d","implemented":false,"kind":"function","modifiers":[],"name":"powerton","nameLocation":"29083:8:144","parameters":{"id":90640,"nodeType":"ParameterList","parameters":[],"src":"29091:2:144"},"returnParameters":{"id":90643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90642,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90644,"src":"29117:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90641,"name":"address","nodeType":"ElementaryTypeName","src":"29117:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29116:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90649,"nodeType":"FunctionDefinition","src":"29131:47:144","nodes":[],"functionSelector":"a16d6aa7","implemented":false,"kind":"function","modifiers":[],"name":"tot","nameLocation":"29140:3:144","parameters":{"id":90645,"nodeType":"ParameterList","parameters":[],"src":"29143:2:144"},"returnParameters":{"id":90648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90647,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90649,"src":"29169:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90646,"name":"address","nodeType":"ElementaryTypeName","src":"29169:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29168:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90656,"nodeType":"FunctionDefinition","src":"29183:69:144","nodes":[],"functionSelector":"4c063c19","implemented":false,"kind":"function","modifiers":[],"name":"coinages","nameLocation":"29192:8:144","parameters":{"id":90652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90651,"mutability":"mutable","name":"rootchain","nameLocation":"29209:9:144","nodeType":"VariableDeclaration","scope":90656,"src":"29201:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90650,"name":"address","nodeType":"ElementaryTypeName","src":"29201:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29200:19:144"},"returnParameters":{"id":90655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90656,"src":"29243:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90653,"name":"address","nodeType":"ElementaryTypeName","src":"29243:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29242:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90663,"nodeType":"FunctionDefinition","src":"29257:76:144","nodes":[],"functionSelector":"7b056c1b","implemented":false,"kind":"function","modifiers":[],"name":"commissionRates","nameLocation":"29266:15:144","parameters":{"id":90659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90658,"mutability":"mutable","name":"rootchain","nameLocation":"29290:9:144","nodeType":"VariableDeclaration","scope":90663,"src":"29282:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90657,"name":"address","nodeType":"ElementaryTypeName","src":"29282:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29281:19:144"},"returnParameters":{"id":90662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90663,"src":"29324:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90660,"name":"uint256","nodeType":"ElementaryTypeName","src":"29324:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29323:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90670,"nodeType":"FunctionDefinition","src":"29339:76:144","nodes":[],"functionSelector":"c59f1046","implemented":false,"kind":"function","modifiers":[],"name":"lastCommitBlock","nameLocation":"29348:15:144","parameters":{"id":90666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90665,"mutability":"mutable","name":"rootchain","nameLocation":"29372:9:144","nodeType":"VariableDeclaration","scope":90670,"src":"29364:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90664,"name":"address","nodeType":"ElementaryTypeName","src":"29364:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29363:19:144"},"returnParameters":{"id":90669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90670,"src":"29406:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90667,"name":"uint256","nodeType":"ElementaryTypeName","src":"29406:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29405:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90675,"nodeType":"FunctionDefinition","src":"29420:56:144","nodes":[],"functionSelector":"5f40a349","implemented":false,"kind":"function","modifiers":[],"name":"seigPerBlock","nameLocation":"29429:12:144","parameters":{"id":90671,"nodeType":"ParameterList","parameters":[],"src":"29441:2:144"},"returnParameters":{"id":90674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90673,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90675,"src":"29467:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90672,"name":"uint256","nodeType":"ElementaryTypeName","src":"29467:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29466:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90680,"nodeType":"FunctionDefinition","src":"29481:57:144","nodes":[],"functionSelector":"f35c89e8","implemented":false,"kind":"function","modifiers":[],"name":"lastSeigBlock","nameLocation":"29490:13:144","parameters":{"id":90676,"nodeType":"ParameterList","parameters":[],"src":"29503:2:144"},"returnParameters":{"id":90679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90680,"src":"29529:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90677,"name":"uint256","nodeType":"ElementaryTypeName","src":"29529:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29528:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90685,"nodeType":"FunctionDefinition","src":"29543:55:144","nodes":[],"functionSelector":"32053c99","implemented":false,"kind":"function","modifiers":[],"name":"pausedBlock","nameLocation":"29552:11:144","parameters":{"id":90681,"nodeType":"ParameterList","parameters":[],"src":"29563:2:144"},"returnParameters":{"id":90684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90685,"src":"29589:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90682,"name":"uint256","nodeType":"ElementaryTypeName","src":"29589:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29588:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90690,"nodeType":"FunctionDefinition","src":"29603:57:144","nodes":[],"functionSelector":"1cc47890","implemented":false,"kind":"function","modifiers":[],"name":"unpausedBlock","nameLocation":"29612:13:144","parameters":{"id":90686,"nodeType":"ParameterList","parameters":[],"src":"29625:2:144"},"returnParameters":{"id":90689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90688,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90690,"src":"29651:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90687,"name":"uint256","nodeType":"ElementaryTypeName","src":"29651:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29650:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90695,"nodeType":"FunctionDefinition","src":"29665:58:144","nodes":[],"functionSelector":"8bf91dc4","implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_FACTOR","nameLocation":"29674:14:144","parameters":{"id":90691,"nodeType":"ParameterList","parameters":[],"src":"29688:2:144"},"returnParameters":{"id":90694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90695,"src":"29714:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90692,"name":"uint256","nodeType":"ElementaryTypeName","src":"29714:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29713:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90702,"nodeType":"FunctionDefinition","src":"29729:66:144","nodes":[],"functionSelector":"833a774f","implemented":false,"kind":"function","modifiers":[],"name":"deployCoinage","nameLocation":"29738:13:144","parameters":{"id":90698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90697,"mutability":"mutable","name":"rootchain","nameLocation":"29760:9:144","nodeType":"VariableDeclaration","scope":90702,"src":"29752:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90696,"name":"address","nodeType":"ElementaryTypeName","src":"29752:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29751:19:144"},"returnParameters":{"id":90701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90700,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90702,"src":"29789:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90699,"name":"bool","nodeType":"ElementaryTypeName","src":"29789:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29788:6:144"},"scope":90781,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90713,"nodeType":"FunctionDefinition","src":"29800:167:144","nodes":[],"functionSelector":"4224ed66","implemented":false,"kind":"function","modifiers":[],"name":"setCommissionRate","nameLocation":"29809:17:144","parameters":{"id":90709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90704,"mutability":"mutable","name":"rootchain","nameLocation":"29844:9:144","nodeType":"VariableDeclaration","scope":90713,"src":"29836:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90703,"name":"address","nodeType":"ElementaryTypeName","src":"29836:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90706,"mutability":"mutable","name":"commission","nameLocation":"29871:10:144","nodeType":"VariableDeclaration","scope":90713,"src":"29863:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90705,"name":"uint256","nodeType":"ElementaryTypeName","src":"29863:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90708,"mutability":"mutable","name":"isCommissionRateNegative","nameLocation":"29896:24:144","nodeType":"VariableDeclaration","scope":90713,"src":"29891:29:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90707,"name":"bool","nodeType":"ElementaryTypeName","src":"29891:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29826:100:144"},"returnParameters":{"id":90712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90711,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90713,"src":"29961:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90710,"name":"bool","nodeType":"ElementaryTypeName","src":"29961:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29960:6:144"},"scope":90781,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90722,"nodeType":"FunctionDefinition","src":"29973:95:144","nodes":[],"functionSelector":"fa9789c8","implemented":false,"kind":"function","modifiers":[],"name":"uncomittedStakeOf","nameLocation":"29982:17:144","parameters":{"id":90718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90715,"mutability":"mutable","name":"rootchain","nameLocation":"30008:9:144","nodeType":"VariableDeclaration","scope":90722,"src":"30000:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90714,"name":"address","nodeType":"ElementaryTypeName","src":"30000:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90717,"mutability":"mutable","name":"account","nameLocation":"30027:7:144","nodeType":"VariableDeclaration","scope":90722,"src":"30019:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90716,"name":"address","nodeType":"ElementaryTypeName","src":"30019:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29999:36:144"},"returnParameters":{"id":90721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90722,"src":"30059:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90719,"name":"uint256","nodeType":"ElementaryTypeName","src":"30059:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30058:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90731,"nodeType":"FunctionDefinition","src":"30073:85:144","nodes":[],"functionSelector":"ce4cb876","implemented":false,"kind":"function","modifiers":[],"name":"stakeOf","nameLocation":"30082:7:144","parameters":{"id":90727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90724,"mutability":"mutable","name":"rootchain","nameLocation":"30098:9:144","nodeType":"VariableDeclaration","scope":90731,"src":"30090:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90723,"name":"address","nodeType":"ElementaryTypeName","src":"30090:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90726,"mutability":"mutable","name":"account","nameLocation":"30117:7:144","nodeType":"VariableDeclaration","scope":90731,"src":"30109:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90725,"name":"address","nodeType":"ElementaryTypeName","src":"30109:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30089:36:144"},"returnParameters":{"id":90730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90731,"src":"30149:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90728,"name":"uint256","nodeType":"ElementaryTypeName","src":"30149:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30148:9:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90742,"nodeType":"FunctionDefinition","src":"30163:181:144","nodes":[],"functionSelector":"48c8577e","implemented":false,"kind":"function","modifiers":[],"name":"additionalTotBurnAmount","nameLocation":"30172:23:144","parameters":{"id":90738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90733,"mutability":"mutable","name":"rootchain","nameLocation":"30213:9:144","nodeType":"VariableDeclaration","scope":90742,"src":"30205:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90732,"name":"address","nodeType":"ElementaryTypeName","src":"30205:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90735,"mutability":"mutable","name":"account","nameLocation":"30240:7:144","nodeType":"VariableDeclaration","scope":90742,"src":"30232:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90734,"name":"address","nodeType":"ElementaryTypeName","src":"30232:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90737,"mutability":"mutable","name":"amount","nameLocation":"30265:6:144","nodeType":"VariableDeclaration","scope":90742,"src":"30257:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90736,"name":"uint256","nodeType":"ElementaryTypeName","src":"30257:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30195:82:144"},"returnParameters":{"id":90741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90740,"mutability":"mutable","name":"totAmount","nameLocation":"30333:9:144","nodeType":"VariableDeclaration","scope":90742,"src":"30325:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90739,"name":"uint256","nodeType":"ElementaryTypeName","src":"30325:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30324:19:144"},"scope":90781,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90753,"nodeType":"FunctionDefinition","src":"30350:95:144","nodes":[],"functionSelector":"4a393149","implemented":false,"kind":"function","modifiers":[],"name":"onTransfer","nameLocation":"30359:10:144","parameters":{"id":90749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90744,"mutability":"mutable","name":"sender","nameLocation":"30378:6:144","nodeType":"VariableDeclaration","scope":90753,"src":"30370:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90743,"name":"address","nodeType":"ElementaryTypeName","src":"30370:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90746,"mutability":"mutable","name":"recipient","nameLocation":"30394:9:144","nodeType":"VariableDeclaration","scope":90753,"src":"30386:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90745,"name":"address","nodeType":"ElementaryTypeName","src":"30386:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90748,"mutability":"mutable","name":"amount","nameLocation":"30413:6:144","nodeType":"VariableDeclaration","scope":90753,"src":"30405:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90747,"name":"uint256","nodeType":"ElementaryTypeName","src":"30405:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30369:51:144"},"returnParameters":{"id":90752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90753,"src":"30439:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90750,"name":"bool","nodeType":"ElementaryTypeName","src":"30439:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30438:6:144"},"scope":90781,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90758,"nodeType":"FunctionDefinition","src":"30450:44:144","nodes":[],"functionSelector":"359c4d59","implemented":false,"kind":"function","modifiers":[],"name":"onCommit","nameLocation":"30459:8:144","parameters":{"id":90754,"nodeType":"ParameterList","parameters":[],"src":"30467:2:144"},"returnParameters":{"id":90757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90758,"src":"30488:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90755,"name":"bool","nodeType":"ElementaryTypeName","src":"30488:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30487:6:144"},"scope":90781,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90769,"nodeType":"FunctionDefinition","src":"30499:95:144","nodes":[],"functionSelector":"412c6d50","implemented":false,"kind":"function","modifiers":[],"name":"onDeposit","nameLocation":"30508:9:144","parameters":{"id":90765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90760,"mutability":"mutable","name":"rootchain","nameLocation":"30526:9:144","nodeType":"VariableDeclaration","scope":90769,"src":"30518:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90759,"name":"address","nodeType":"ElementaryTypeName","src":"30518:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90762,"mutability":"mutable","name":"account","nameLocation":"30545:7:144","nodeType":"VariableDeclaration","scope":90769,"src":"30537:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90761,"name":"address","nodeType":"ElementaryTypeName","src":"30537:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90764,"mutability":"mutable","name":"amount","nameLocation":"30562:6:144","nodeType":"VariableDeclaration","scope":90769,"src":"30554:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90763,"name":"uint256","nodeType":"ElementaryTypeName","src":"30554:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30517:52:144"},"returnParameters":{"id":90768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90769,"src":"30588:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90766,"name":"bool","nodeType":"ElementaryTypeName","src":"30588:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30587:6:144"},"scope":90781,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90780,"nodeType":"FunctionDefinition","src":"30599:96:144","nodes":[],"functionSelector":"f850ffaa","implemented":false,"kind":"function","modifiers":[],"name":"onWithdraw","nameLocation":"30608:10:144","parameters":{"id":90776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90771,"mutability":"mutable","name":"rootchain","nameLocation":"30627:9:144","nodeType":"VariableDeclaration","scope":90780,"src":"30619:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90770,"name":"address","nodeType":"ElementaryTypeName","src":"30619:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90773,"mutability":"mutable","name":"account","nameLocation":"30646:7:144","nodeType":"VariableDeclaration","scope":90780,"src":"30638:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90772,"name":"address","nodeType":"ElementaryTypeName","src":"30638:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90775,"mutability":"mutable","name":"amount","nameLocation":"30663:6:144","nodeType":"VariableDeclaration","scope":90780,"src":"30655:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90774,"name":"uint256","nodeType":"ElementaryTypeName","src":"30655:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30618:52:144"},"returnParameters":{"id":90779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90780,"src":"30689:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90777,"name":"bool","nodeType":"ElementaryTypeName","src":"30689:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30688:6:144"},"scope":90781,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"SeigManagerI","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[90781],"name":"SeigManagerI","nameLocation":"28830:12:144","scope":91279,"usedErrors":[]},{"id":90791,"nodeType":"ContractDefinition","src":"31047:447:144","nodes":[{"id":90790,"nodeType":"FunctionDefinition","src":"31416:76:144","nodes":[],"documentation":{"id":90783,"nodeType":"StructuredDocumentation","src":"31071:340:144","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"31425:17:144","parameters":{"id":90786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90785,"mutability":"mutable","name":"interfaceId","nameLocation":"31450:11:144","nodeType":"VariableDeclaration","scope":90790,"src":"31443:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90784,"name":"bytes4","nodeType":"ElementaryTypeName","src":"31443:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"31442:20:144"},"returnParameters":{"id":90789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90788,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90790,"src":"31486:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90787,"name":"bool","nodeType":"ElementaryTypeName","src":"31486:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"31485:6:144"},"scope":90791,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":90782,"nodeType":"StructuredDocumentation","src":"30767:279:144","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[90791],"name":"IERC165","nameLocation":"31057:7:144","scope":91279,"usedErrors":[]},{"id":90844,"nodeType":"ContractDefinition","src":"31735:1402:144","nodes":[{"id":90797,"nodeType":"VariableDeclaration","src":"31851:57:144","nodes":[],"constant":true,"mutability":"constant","name":"_INTERFACE_ID_ERC165","nameLocation":"31875:20:144","scope":90844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90795,"name":"bytes4","nodeType":"ElementaryTypeName","src":"31851:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783031666663396137","id":90796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31898:10:144","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"visibility":"private"},{"id":90802,"nodeType":"VariableDeclaration","src":"32002:52:144","nodes":[],"constant":false,"documentation":{"id":90798,"nodeType":"StructuredDocumentation","src":"31915:82:144","text":" @dev Mapping of interface ids to whether or not it's supported."},"mutability":"mutable","name":"_supportedInterfaces","nameLocation":"32034:20:144","scope":90844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":90801,"keyType":{"id":90799,"name":"bytes4","nodeType":"ElementaryTypeName","src":"32010:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"32002:23:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueType":{"id":90800,"name":"bool","nodeType":"ElementaryTypeName","src":"32020:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"id":90810,"nodeType":"FunctionDefinition","src":"32061:207:144","nodes":[],"body":{"id":90809,"nodeType":"Block","src":"32075:193:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":90806,"name":"_INTERFACE_ID_ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90797,"src":"32240:20:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90805,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90843,"src":"32221:18:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":90807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32221:40:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90808,"nodeType":"ExpressionStatement","src":"32221:40:144"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":90803,"nodeType":"ParameterList","parameters":[],"src":"32072:2:144"},"returnParameters":{"id":90804,"nodeType":"ParameterList","parameters":[],"src":"32075:0:144"},"scope":90844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90823,"nodeType":"FunctionDefinition","src":"32418:133:144","nodes":[],"body":{"id":90822,"nodeType":"Block","src":"32494:57:144","nodes":[],"statements":[{"expression":{"baseExpression":{"id":90818,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90802,"src":"32511:20:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":90820,"indexExpression":{"id":90819,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90813,"src":"32532:11:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32511:33:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":90817,"id":90821,"nodeType":"Return","src":"32504:40:144"}]},"baseFunctions":[90790],"documentation":{"id":90811,"nodeType":"StructuredDocumentation","src":"32274:139:144","text":" @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"32427:17:144","parameters":{"id":90814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90813,"mutability":"mutable","name":"interfaceId","nameLocation":"32452:11:144","nodeType":"VariableDeclaration","scope":90823,"src":"32445:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90812,"name":"bytes4","nodeType":"ElementaryTypeName","src":"32445:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"32444:20:144"},"returnParameters":{"id":90817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90823,"src":"32488:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90815,"name":"bool","nodeType":"ElementaryTypeName","src":"32488:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32487:6:144"},"scope":90844,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90843,"nodeType":"FunctionDefinition","src":"32945:190:144","nodes":[],"body":{"id":90842,"nodeType":"Block","src":"33002:133:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":90832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90830,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90826,"src":"33020:11:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30786666666666666666","id":90831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33035:10:144","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"33020:25:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433136353a20696e76616c696420696e74657266616365206964","id":90833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33047:30:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee","typeString":"literal_string \"ERC165: invalid interface id\""},"value":"ERC165: invalid interface id"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee","typeString":"literal_string \"ERC165: invalid interface id\""}],"id":90829,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"33012:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33012:66:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90835,"nodeType":"ExpressionStatement","src":"33012:66:144"},{"expression":{"id":90840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":90836,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90802,"src":"33088:20:144","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":90838,"indexExpression":{"id":90837,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90826,"src":"33109:11:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"33088:33:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":90839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33124:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"33088:40:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90841,"nodeType":"ExpressionStatement","src":"33088:40:144"}]},"documentation":{"id":90824,"nodeType":"StructuredDocumentation","src":"32557:383:144","text":" @dev Registers the contract as an implementer of the interface defined by\n `interfaceId`. Support of the actual ERC165 interface is automatic and\n registering its interface id is not required.\n See {IERC165-supportsInterface}.\n Requirements:\n - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`)."},"implemented":true,"kind":"function","modifiers":[],"name":"_registerInterface","nameLocation":"32954:18:144","parameters":{"id":90827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90826,"mutability":"mutable","name":"interfaceId","nameLocation":"32980:11:144","nodeType":"VariableDeclaration","scope":90843,"src":"32973:18:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90825,"name":"bytes4","nodeType":"ElementaryTypeName","src":"32973:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"32972:20:144"},"returnParameters":{"id":90828,"nodeType":"ParameterList","parameters":[],"src":"33002:0:144"},"scope":90844,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":90793,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":90791,"src":"31754:7:144"},"id":90794,"nodeType":"InheritanceSpecifier","src":"31754:7:144"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":90792,"nodeType":"StructuredDocumentation","src":"31563:171:144","text":" @dev Implementation of the {IERC165} interface.\n Contracts may inherit from this and call {_registerInterface} to declare\n their support of an interface."},"fullyImplemented":true,"linearizedBaseContracts":[90844,90791],"name":"ERC165","nameLocation":"31744:6:144","scope":91279,"usedErrors":[]},{"id":90872,"nodeType":"ContractDefinition","src":"33186:319:144","nodes":[{"id":90858,"nodeType":"FunctionDefinition","src":"33230:85:144","nodes":[],"body":{"id":90857,"nodeType":"Block","src":"33244:71:144","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"expression":{"arguments":[{"id":90851,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"33283:4:144","typeDescriptions":{"typeIdentifier":"t_contract$_OnApprove_$90872","typeString":"contract OnApprove"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OnApprove_$90872","typeString":"contract OnApprove"}],"id":90850,"name":"OnApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90872,"src":"33273:9:144","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OnApprove_$90872_$","typeString":"type(contract OnApprove)"}},"id":90852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33273:15:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OnApprove_$90872","typeString":"contract OnApprove"}},"id":90853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onApprove","nodeType":"MemberAccess","referencedDeclaration":90871,"src":"33273:25:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":90854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"33273:34:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90849,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90843,"src":"33254:18:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":90855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33254:54:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90856,"nodeType":"ExpressionStatement","src":"33254:54:144"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":90847,"nodeType":"ParameterList","parameters":[],"src":"33241:2:144"},"returnParameters":{"id":90848,"nodeType":"ParameterList","parameters":[],"src":"33244:0:144"},"scope":90872,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":90871,"nodeType":"FunctionDefinition","src":"33321:182:144","nodes":[],"functionSelector":"4273ca16","implemented":false,"kind":"function","modifiers":[],"name":"onApprove","nameLocation":"33330:9:144","parameters":{"id":90867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90860,"mutability":"mutable","name":"owner","nameLocation":"33357:5:144","nodeType":"VariableDeclaration","scope":90871,"src":"33349:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90859,"name":"address","nodeType":"ElementaryTypeName","src":"33349:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90862,"mutability":"mutable","name":"spender","nameLocation":"33380:7:144","nodeType":"VariableDeclaration","scope":90871,"src":"33372:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90861,"name":"address","nodeType":"ElementaryTypeName","src":"33372:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90864,"mutability":"mutable","name":"amount","nameLocation":"33405:6:144","nodeType":"VariableDeclaration","scope":90871,"src":"33397:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90863,"name":"uint256","nodeType":"ElementaryTypeName","src":"33397:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90866,"mutability":"mutable","name":"data","nameLocation":"33436:4:144","nodeType":"VariableDeclaration","scope":90871,"src":"33421:19:144","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90865,"name":"bytes","nodeType":"ElementaryTypeName","src":"33421:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33339:107:144"},"returnParameters":{"id":90870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90871,"src":"33497:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90868,"name":"bool","nodeType":"ElementaryTypeName","src":"33497:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"33496:6:144"},"scope":90872,"stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"abstract":true,"baseContracts":[{"baseName":{"id":90845,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":90844,"src":"33217:6:144"},"id":90846,"nodeType":"InheritanceSpecifier","src":"33217:6:144"}],"canonicalName":"OnApprove","contractDependencies":[],"contractKind":"contract","fullyImplemented":false,"linearizedBaseContracts":[90872,90844,90791],"name":"OnApprove","nameLocation":"33204:9:144","scope":91279,"usedErrors":[]},{"id":90963,"nodeType":"ContractDefinition","src":"33559:1045:144","nodes":[{"id":90903,"nodeType":"FunctionDefinition","src":"33598:228:144","nodes":[],"body":{"id":90902,"nodeType":"Block","src":"33696:130:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":90887,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90876,"src":"33722:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90888,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90878,"src":"33731:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":90886,"name":"approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89850,"src":"33714:7:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":90889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33714:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":90885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"33706:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":90890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33706:33:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90891,"nodeType":"ExpressionStatement","src":"33706:33:144"},{"expression":{"arguments":[{"expression":{"id":90893,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"33764:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"33764:10:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90895,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90876,"src":"33776:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90896,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90878,"src":"33785:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90897,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90880,"src":"33793:4:144","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":90892,"name":"_callOnApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90962,"src":"33749:14:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":90898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33749:49:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90899,"nodeType":"ExpressionStatement","src":"33749:49:144"},{"expression":{"hexValue":"74727565","id":90900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33815:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":90884,"id":90901,"nodeType":"Return","src":"33808:11:144"}]},"functionSelector":"cae9ca51","implemented":true,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"33607:14:144","parameters":{"id":90881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90876,"mutability":"mutable","name":"spender","nameLocation":"33630:7:144","nodeType":"VariableDeclaration","scope":90903,"src":"33622:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90875,"name":"address","nodeType":"ElementaryTypeName","src":"33622:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90878,"mutability":"mutable","name":"amount","nameLocation":"33647:6:144","nodeType":"VariableDeclaration","scope":90903,"src":"33639:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90877,"name":"uint256","nodeType":"ElementaryTypeName","src":"33639:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90880,"mutability":"mutable","name":"data","nameLocation":"33668:4:144","nodeType":"VariableDeclaration","scope":90903,"src":"33655:17:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90879,"name":"bytes","nodeType":"ElementaryTypeName","src":"33655:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33621:52:144"},"returnParameters":{"id":90884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90903,"src":"33690:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90882,"name":"bool","nodeType":"ElementaryTypeName","src":"33690:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"33689:6:144"},"scope":90963,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90962,"nodeType":"FunctionDefinition","src":"33832:770:144","nodes":[],"body":{"id":90961,"nodeType":"Block","src":"33932:670:144","nodes":[],"statements":[{"assignments":[90915],"declarations":[{"constant":false,"id":90915,"mutability":"mutable","name":"onApproveSelector","nameLocation":"33949:17:144","nodeType":"VariableDeclaration","scope":90961,"src":"33942:24:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90914,"name":"bytes4","nodeType":"ElementaryTypeName","src":"33942:6:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":90921,"initialValue":{"expression":{"expression":{"arguments":[{"id":90917,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90907,"src":"33979:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90916,"name":"OnApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90872,"src":"33969:9:144","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OnApprove_$90872_$","typeString":"type(contract OnApprove)"}},"id":90918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33969:18:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OnApprove_$90872","typeString":"contract OnApprove"}},"id":90919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onApprove","nodeType":"MemberAccess","referencedDeclaration":90871,"src":"33969:28:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":90920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"33969:37:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"33942:64:144"},{"expression":{"arguments":[{"arguments":[{"id":90925,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90907,"src":"34071:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90926,"name":"onApproveSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90915,"src":"34080:17:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":90923,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90619,"src":"34038:13:144","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$90619_$","typeString":"type(library ERC165Checker)"}},"id":90924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_supportsInterface","nodeType":"MemberAccess","referencedDeclaration":90498,"src":"34038:32:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":90927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34038:60:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332304f6e417070726f76653a207370656e64657220646f65736e277420737570706f7274206f6e417070726f7665","id":90928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34112:51:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_2bce4c758d5bbb1fdb232d5c226113fa005f07ba4280a2148d7457830e3ba425","typeString":"literal_string \"ERC20OnApprove: spender doesn't support onApprove\""},"value":"ERC20OnApprove: spender doesn't support onApprove"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2bce4c758d5bbb1fdb232d5c226113fa005f07ba4280a2148d7457830e3ba425","typeString":"literal_string \"ERC20OnApprove: spender doesn't support onApprove\""}],"id":90922,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"34017:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34017:156:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90930,"nodeType":"ExpressionStatement","src":"34017:156:144"},{"assignments":[90932,90934],"declarations":[{"constant":false,"id":90932,"mutability":"mutable","name":"ok","nameLocation":"34190:2:144","nodeType":"VariableDeclaration","scope":90961,"src":"34185:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90931,"name":"bool","nodeType":"ElementaryTypeName","src":"34185:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":90934,"mutability":"mutable","name":"res","nameLocation":"34207:3:144","nodeType":"VariableDeclaration","scope":90961,"src":"34194:16:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90933,"name":"bytes","nodeType":"ElementaryTypeName","src":"34194:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":90946,"initialValue":{"arguments":[{"arguments":[{"id":90939,"name":"onApproveSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90915,"src":"34262:17:144","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":90940,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90905,"src":"34281:5:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90941,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90907,"src":"34288:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90942,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90909,"src":"34297:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90943,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90911,"src":"34305:4:144","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":90937,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"34239:3:144","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":90938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"34239:22:144","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":90944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34239:71:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":90935,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90907,"src":"34226:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":90936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"34226:12:144","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":90945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34226:85:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"34184:127:144"},{"expression":{"arguments":[{"id":90948,"name":"ok","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90932,"src":"34381:2:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":90951,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90934,"src":"34392:3:144","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":90950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34385:6:144","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":90949,"name":"string","nodeType":"ElementaryTypeName","src":"34385:6:144","typeDescriptions":{}}},"id":90952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34385:11:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":90947,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"34373:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34373:24:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90954,"nodeType":"ExpressionStatement","src":"34373:24:144"},{"AST":{"nodeType":"YulBlock","src":"34417:51:144","statements":[{"nodeType":"YulAssignment","src":"34431:27:144","value":{"arguments":[{"arguments":[{"name":"res","nodeType":"YulIdentifier","src":"34447:3:144"},{"kind":"number","nodeType":"YulLiteral","src":"34452:4:144","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34443:3:144"},"nodeType":"YulFunctionCall","src":"34443:14:144"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"34437:5:144"},"nodeType":"YulFunctionCall","src":"34437:21:144"},"variableNames":[{"name":"ok","nodeType":"YulIdentifier","src":"34431:2:144"}]}]},"evmVersion":"london","externalReferences":[{"declaration":90932,"isOffset":false,"isSlot":false,"src":"34431:2:144","valueSize":1},{"declaration":90934,"isOffset":false,"isSlot":false,"src":"34447:3:144","valueSize":1}],"id":90955,"nodeType":"InlineAssembly","src":"34408:60:144"},{"expression":{"arguments":[{"id":90957,"name":"ok","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90932,"src":"34548:2:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332304f6e417070726f76653a206661696c656420746f2063616c6c206f6e417070726f7665","id":90958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34552:42:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1a6015fee60acd57c1133ef930b0b6bef62eb5513bba32b60eca20668c02a36","typeString":"literal_string \"ERC20OnApprove: failed to call onApprove\""},"value":"ERC20OnApprove: failed to call onApprove"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d1a6015fee60acd57c1133ef930b0b6bef62eb5513bba32b60eca20668c02a36","typeString":"literal_string \"ERC20OnApprove: failed to call onApprove\""}],"id":90956,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"34540:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":90959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34540:55:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90960,"nodeType":"ExpressionStatement","src":"34540:55:144"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_callOnApprove","nameLocation":"33841:14:144","parameters":{"id":90912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90905,"mutability":"mutable","name":"owner","nameLocation":"33864:5:144","nodeType":"VariableDeclaration","scope":90962,"src":"33856:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90904,"name":"address","nodeType":"ElementaryTypeName","src":"33856:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90907,"mutability":"mutable","name":"spender","nameLocation":"33879:7:144","nodeType":"VariableDeclaration","scope":90962,"src":"33871:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90906,"name":"address","nodeType":"ElementaryTypeName","src":"33871:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90909,"mutability":"mutable","name":"amount","nameLocation":"33896:6:144","nodeType":"VariableDeclaration","scope":90962,"src":"33888:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90908,"name":"uint256","nodeType":"ElementaryTypeName","src":"33888:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90911,"mutability":"mutable","name":"data","nameLocation":"33917:4:144","nodeType":"VariableDeclaration","scope":90962,"src":"33904:17:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90910,"name":"bytes","nodeType":"ElementaryTypeName","src":"33904:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33855:67:144"},"returnParameters":{"id":90913,"nodeType":"ParameterList","parameters":[],"src":"33932:0:144"},"scope":90963,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":90873,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":90173,"src":"33586:5:144"},"id":90874,"nodeType":"InheritanceSpecifier","src":"33586:5:144"}],"canonicalName":"ERC20OnApprove","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[90963,90173,89557,89354],"name":"ERC20OnApprove","nameLocation":"33568:14:144","scope":91279,"usedErrors":[]},{"id":90967,"nodeType":"ContractDefinition","src":"34658:78:144","nodes":[{"id":90966,"nodeType":"FunctionDefinition","src":"34699:35:144","nodes":[],"functionSelector":"98650275","implemented":false,"kind":"function","modifiers":[],"name":"renounceMinter","nameLocation":"34708:14:144","parameters":{"id":90964,"nodeType":"ParameterList","parameters":[],"src":"34722:2:144"},"returnParameters":{"id":90965,"nodeType":"ParameterList","parameters":[],"src":"34733:0:144"},"scope":90967,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"MinterRoleRenounceTarget","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[90967],"name":"MinterRoleRenounceTarget","nameLocation":"34668:24:144","scope":91279,"usedErrors":[]},{"id":90971,"nodeType":"ContractDefinition","src":"34738:78:144","nodes":[{"id":90970,"nodeType":"FunctionDefinition","src":"34779:35:144","nodes":[],"functionSelector":"6ef8d66d","implemented":false,"kind":"function","modifiers":[],"name":"renouncePauser","nameLocation":"34788:14:144","parameters":{"id":90968,"nodeType":"ParameterList","parameters":[],"src":"34802:2:144"},"returnParameters":{"id":90969,"nodeType":"ParameterList","parameters":[],"src":"34813:0:144"},"scope":90971,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"PauserRoleRenounceTarget","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[90971],"name":"PauserRoleRenounceTarget","nameLocation":"34748:24:144","scope":91279,"usedErrors":[]},{"id":90980,"nodeType":"ContractDefinition","src":"34818:129:144","nodes":[{"id":90974,"nodeType":"FunctionDefinition","src":"34848:38:144","nodes":[],"functionSelector":"715018a6","implemented":false,"kind":"function","modifiers":[],"name":"renounceOwnership","nameLocation":"34857:17:144","parameters":{"id":90972,"nodeType":"ParameterList","parameters":[],"src":"34874:2:144"},"returnParameters":{"id":90973,"nodeType":"ParameterList","parameters":[],"src":"34885:0:144"},"scope":90980,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90979,"nodeType":"FunctionDefinition","src":"34891:54:144","nodes":[],"functionSelector":"f2fde38b","implemented":false,"kind":"function","modifiers":[],"name":"transferOwnership","nameLocation":"34900:17:144","parameters":{"id":90977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90976,"mutability":"mutable","name":"newOwner","nameLocation":"34926:8:144","nodeType":"VariableDeclaration","scope":90979,"src":"34918:16:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90975,"name":"address","nodeType":"ElementaryTypeName","src":"34918:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34917:18:144"},"returnParameters":{"id":90978,"nodeType":"ParameterList","parameters":[],"src":"34944:0:144"},"scope":90980,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"OwnableTarget","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[90980],"name":"OwnableTarget","nameLocation":"34828:13:144","scope":91279,"usedErrors":[]},{"id":91042,"nodeType":"ContractDefinition","src":"34949:569:144","nodes":[{"id":90996,"nodeType":"FunctionDefinition","src":"34990:123:144","nodes":[],"body":{"id":90995,"nodeType":"Block","src":"35047:66:144","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":90990,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90984,"src":"35082:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90989,"name":"MinterRoleRenounceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90967,"src":"35057:24:144","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MinterRoleRenounceTarget_$90967_$","typeString":"type(contract MinterRoleRenounceTarget)"}},"id":90991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35057:32:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MinterRoleRenounceTarget_$90967","typeString":"contract MinterRoleRenounceTarget"}},"id":90992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"renounceMinter","nodeType":"MemberAccess","referencedDeclaration":90966,"src":"35057:47:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":90993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35057:49:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90994,"nodeType":"ExpressionStatement","src":"35057:49:144"}]},"functionSelector":"5f112c68","implemented":true,"kind":"function","modifiers":[{"id":90987,"kind":"modifierInvocation","modifierName":{"id":90986,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"35037:9:144"},"nodeType":"ModifierInvocation","src":"35037:9:144"}],"name":"renounceMinter","nameLocation":"34999:14:144","parameters":{"id":90985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90984,"mutability":"mutable","name":"target","nameLocation":"35022:6:144","nodeType":"VariableDeclaration","scope":90996,"src":"35014:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90983,"name":"address","nodeType":"ElementaryTypeName","src":"35014:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35013:16:144"},"returnParameters":{"id":90988,"nodeType":"ParameterList","parameters":[],"src":"35047:0:144"},"scope":91042,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":91010,"nodeType":"FunctionDefinition","src":"35119:123:144","nodes":[],"body":{"id":91009,"nodeType":"Block","src":"35176:66:144","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":91004,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90998,"src":"35211:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":91003,"name":"PauserRoleRenounceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90971,"src":"35186:24:144","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PauserRoleRenounceTarget_$90971_$","typeString":"type(contract PauserRoleRenounceTarget)"}},"id":91005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35186:32:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PauserRoleRenounceTarget_$90971","typeString":"contract PauserRoleRenounceTarget"}},"id":91006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"renouncePauser","nodeType":"MemberAccess","referencedDeclaration":90970,"src":"35186:47:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":91007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35186:49:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91008,"nodeType":"ExpressionStatement","src":"35186:49:144"}]},"functionSelector":"41eb24bb","implemented":true,"kind":"function","modifiers":[{"id":91001,"kind":"modifierInvocation","modifierName":{"id":91000,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"35166:9:144"},"nodeType":"ModifierInvocation","src":"35166:9:144"}],"name":"renouncePauser","nameLocation":"35128:14:144","parameters":{"id":90999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90998,"mutability":"mutable","name":"target","nameLocation":"35151:6:144","nodeType":"VariableDeclaration","scope":91010,"src":"35143:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90997,"name":"address","nodeType":"ElementaryTypeName","src":"35143:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35142:16:144"},"returnParameters":{"id":91002,"nodeType":"ParameterList","parameters":[],"src":"35176:0:144"},"scope":91042,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":91024,"nodeType":"FunctionDefinition","src":"35248:118:144","nodes":[],"body":{"id":91023,"nodeType":"Block","src":"35308:58:144","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":91018,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91012,"src":"35332:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":91017,"name":"OwnableTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90980,"src":"35318:13:144","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OwnableTarget_$90980_$","typeString":"type(contract OwnableTarget)"}},"id":91019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35318:21:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OwnableTarget_$90980","typeString":"contract OwnableTarget"}},"id":91020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"renounceOwnership","nodeType":"MemberAccess","referencedDeclaration":90974,"src":"35318:39:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":91021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35318:41:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91022,"nodeType":"ExpressionStatement","src":"35318:41:144"}]},"functionSelector":"38bf3cfa","implemented":true,"kind":"function","modifiers":[{"id":91015,"kind":"modifierInvocation","modifierName":{"id":91014,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"35298:9:144"},"nodeType":"ModifierInvocation","src":"35298:9:144"}],"name":"renounceOwnership","nameLocation":"35257:17:144","parameters":{"id":91013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91012,"mutability":"mutable","name":"target","nameLocation":"35283:6:144","nodeType":"VariableDeclaration","scope":91024,"src":"35275:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91011,"name":"address","nodeType":"ElementaryTypeName","src":"35275:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35274:16:144"},"returnParameters":{"id":91016,"nodeType":"ParameterList","parameters":[],"src":"35308:0:144"},"scope":91042,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":91041,"nodeType":"FunctionDefinition","src":"35372:144:144","nodes":[],"body":{"id":91040,"nodeType":"Block","src":"35450:66:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":91037,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91028,"src":"35500:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":91034,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91026,"src":"35474:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":91033,"name":"OwnableTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90980,"src":"35460:13:144","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OwnableTarget_$90980_$","typeString":"type(contract OwnableTarget)"}},"id":91035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35460:21:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OwnableTarget_$90980","typeString":"contract OwnableTarget"}},"id":91036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferOwnership","nodeType":"MemberAccess","referencedDeclaration":90979,"src":"35460:39:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":91038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35460:49:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91039,"nodeType":"ExpressionStatement","src":"35460:49:144"}]},"functionSelector":"6d435421","implemented":true,"kind":"function","modifiers":[{"id":91031,"kind":"modifierInvocation","modifierName":{"id":91030,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"35440:9:144"},"nodeType":"ModifierInvocation","src":"35440:9:144"}],"name":"transferOwnership","nameLocation":"35381:17:144","parameters":{"id":91029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91026,"mutability":"mutable","name":"target","nameLocation":"35407:6:144","nodeType":"VariableDeclaration","scope":91041,"src":"35399:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91025,"name":"address","nodeType":"ElementaryTypeName","src":"35399:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91028,"mutability":"mutable","name":"newOwner","nameLocation":"35423:8:144","nodeType":"VariableDeclaration","scope":91041,"src":"35415:16:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91027,"name":"address","nodeType":"ElementaryTypeName","src":"35415:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35398:34:144"},"returnParameters":{"id":91032,"nodeType":"ParameterList","parameters":[],"src":"35450:0:144"},"scope":91042,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":90981,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":89481,"src":"34976:7:144"},"id":90982,"nodeType":"InheritanceSpecifier","src":"34976:7:144"}],"canonicalName":"AuthController","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[91042,89481,89354],"name":"AuthController","nameLocation":"34958:14:144","scope":91279,"usedErrors":[]},{"id":91237,"nodeType":"ContractDefinition","src":"35520:1620:144","nodes":[{"id":91053,"nodeType":"VariableDeclaration","src":"35595:31:144","nodes":[],"constant":false,"functionSelector":"6fb7f558","mutability":"mutable","name":"seigManager","nameLocation":"35615:11:144","scope":91237,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"},"typeName":{"id":91052,"nodeType":"UserDefinedTypeName","pathNode":{"id":91051,"name":"SeigManagerI","nodeType":"IdentifierPath","referencedDeclaration":90781,"src":"35595:12:144"},"referencedDeclaration":90781,"src":"35595:12:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"visibility":"public"},{"id":91055,"nodeType":"VariableDeclaration","src":"35632:27:144","nodes":[],"constant":false,"functionSelector":"63380113","mutability":"mutable","name":"callbackEnabled","nameLocation":"35644:15:144","scope":91237,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":91054,"name":"bool","nodeType":"ElementaryTypeName","src":"35632:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":91067,"nodeType":"FunctionDefinition","src":"35666:117:144","nodes":[],"body":{"id":91066,"nodeType":"Block","src":"35732:51:144","nodes":[],"statements":[{"expression":{"id":91064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":91062,"name":"callbackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91055,"src":"35742:15:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":91063,"name":"_callbackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91057,"src":"35760:16:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"35742:34:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":91065,"nodeType":"ExpressionStatement","src":"35742:34:144"}]},"functionSelector":"3113ed5c","implemented":true,"kind":"function","modifiers":[{"id":91060,"kind":"modifierInvocation","modifierName":{"id":91059,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"35722:9:144"},"nodeType":"ModifierInvocation","src":"35722:9:144"}],"name":"enableCallback","nameLocation":"35675:14:144","parameters":{"id":91058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91057,"mutability":"mutable","name":"_callbackEnabled","nameLocation":"35695:16:144","nodeType":"VariableDeclaration","scope":91067,"src":"35690:21:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":91056,"name":"bool","nodeType":"ElementaryTypeName","src":"35690:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"35689:23:144"},"returnParameters":{"id":91061,"nodeType":"ParameterList","parameters":[],"src":"35732:0:144"},"scope":91237,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":91080,"nodeType":"FunctionDefinition","src":"35789:121:144","nodes":[],"body":{"id":91079,"nodeType":"Block","src":"35867:43:144","nodes":[],"statements":[{"expression":{"id":91077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":91075,"name":"seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91053,"src":"35877:11:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":91076,"name":"_seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91070,"src":"35891:12:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"src":"35877:26:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"id":91078,"nodeType":"ExpressionStatement","src":"35877:26:144"}]},"functionSelector":"7657f20a","implemented":true,"kind":"function","modifiers":[{"id":91073,"kind":"modifierInvocation","modifierName":{"id":91072,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"35857:9:144"},"nodeType":"ModifierInvocation","src":"35857:9:144"}],"name":"setSeigManager","nameLocation":"35798:14:144","parameters":{"id":91071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91070,"mutability":"mutable","name":"_seigManager","nameLocation":"35826:12:144","nodeType":"VariableDeclaration","scope":91080,"src":"35813:25:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"},"typeName":{"id":91069,"nodeType":"UserDefinedTypeName","pathNode":{"id":91068,"name":"SeigManagerI","nodeType":"IdentifierPath","referencedDeclaration":90781,"src":"35813:12:144"},"referencedDeclaration":90781,"src":"35813:12:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"visibility":"internal"}],"src":"35812:27:144"},"returnParameters":{"id":91074,"nodeType":"ParameterList","parameters":[],"src":"35867:0:144"},"scope":91237,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":91113,"nodeType":"FunctionDefinition","src":"36003:291:144","nodes":[],"body":{"id":91112,"nodeType":"Block","src":"36107:187:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":91101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":91096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":91093,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36125:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":91094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"36125:10:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":91095,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91082,"src":"36139:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36125:20:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":91100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":91097,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36149:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":91098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"36149:10:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":91099,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91084,"src":"36163:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36149:23:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36125:47:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53656967546f6b656e3a206f6e6c792073656e646572206f7220726563697069656e742063616e207472616e73666572","id":91102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"36174:50:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_776157409a7e6c9055e66caa8208c7481a097748ce06067c776642d93c0cc2c4","typeString":"literal_string \"SeigToken: only sender or recipient can transfer\""},"value":"SeigToken: only sender or recipient can transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_776157409a7e6c9055e66caa8208c7481a097748ce06067c776642d93c0cc2c4","typeString":"literal_string \"SeigToken: only sender or recipient can transfer\""}],"id":91092,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"36117:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":91103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36117:108:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91104,"nodeType":"ExpressionStatement","src":"36117:108:144"},{"expression":{"arguments":[{"id":91107,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91082,"src":"36261:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91108,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91084,"src":"36269:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91109,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91086,"src":"36280:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":91105,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"36242:5:144","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SeigToken_$91237_$","typeString":"type(contract super SeigToken)"}},"id":91106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":89887,"src":"36242:18:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":91110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36242:45:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":91091,"id":91111,"nodeType":"Return","src":"36235:52:144"}]},"baseFunctions":[89887],"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"36012:12:144","overrides":{"id":91088,"nodeType":"OverrideSpecifier","overrides":[],"src":"36083:8:144"},"parameters":{"id":91087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91082,"mutability":"mutable","name":"sender","nameLocation":"36033:6:144","nodeType":"VariableDeclaration","scope":91113,"src":"36025:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91081,"name":"address","nodeType":"ElementaryTypeName","src":"36025:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91084,"mutability":"mutable","name":"recipient","nameLocation":"36049:9:144","nodeType":"VariableDeclaration","scope":91113,"src":"36041:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91083,"name":"address","nodeType":"ElementaryTypeName","src":"36041:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91086,"mutability":"mutable","name":"amount","nameLocation":"36068:6:144","nodeType":"VariableDeclaration","scope":91113,"src":"36060:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91085,"name":"uint256","nodeType":"ElementaryTypeName","src":"36060:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"36024:51:144"},"returnParameters":{"id":91091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":91113,"src":"36101:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":91089,"name":"bool","nodeType":"ElementaryTypeName","src":"36101:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36100:6:144"},"scope":91237,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":91154,"nodeType":"FunctionDefinition","src":"36300:298:144","nodes":[],"body":{"id":91153,"nodeType":"Block","src":"36388:210:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":91126,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91115,"src":"36414:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91127,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91117,"src":"36422:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91128,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91119,"src":"36433:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":91123,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"36398:5:144","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SeigToken_$91237_$","typeString":"type(contract super SeigToken)"}},"id":91125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_transfer","nodeType":"MemberAccess","referencedDeclaration":90004,"src":"36398:15:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":91129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36398:42:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91130,"nodeType":"ExpressionStatement","src":"36398:42:144"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":91141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":91131,"name":"callbackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91055,"src":"36454:15:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":91140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":91134,"name":"seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91053,"src":"36481:11:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}],"id":91133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36473:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91132,"name":"address","nodeType":"ElementaryTypeName","src":"36473:7:144","typeDescriptions":{}}},"id":91135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36473:20:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":91138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36505:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36497:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91136,"name":"address","nodeType":"ElementaryTypeName","src":"36497:7:144","typeDescriptions":{}}},"id":91139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36497:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36473:34:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36454:53:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":91152,"nodeType":"IfStatement","src":"36450:142:144","trueBody":{"id":91151,"nodeType":"Block","src":"36509:83:144","statements":[{"expression":{"arguments":[{"arguments":[{"id":91145,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91115,"src":"36554:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91146,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91117,"src":"36562:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91147,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91119,"src":"36573:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":91143,"name":"seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91053,"src":"36531:11:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"id":91144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onTransfer","nodeType":"MemberAccess","referencedDeclaration":90753,"src":"36531:22:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":91148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36531:49:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":91142,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"36523:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":91149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36523:58:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91150,"nodeType":"ExpressionStatement","src":"36523:58:144"}]}}]},"baseFunctions":[90004],"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"36309:9:144","overrides":{"id":91121,"nodeType":"OverrideSpecifier","overrides":[],"src":"36379:8:144"},"parameters":{"id":91120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91115,"mutability":"mutable","name":"sender","nameLocation":"36327:6:144","nodeType":"VariableDeclaration","scope":91154,"src":"36319:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91114,"name":"address","nodeType":"ElementaryTypeName","src":"36319:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91117,"mutability":"mutable","name":"recipient","nameLocation":"36343:9:144","nodeType":"VariableDeclaration","scope":91154,"src":"36335:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91116,"name":"address","nodeType":"ElementaryTypeName","src":"36335:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91119,"mutability":"mutable","name":"amount","nameLocation":"36362:6:144","nodeType":"VariableDeclaration","scope":91154,"src":"36354:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91118,"name":"uint256","nodeType":"ElementaryTypeName","src":"36354:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"36318:51:144"},"returnParameters":{"id":91122,"nodeType":"ParameterList","parameters":[],"src":"36388:0:144"},"scope":91237,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91195,"nodeType":"FunctionDefinition","src":"36604:264:144","nodes":[],"body":{"id":91194,"nodeType":"Block","src":"36670:198:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":91165,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91156,"src":"36692:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91166,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91158,"src":"36701:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":91162,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"36680:5:144","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SeigToken_$91237_$","typeString":"type(contract super SeigToken)"}},"id":91164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_mint","nodeType":"MemberAccess","referencedDeclaration":90050,"src":"36680:11:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":91167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36680:28:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91168,"nodeType":"ExpressionStatement","src":"36680:28:144"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":91179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":91169,"name":"callbackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91055,"src":"36722:15:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":91178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":91172,"name":"seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91053,"src":"36749:11:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}],"id":91171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36741:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91170,"name":"address","nodeType":"ElementaryTypeName","src":"36741:7:144","typeDescriptions":{}}},"id":91173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36741:20:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":91176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36773:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36765:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91174,"name":"address","nodeType":"ElementaryTypeName","src":"36765:7:144","typeDescriptions":{}}},"id":91177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36765:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36741:34:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36722:53:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":91193,"nodeType":"IfStatement","src":"36718:144:144","trueBody":{"id":91192,"nodeType":"Block","src":"36777:85:144","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":91185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36830:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36822:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91183,"name":"address","nodeType":"ElementaryTypeName","src":"36822:7:144","typeDescriptions":{}}},"id":91186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36822:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91187,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91156,"src":"36834:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91188,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91158,"src":"36843:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":91181,"name":"seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91053,"src":"36799:11:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"id":91182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onTransfer","nodeType":"MemberAccess","referencedDeclaration":90753,"src":"36799:22:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":91189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36799:51:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":91180,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"36791:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":91190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36791:60:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91191,"nodeType":"ExpressionStatement","src":"36791:60:144"}]}}]},"baseFunctions":[90050],"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"36613:5:144","overrides":{"id":91160,"nodeType":"OverrideSpecifier","overrides":[],"src":"36661:8:144"},"parameters":{"id":91159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91156,"mutability":"mutable","name":"account","nameLocation":"36627:7:144","nodeType":"VariableDeclaration","scope":91195,"src":"36619:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91155,"name":"address","nodeType":"ElementaryTypeName","src":"36619:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91158,"mutability":"mutable","name":"amount","nameLocation":"36644:6:144","nodeType":"VariableDeclaration","scope":91195,"src":"36636:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91157,"name":"uint256","nodeType":"ElementaryTypeName","src":"36636:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"36618:33:144"},"returnParameters":{"id":91161,"nodeType":"ParameterList","parameters":[],"src":"36670:0:144"},"scope":91237,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91236,"nodeType":"FunctionDefinition","src":"36874:264:144","nodes":[],"body":{"id":91235,"nodeType":"Block","src":"36940:198:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":91206,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91197,"src":"36962:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91207,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91199,"src":"36971:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":91203,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"36950:5:144","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SeigToken_$91237_$","typeString":"type(contract super SeigToken)"}},"id":91205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_burn","nodeType":"MemberAccess","referencedDeclaration":90097,"src":"36950:11:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":91208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36950:28:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91209,"nodeType":"ExpressionStatement","src":"36950:28:144"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":91220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":91210,"name":"callbackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91055,"src":"36992:15:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":91219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":91213,"name":"seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91053,"src":"37019:11:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}],"id":91212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37011:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91211,"name":"address","nodeType":"ElementaryTypeName","src":"37011:7:144","typeDescriptions":{}}},"id":91214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37011:20:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":91217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37043:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37035:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91215,"name":"address","nodeType":"ElementaryTypeName","src":"37035:7:144","typeDescriptions":{}}},"id":91218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37035:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37011:34:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36992:53:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":91234,"nodeType":"IfStatement","src":"36988:144:144","trueBody":{"id":91233,"nodeType":"Block","src":"37047:85:144","statements":[{"expression":{"arguments":[{"arguments":[{"id":91224,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91197,"src":"37092:7:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":91227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37109:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37101:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91225,"name":"address","nodeType":"ElementaryTypeName","src":"37101:7:144","typeDescriptions":{}}},"id":91228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37101:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91229,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91199,"src":"37113:6:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":91222,"name":"seigManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91053,"src":"37069:11:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"id":91223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onTransfer","nodeType":"MemberAccess","referencedDeclaration":90753,"src":"37069:22:144","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":91230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37069:51:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":91221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"37061:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":91231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37061:60:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91232,"nodeType":"ExpressionStatement","src":"37061:60:144"}]}}]},"baseFunctions":[90097],"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"36883:5:144","overrides":{"id":91201,"nodeType":"OverrideSpecifier","overrides":[],"src":"36931:8:144"},"parameters":{"id":91200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91197,"mutability":"mutable","name":"account","nameLocation":"36897:7:144","nodeType":"VariableDeclaration","scope":91236,"src":"36889:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91196,"name":"address","nodeType":"ElementaryTypeName","src":"36889:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91199,"mutability":"mutable","name":"amount","nameLocation":"36914:6:144","nodeType":"VariableDeclaration","scope":91236,"src":"36906:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91198,"name":"uint256","nodeType":"ElementaryTypeName","src":"36906:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"36888:33:144"},"returnParameters":{"id":91202,"nodeType":"ParameterList","parameters":[],"src":"36940:0:144"},"scope":91237,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":91043,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":90173,"src":"35542:5:144"},"id":91044,"nodeType":"InheritanceSpecifier","src":"35542:5:144"},{"baseName":{"id":91045,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":89481,"src":"35549:7:144"},"id":91046,"nodeType":"InheritanceSpecifier","src":"35549:7:144"},{"baseName":{"id":91047,"name":"ERC20OnApprove","nodeType":"IdentifierPath","referencedDeclaration":90963,"src":"35558:14:144"},"id":91048,"nodeType":"InheritanceSpecifier","src":"35558:14:144"},{"baseName":{"id":91049,"name":"AuthController","nodeType":"IdentifierPath","referencedDeclaration":91042,"src":"35574:14:144"},"id":91050,"nodeType":"InheritanceSpecifier","src":"35574:14:144"}],"canonicalName":"SeigToken","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[91237,91042,90963,89481,90173,89557,89354],"name":"SeigToken","nameLocation":"35529:9:144","scope":91279,"usedErrors":[]},{"id":91278,"nodeType":"ContractDefinition","src":"37264:357:144","nodes":[{"id":91253,"nodeType":"FunctionDefinition","src":"37330:67:144","nodes":[],"body":{"id":91252,"nodeType":"Block","src":"37394:3:144","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"546f6b616d616b204e6574776f726b20546f6b656e","id":91247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"37358:23:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_0a5a2188e3d5f71075c483659c2a90ba971a4bf6db1777aec8d467823d6b7b73","typeString":"literal_string \"Tokamak Network Token\""},"value":"Tokamak Network Token"},{"hexValue":"544f4e","id":91248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"37383:5:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_88940a795d305b6429c31402afcae61ef7d829b8a9fe2a9861b8c30cd60e80ed","typeString":"literal_string \"TON\""},"value":"TON"},{"hexValue":"3138","id":91249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37390:2:144","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"}],"id":91250,"kind":"baseConstructorSpecifier","modifierName":{"id":91246,"name":"ERC20Detailed","nodeType":"IdentifierPath","referencedDeclaration":90451,"src":"37344:13:144"},"nodeType":"ModifierInvocation","src":"37344:49:144"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":91245,"nodeType":"ParameterList","parameters":[],"src":"37341:2:144"},"returnParameters":{"id":91251,"nodeType":"ParameterList","parameters":[],"src":"37394:0:144"},"scope":91278,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":91265,"nodeType":"FunctionDefinition","src":"37403:125:144","nodes":[],"body":{"id":91264,"nodeType":"Block","src":"37464:64:144","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"544f4e3a20544f4e20646f65736e277420616c6c6f7720736574536569674d616e61676572","id":91261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"37481:39:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb852d54c3e45a359f11c5c666242b0fea89d6bbcfde065c5261ede78553bfce","typeString":"literal_string \"TON: TON doesn't allow setSeigManager\""},"value":"TON: TON doesn't allow setSeigManager"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cb852d54c3e45a359f11c5c666242b0fea89d6bbcfde065c5261ede78553bfce","typeString":"literal_string \"TON: TON doesn't allow setSeigManager\""}],"id":91260,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"37474:6:144","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":91262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37474:47:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91263,"nodeType":"ExpressionStatement","src":"37474:47:144"}]},"baseFunctions":[91080],"functionSelector":"7657f20a","implemented":true,"kind":"function","modifiers":[],"name":"setSeigManager","nameLocation":"37412:14:144","overrides":{"id":91258,"nodeType":"OverrideSpecifier","overrides":[],"src":"37455:8:144"},"parameters":{"id":91257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":91265,"src":"37427:12:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"},"typeName":{"id":91255,"nodeType":"UserDefinedTypeName","pathNode":{"id":91254,"name":"SeigManagerI","nodeType":"IdentifierPath","referencedDeclaration":90781,"src":"37427:12:144"},"referencedDeclaration":90781,"src":"37427:12:144","typeDescriptions":{"typeIdentifier":"t_contract$_SeigManagerI_$90781","typeString":"contract SeigManagerI"}},"visibility":"internal"}],"src":"37426:14:144"},"returnParameters":{"id":91259,"nodeType":"ParameterList","parameters":[],"src":"37464:0:144"},"scope":91278,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":91277,"nodeType":"FunctionDefinition","src":"37534:85:144","nodes":[],"body":{"id":91276,"nodeType":"Block","src":"37576:43:144","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":91271,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"37592:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":91272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"37592:10:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91273,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91267,"src":"37604:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":91270,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[91195],"referencedDeclaration":91195,"src":"37586:5:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":91274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37586:26:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91275,"nodeType":"ExpressionStatement","src":"37586:26:144"}]},"functionSelector":"57915897","implemented":true,"kind":"function","modifiers":[],"name":"faucet","nameLocation":"37543:6:144","parameters":{"id":91268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91267,"mutability":"mutable","name":"_amount","nameLocation":"37558:7:144","nodeType":"VariableDeclaration","scope":91277,"src":"37550:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91266,"name":"uint256","nodeType":"ElementaryTypeName","src":"37550:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37549:17:144"},"returnParameters":{"id":91269,"nodeType":"ParameterList","parameters":[],"src":"37576:0:144"},"scope":91278,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":91239,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":89481,"src":"37290:7:144"},"id":91240,"nodeType":"InheritanceSpecifier","src":"37290:7:144"},{"baseName":{"id":91241,"name":"ERC20Detailed","nodeType":"IdentifierPath","referencedDeclaration":90451,"src":"37299:13:144"},"id":91242,"nodeType":"InheritanceSpecifier","src":"37299:13:144"},{"baseName":{"id":91243,"name":"SeigToken","nodeType":"IdentifierPath","referencedDeclaration":91237,"src":"37314:9:144"},"id":91244,"nodeType":"InheritanceSpecifier","src":"37314:9:144"}],"canonicalName":"L2NativeToken","contractDependencies":[],"contractKind":"contract","documentation":{"id":91238,"nodeType":"StructuredDocumentation","src":"37183:80:144","text":" @dev Current implementations is just for testing seigniorage manager."},"fullyImplemented":true,"linearizedBaseContracts":[91278,91237,91042,90963,90451,89481,90173,89557,89354],"name":"L2NativeToken","nameLocation":"37273:13:144","scope":91279,"usedErrors":[]}]},"id":144}