{
    "contractName": "Ownable",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x910a2e625b71168563edf9eeef55a50d6d699acfe27ceba3921f291829a8f938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248246ac66e6479dce1ad7d4945ec5540c98ceb09881e93c93f7c48d5772925c\",\"dweb:/ipfs/QmXr8tmUiZgEYid6ixeeBRmTdUnASWjKzhP3KRxMPy8fRt\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x46d2453e9db55eae25c9abdae2c42229086c54f1a6a247e8ce32658bb785f6ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://198ef77ef5d9f7a7709d6bbfba1d4d54d82ccc15358e9dced37f1376dac887fa\",\"dweb:/ipfs/QmQHFvCA74s3AHU3NMn4AAYzFTt6UotWq7yk3WzLQs1oJS\"]}},\"version\":1}",
    "bytecode": "0x",
    "deployedBytecode": "0x",
    "immutableReferences": {},
    "generatedSources": [],
    "deployedGeneratedSources": [],
    "sourceMap": "",
    "deployedSourceMap": "",
    "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../GSN/Context.sol\";\n/**\n * @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 *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\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.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor () {\n        address msgSender = _msgSender();\n        _owner = msgSender;\n        emit OwnershipTransferred(address(0), msgSender);\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @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     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        emit OwnershipTransferred(_owner, address(0));\n        _owner = address(0);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        emit OwnershipTransferred(_owner, newOwner);\n        _owner = newOwner;\n    }\n}\n",
    "sourcePath": "@openzeppelin/contracts/access/Ownable.sol",
    "ast": {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "exportedSymbols": {
            "Context": [
                5279
            ],
            "Ownable": [
                5388
            ]
        },
        "id": 5389,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 5281,
                "literals": [
                    "solidity",
                    "^",
                    "0.7",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "33:23:39"
            },
            {
                "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
                "file": "../GSN/Context.sol",
                "id": 5282,
                "nodeType": "ImportDirective",
                "scope": 5389,
                "sourceUnit": 5280,
                "src": "58:28:39",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": true,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 5284,
                            "name": "Context",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5279,
                            "src": "611:7:39",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Context_$5279",
                                "typeString": "contract Context"
                            }
                        },
                        "id": 5285,
                        "nodeType": "InheritanceSpecifier",
                        "src": "611:7:39"
                    }
                ],
                "contractDependencies": [
                    5279
                ],
                "contractKind": "contract",
                "documentation": {
                    "id": 5283,
                    "nodeType": "StructuredDocumentation",
                    "src": "87:494:39",
                    "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 By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\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,
                "id": 5388,
                "linearizedBaseContracts": [
                    5388,
                    5279
                ],
                "name": "Ownable",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "id": 5287,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5388,
                        "src": "625:22:39",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 5286,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "625:7:39",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "id": 5293,
                        "name": "OwnershipTransferred",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 5292,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5289,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "previousOwner",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5293,
                                    "src": "681:29:39",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5288,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "681:7:39",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5291,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5293,
                                    "src": "712:24:39",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5290,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "712:7:39",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "680:57:39"
                        },
                        "src": "654:84:39"
                    },
                    {
                        "body": {
                            "id": 5314,
                            "nodeType": "Block",
                            "src": "855:135:39",
                            "statements": [
                                {
                                    "assignments": [
                                        5298
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 5298,
                                            "mutability": "mutable",
                                            "name": "msgSender",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5314,
                                            "src": "865:17:39",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 5297,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "865:7:39",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 5301,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 5299,
                                            "name": "_msgSender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5267,
                                            "src": "885:10:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                "typeString": "function () view returns (address payable)"
                                            }
                                        },
                                        "id": 5300,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "885:12:39",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "865:32:39"
                                },
                                {
                                    "expression": {
                                        "id": 5304,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 5302,
                                            "name": "_owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5287,
                                            "src": "907:6:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 5303,
                                            "name": "msgSender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5298,
                                            "src": "916:9:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "907:18:39",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 5305,
                                    "nodeType": "ExpressionStatement",
                                    "src": "907:18:39"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 5309,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "969:1:39",
                                                        "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": 5308,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "961:7:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 5307,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "961:7:39",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 5310,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "961:10:39",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "id": 5311,
                                                "name": "msgSender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5298,
                                                "src": "973:9:39",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 5306,
                                            "name": "OwnershipTransferred",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5293,
                                            "src": "940:20:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                "typeString": "function (address,address)"
                                            }
                                        },
                                        "id": 5312,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "940:43:39",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5313,
                                    "nodeType": "EmitStatement",
                                    "src": "935:48:39"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 5294,
                            "nodeType": "StructuredDocumentation",
                            "src": "744:91:39",
                            "text": " @dev Initializes the contract setting the deployer as the initial owner."
                        },
                        "id": 5315,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5295,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "852:2:39"
                        },
                        "returnParameters": {
                            "id": 5296,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "855:0:39"
                        },
                        "scope": 5388,
                        "src": "840:150:39",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 5323,
                            "nodeType": "Block",
                            "src": "1113:30:39",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 5321,
                                        "name": "_owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5287,
                                        "src": "1130:6:39",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 5320,
                                    "id": 5322,
                                    "nodeType": "Return",
                                    "src": "1123:13:39"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 5316,
                            "nodeType": "StructuredDocumentation",
                            "src": "996:65:39",
                            "text": " @dev Returns the address of the current owner."
                        },
                        "functionSelector": "8da5cb5b",
                        "id": 5324,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "owner",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5317,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1080:2:39"
                        },
                        "returnParameters": {
                            "id": 5320,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5319,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5324,
                                    "src": "1104:7:39",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5318,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1104:7:39",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1103:9:39"
                        },
                        "scope": 5388,
                        "src": "1066:77:39",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 5336,
                            "nodeType": "Block",
                            "src": "1252:95:39",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 5331,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5328,
                                                    "name": "_owner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5287,
                                                    "src": "1270:6:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5329,
                                                        "name": "_msgSender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5267,
                                                        "src": "1280:10:39",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                            "typeString": "function () view returns (address payable)"
                                                        }
                                                    },
                                                    "id": 5330,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1280:12:39",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "1270:22:39",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                "id": 5332,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1294:34:39",
                                                "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": 5327,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "1262:7:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 5333,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1262:67:39",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5334,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1262:67:39"
                                },
                                {
                                    "id": 5335,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "1339:1:39"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 5325,
                            "nodeType": "StructuredDocumentation",
                            "src": "1149:77:39",
                            "text": " @dev Throws if called by any account other than the owner."
                        },
                        "id": 5337,
                        "name": "onlyOwner",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 5326,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1249:2:39"
                        },
                        "src": "1231:116:39",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 5358,
                            "nodeType": "Block",
                            "src": "1743:91:39",
                            "statements": [
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 5344,
                                                "name": "_owner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5287,
                                                "src": "1779:6:39",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 5347,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1795:1:39",
                                                        "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": 5346,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "1787:7:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 5345,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "1787:7:39",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 5348,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1787:10:39",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "id": 5343,
                                            "name": "OwnershipTransferred",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5293,
                                            "src": "1758:20:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                "typeString": "function (address,address)"
                                            }
                                        },
                                        "id": 5349,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1758:40:39",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5350,
                                    "nodeType": "EmitStatement",
                                    "src": "1753:45:39"
                                },
                                {
                                    "expression": {
                                        "id": 5356,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 5351,
                                            "name": "_owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5287,
                                            "src": "1808:6:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 5354,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1825:1:39",
                                                    "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": 5353,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1817:7:39",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 5352,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1817:7:39",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 5355,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1817:10:39",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "1808:19:39",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 5357,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1808:19:39"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 5338,
                            "nodeType": "StructuredDocumentation",
                            "src": "1353:331:39",
                            "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",
                        "id": 5359,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 5341,
                                "modifierName": {
                                    "id": 5340,
                                    "name": "onlyOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5337,
                                    "src": "1733:9:39",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$__$",
                                        "typeString": "modifier ()"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1733:9:39"
                            }
                        ],
                        "name": "renounceOwnership",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5339,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1715:2:39"
                        },
                        "returnParameters": {
                            "id": 5342,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1743:0:39"
                        },
                        "scope": 5388,
                        "src": "1689:145:39",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 5386,
                            "nodeType": "Block",
                            "src": "2053:170:39",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 5373,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5368,
                                                    "name": "newOwner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5362,
                                                    "src": "2071:8:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 5371,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2091:1:39",
                                                            "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": 5370,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2083:7:39",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 5369,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2083:7:39",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 5372,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2083:10:39",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "2071:22:39",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                                                "id": 5374,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2095:40:39",
                                                "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": 5367,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "2063:7:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 5375,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2063:73:39",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5376,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2063:73:39"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 5378,
                                                "name": "_owner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5287,
                                                "src": "2172:6:39",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5379,
                                                "name": "newOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5362,
                                                "src": "2180:8:39",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 5377,
                                            "name": "OwnershipTransferred",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5293,
                                            "src": "2151:20:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                "typeString": "function (address,address)"
                                            }
                                        },
                                        "id": 5380,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2151:38:39",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5381,
                                    "nodeType": "EmitStatement",
                                    "src": "2146:43:39"
                                },
                                {
                                    "expression": {
                                        "id": 5384,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 5382,
                                            "name": "_owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5287,
                                            "src": "2199:6:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 5383,
                                            "name": "newOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5362,
                                            "src": "2208:8:39",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2199:17:39",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 5385,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2199:17:39"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 5360,
                            "nodeType": "StructuredDocumentation",
                            "src": "1840:138:39",
                            "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                        },
                        "functionSelector": "f2fde38b",
                        "id": 5387,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 5365,
                                "modifierName": {
                                    "id": 5364,
                                    "name": "onlyOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5337,
                                    "src": "2043:9:39",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$__$",
                                        "typeString": "modifier ()"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2043:9:39"
                            }
                        ],
                        "name": "transferOwnership",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5363,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5362,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5387,
                                    "src": "2010:16:39",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5361,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2010:7:39",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2009:18:39"
                        },
                        "returnParameters": {
                            "id": 5366,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2053:0:39"
                        },
                        "scope": 5388,
                        "src": "1983:240:39",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "public"
                    }
                ],
                "scope": 5389,
                "src": "582:1643:39"
            }
        ],
        "src": "33:2193:39"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "exportedSymbols": {
                "Context": [
                    5279
                ],
                "Ownable": [
                    5388
                ]
            },
            "license": "MIT"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "^",
                        "0.7",
                        ".0"
                    ]
                },
                "id": 5281,
                "name": "PragmaDirective",
                "src": "33:23:39"
            },
            {
                "attributes": {
                    "SourceUnit": 5280,
                    "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
                    "file": "../GSN/Context.sol",
                    "scope": 5389,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 5282,
                "name": "ImportDirective",
                "src": "58:28:39"
            },
            {
                "attributes": {
                    "abstract": true,
                    "contractDependencies": [
                        5279
                    ],
                    "contractKind": "contract",
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        5388,
                        5279
                    ],
                    "name": "Ownable",
                    "scope": 5389
                },
                "children": [
                    {
                        "attributes": {
                            "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 By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\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."
                        },
                        "id": 5283,
                        "name": "StructuredDocumentation",
                        "src": "87:494:39"
                    },
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "Context",
                                    "referencedDeclaration": 5279,
                                    "type": "contract Context"
                                },
                                "id": 5284,
                                "name": "UserDefinedTypeName",
                                "src": "611:7:39"
                            }
                        ],
                        "id": 5285,
                        "name": "InheritanceSpecifier",
                        "src": "611:7:39"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_owner",
                            "scope": 5388,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 5286,
                                "name": "ElementaryTypeName",
                                "src": "625:7:39"
                            }
                        ],
                        "id": 5287,
                        "name": "VariableDeclaration",
                        "src": "625:22:39"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "OwnershipTransferred"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "previousOwner",
                                            "scope": 5293,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5288,
                                                "name": "ElementaryTypeName",
                                                "src": "681:7:39"
                                            }
                                        ],
                                        "id": 5289,
                                        "name": "VariableDeclaration",
                                        "src": "681:29:39"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "newOwner",
                                            "scope": 5293,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5290,
                                                "name": "ElementaryTypeName",
                                                "src": "712:7:39"
                                            }
                                        ],
                                        "id": 5291,
                                        "name": "VariableDeclaration",
                                        "src": "712:24:39"
                                    }
                                ],
                                "id": 5292,
                                "name": "ParameterList",
                                "src": "680:57:39"
                            }
                        ],
                        "id": 5293,
                        "name": "EventDefinition",
                        "src": "654:84:39"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": true,
                            "kind": "constructor",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "scope": 5388,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                                },
                                "id": 5294,
                                "name": "StructuredDocumentation",
                                "src": "744:91:39"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5295,
                                "name": "ParameterList",
                                "src": "852:2:39"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5296,
                                "name": "ParameterList",
                                "src": "855:0:39"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                5298
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "msgSender",
                                                    "scope": 5314,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 5297,
                                                        "name": "ElementaryTypeName",
                                                        "src": "865:7:39"
                                                    }
                                                ],
                                                "id": 5298,
                                                "name": "VariableDeclaration",
                                                "src": "865:17:39"
                                            },
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "address payable",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5267,
                                                            "type": "function () view returns (address payable)",
                                                            "value": "_msgSender"
                                                        },
                                                        "id": 5299,
                                                        "name": "Identifier",
                                                        "src": "885:10:39"
                                                    }
                                                ],
                                                "id": 5300,
                                                "name": "FunctionCall",
                                                "src": "885:12:39"
                                            }
                                        ],
                                        "id": 5301,
                                        "name": "VariableDeclarationStatement",
                                        "src": "865:32:39"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5287,
                                                            "type": "address",
                                                            "value": "_owner"
                                                        },
                                                        "id": 5302,
                                                        "name": "Identifier",
                                                        "src": "907:6:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5298,
                                                            "type": "address",
                                                            "value": "msgSender"
                                                        },
                                                        "id": 5303,
                                                        "name": "Identifier",
                                                        "src": "916:9:39"
                                                    }
                                                ],
                                                "id": 5304,
                                                "name": "Assignment",
                                                "src": "907:18:39"
                                            }
                                        ],
                                        "id": 5305,
                                        "name": "ExpressionStatement",
                                        "src": "907:18:39"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5293,
                                                            "type": "function (address,address)",
                                                            "value": "OwnershipTransferred"
                                                        },
                                                        "id": 5306,
                                                        "name": "Identifier",
                                                        "src": "940:20:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 5307,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "961:7:39"
                                                                    }
                                                                ],
                                                                "id": 5308,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "961:7:39"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5309,
                                                                "name": "Literal",
                                                                "src": "969:1:39"
                                                            }
                                                        ],
                                                        "id": 5310,
                                                        "name": "FunctionCall",
                                                        "src": "961:10:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5298,
                                                            "type": "address",
                                                            "value": "msgSender"
                                                        },
                                                        "id": 5311,
                                                        "name": "Identifier",
                                                        "src": "973:9:39"
                                                    }
                                                ],
                                                "id": 5312,
                                                "name": "FunctionCall",
                                                "src": "940:43:39"
                                            }
                                        ],
                                        "id": 5313,
                                        "name": "EmitStatement",
                                        "src": "935:48:39"
                                    }
                                ],
                                "id": 5314,
                                "name": "Block",
                                "src": "855:135:39"
                            }
                        ],
                        "id": 5315,
                        "name": "FunctionDefinition",
                        "src": "840:150:39"
                    },
                    {
                        "attributes": {
                            "functionSelector": "8da5cb5b",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "owner",
                            "scope": 5388,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "text": " @dev Returns the address of the current owner."
                                },
                                "id": 5316,
                                "name": "StructuredDocumentation",
                                "src": "996:65:39"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5317,
                                "name": "ParameterList",
                                "src": "1080:2:39"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 5324,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5318,
                                                "name": "ElementaryTypeName",
                                                "src": "1104:7:39"
                                            }
                                        ],
                                        "id": 5319,
                                        "name": "VariableDeclaration",
                                        "src": "1104:7:39"
                                    }
                                ],
                                "id": 5320,
                                "name": "ParameterList",
                                "src": "1103:9:39"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 5320
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 5287,
                                                    "type": "address",
                                                    "value": "_owner"
                                                },
                                                "id": 5321,
                                                "name": "Identifier",
                                                "src": "1130:6:39"
                                            }
                                        ],
                                        "id": 5322,
                                        "name": "Return",
                                        "src": "1123:13:39"
                                    }
                                ],
                                "id": 5323,
                                "name": "Block",
                                "src": "1113:30:39"
                            }
                        ],
                        "id": 5324,
                        "name": "FunctionDefinition",
                        "src": "1066:77:39"
                    },
                    {
                        "attributes": {
                            "name": "onlyOwner",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "text": " @dev Throws if called by any account other than the owner."
                                },
                                "id": 5325,
                                "name": "StructuredDocumentation",
                                "src": "1149:77:39"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5326,
                                "name": "ParameterList",
                                "src": "1249:2:39"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                                                    "typeString": "literal_string \"Ownable: caller is not the owner\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 5327,
                                                        "name": "Identifier",
                                                        "src": "1262:7:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5287,
                                                                    "type": "address",
                                                                    "value": "_owner"
                                                                },
                                                                "id": 5328,
                                                                "name": "Identifier",
                                                                "src": "1270:6:39"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "arguments": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address payable",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                null
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5267,
                                                                            "type": "function () view returns (address payable)",
                                                                            "value": "_msgSender"
                                                                        },
                                                                        "id": 5329,
                                                                        "name": "Identifier",
                                                                        "src": "1280:10:39"
                                                                    }
                                                                ],
                                                                "id": 5330,
                                                                "name": "FunctionCall",
                                                                "src": "1280:12:39"
                                                            }
                                                        ],
                                                        "id": 5331,
                                                        "name": "BinaryOperation",
                                                        "src": "1270:22:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Ownable: caller is not the owner\"",
                                                            "value": "Ownable: caller is not the owner"
                                                        },
                                                        "id": 5332,
                                                        "name": "Literal",
                                                        "src": "1294:34:39"
                                                    }
                                                ],
                                                "id": 5333,
                                                "name": "FunctionCall",
                                                "src": "1262:67:39"
                                            }
                                        ],
                                        "id": 5334,
                                        "name": "ExpressionStatement",
                                        "src": "1262:67:39"
                                    },
                                    {
                                        "id": 5335,
                                        "name": "PlaceholderStatement",
                                        "src": "1339:1:39"
                                    }
                                ],
                                "id": 5336,
                                "name": "Block",
                                "src": "1252:95:39"
                            }
                        ],
                        "id": 5337,
                        "name": "ModifierDefinition",
                        "src": "1231:116:39"
                    },
                    {
                        "attributes": {
                            "functionSelector": "715018a6",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "renounceOwnership",
                            "scope": 5388,
                            "stateMutability": "nonpayable",
                            "virtual": true,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "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."
                                },
                                "id": 5338,
                                "name": "StructuredDocumentation",
                                "src": "1353:331:39"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5339,
                                "name": "ParameterList",
                                "src": "1715:2:39"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5342,
                                "name": "ParameterList",
                                "src": "1743:0:39"
                            },
                            {
                                "attributes": {},
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 5337,
                                            "type": "modifier ()",
                                            "value": "onlyOwner"
                                        },
                                        "id": 5340,
                                        "name": "Identifier",
                                        "src": "1733:9:39"
                                    }
                                ],
                                "id": 5341,
                                "name": "ModifierInvocation",
                                "src": "1733:9:39"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5293,
                                                            "type": "function (address,address)",
                                                            "value": "OwnershipTransferred"
                                                        },
                                                        "id": 5343,
                                                        "name": "Identifier",
                                                        "src": "1758:20:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5287,
                                                            "type": "address",
                                                            "value": "_owner"
                                                        },
                                                        "id": 5344,
                                                        "name": "Identifier",
                                                        "src": "1779:6:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 5345,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "1787:7:39"
                                                                    }
                                                                ],
                                                                "id": 5346,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "1787:7:39"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5347,
                                                                "name": "Literal",
                                                                "src": "1795:1:39"
                                                            }
                                                        ],
                                                        "id": 5348,
                                                        "name": "FunctionCall",
                                                        "src": "1787:10:39"
                                                    }
                                                ],
                                                "id": 5349,
                                                "name": "FunctionCall",
                                                "src": "1758:40:39"
                                            }
                                        ],
                                        "id": 5350,
                                        "name": "EmitStatement",
                                        "src": "1753:45:39"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5287,
                                                            "type": "address",
                                                            "value": "_owner"
                                                        },
                                                        "id": 5351,
                                                        "name": "Identifier",
                                                        "src": "1808:6:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 5352,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "1817:7:39"
                                                                    }
                                                                ],
                                                                "id": 5353,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "1817:7:39"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5354,
                                                                "name": "Literal",
                                                                "src": "1825:1:39"
                                                            }
                                                        ],
                                                        "id": 5355,
                                                        "name": "FunctionCall",
                                                        "src": "1817:10:39"
                                                    }
                                                ],
                                                "id": 5356,
                                                "name": "Assignment",
                                                "src": "1808:19:39"
                                            }
                                        ],
                                        "id": 5357,
                                        "name": "ExpressionStatement",
                                        "src": "1808:19:39"
                                    }
                                ],
                                "id": 5358,
                                "name": "Block",
                                "src": "1743:91:39"
                            }
                        ],
                        "id": 5359,
                        "name": "FunctionDefinition",
                        "src": "1689:145:39"
                    },
                    {
                        "attributes": {
                            "functionSelector": "f2fde38b",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "transferOwnership",
                            "scope": 5388,
                            "stateMutability": "nonpayable",
                            "virtual": true,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                                },
                                "id": 5360,
                                "name": "StructuredDocumentation",
                                "src": "1840:138:39"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "newOwner",
                                            "scope": 5387,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5361,
                                                "name": "ElementaryTypeName",
                                                "src": "2010:7:39"
                                            }
                                        ],
                                        "id": 5362,
                                        "name": "VariableDeclaration",
                                        "src": "2010:16:39"
                                    }
                                ],
                                "id": 5363,
                                "name": "ParameterList",
                                "src": "2009:18:39"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5366,
                                "name": "ParameterList",
                                "src": "2053:0:39"
                            },
                            {
                                "attributes": {},
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 5337,
                                            "type": "modifier ()",
                                            "value": "onlyOwner"
                                        },
                                        "id": 5364,
                                        "name": "Identifier",
                                        "src": "2043:9:39"
                                    }
                                ],
                                "id": 5365,
                                "name": "ModifierInvocation",
                                "src": "2043:9:39"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                                                    "typeString": "literal_string \"Ownable: new owner is the zero address\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 5367,
                                                        "name": "Identifier",
                                                        "src": "2063:7:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "!=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5362,
                                                                    "type": "address",
                                                                    "value": "newOwner"
                                                                },
                                                                "id": 5368,
                                                                "name": "Identifier",
                                                                "src": "2071:8:39"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "address"
                                                                                },
                                                                                "id": 5369,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "2083:7:39"
                                                                            }
                                                                        ],
                                                                        "id": 5370,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "2083:7:39"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 5371,
                                                                        "name": "Literal",
                                                                        "src": "2091:1:39"
                                                                    }
                                                                ],
                                                                "id": 5372,
                                                                "name": "FunctionCall",
                                                                "src": "2083:10:39"
                                                            }
                                                        ],
                                                        "id": 5373,
                                                        "name": "BinaryOperation",
                                                        "src": "2071:22:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Ownable: new owner is the zero address\"",
                                                            "value": "Ownable: new owner is the zero address"
                                                        },
                                                        "id": 5374,
                                                        "name": "Literal",
                                                        "src": "2095:40:39"
                                                    }
                                                ],
                                                "id": 5375,
                                                "name": "FunctionCall",
                                                "src": "2063:73:39"
                                            }
                                        ],
                                        "id": 5376,
                                        "name": "ExpressionStatement",
                                        "src": "2063:73:39"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5293,
                                                            "type": "function (address,address)",
                                                            "value": "OwnershipTransferred"
                                                        },
                                                        "id": 5377,
                                                        "name": "Identifier",
                                                        "src": "2151:20:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5287,
                                                            "type": "address",
                                                            "value": "_owner"
                                                        },
                                                        "id": 5378,
                                                        "name": "Identifier",
                                                        "src": "2172:6:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5362,
                                                            "type": "address",
                                                            "value": "newOwner"
                                                        },
                                                        "id": 5379,
                                                        "name": "Identifier",
                                                        "src": "2180:8:39"
                                                    }
                                                ],
                                                "id": 5380,
                                                "name": "FunctionCall",
                                                "src": "2151:38:39"
                                            }
                                        ],
                                        "id": 5381,
                                        "name": "EmitStatement",
                                        "src": "2146:43:39"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5287,
                                                            "type": "address",
                                                            "value": "_owner"
                                                        },
                                                        "id": 5382,
                                                        "name": "Identifier",
                                                        "src": "2199:6:39"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5362,
                                                            "type": "address",
                                                            "value": "newOwner"
                                                        },
                                                        "id": 5383,
                                                        "name": "Identifier",
                                                        "src": "2208:8:39"
                                                    }
                                                ],
                                                "id": 5384,
                                                "name": "Assignment",
                                                "src": "2199:17:39"
                                            }
                                        ],
                                        "id": 5385,
                                        "name": "ExpressionStatement",
                                        "src": "2199:17:39"
                                    }
                                ],
                                "id": 5386,
                                "name": "Block",
                                "src": "2053:170:39"
                            }
                        ],
                        "id": 5387,
                        "name": "FunctionDefinition",
                        "src": "1983:240:39"
                    }
                ],
                "id": 5388,
                "name": "ContractDefinition",
                "src": "582:1643:39"
            }
        ],
        "id": 5389,
        "name": "SourceUnit",
        "src": "33:2193:39"
    },
    "compiler": {
        "name": "solc",
        "version": "0.7.3+commit.9bfce1f6.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.3.3",
    "updatedAt": "2021-02-01T23:13:33.276Z",
    "devdoc": {
        "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
        "kind": "dev",
        "methods": {
            "constructor": {
                "details": "Initializes the contract setting the deployer as the initial owner."
            },
            "owner()": {
                "details": "Returns the address of the current owner."
            },
            "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
            },
            "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
