{
  "contractName": "AuthorizedAddresses",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x715018a6"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x8da5cb5b"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x8f32d59b"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xf2fde38b"
    },
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor",
      "signature": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event",
      "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "a",
          "type": "address"
        }
      ],
      "name": "authorizeAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x4a5db3b5"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "a",
          "type": "address"
        }
      ],
      "name": "unauthorizeAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xbbd4845c"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "address"
        }
      ],
      "name": "isAddressAuthorized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xced3fb9c"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060008054600160a060020a0319163317808255604051600160a060020a039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180600061007064010000000061009d810204565b600160a060020a031681526020810191909152604001600020805460ff19169115159190911790556100ac565b600054600160a060020a031690565b6103b8806100bb6000396000f3fe6080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634a5db3b58114610087578063715018a6146100bc5780638da5cb5b146100d15780638f32d59b14610102578063bbd4845c1461012b578063ced3fb9c1461015e578063f2fde38b14610191575b600080fd5b34801561009357600080fd5b506100ba600480360360208110156100aa57600080fd5b5035600160a060020a03166101c4565b005b3480156100c857600080fd5b506100ba610209565b3480156100dd57600080fd5b506100e6610273565b60408051600160a060020a039092168252519081900360200190f35b34801561010e57600080fd5b50610117610282565b604080519115158252519081900360200190f35b34801561013757600080fd5b506100ba6004803603602081101561014e57600080fd5b5035600160a060020a0316610293565b34801561016a57600080fd5b506101176004803603602081101561018157600080fd5b5035600160a060020a03166102d2565b34801561019d57600080fd5b506100ba600480360360208110156101b457600080fd5b5035600160a060020a03166102f0565b3360009081526001602052604090205460ff1615156101e257600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610211610282565b151561021c57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b600054600160a060020a0316331490565b3360009081526001602052604090205460ff1615156102b157600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b600160a060020a031660009081526001602052604090205460ff1690565b6102f8610282565b151561030357600080fd5b61030c8161030f565b50565b600160a060020a038116151561032457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556fea165627a7a72305820df6865d379487e5d5c7bf3550ead954ade39ba2d1da7d780d27641c21fc15ac70029",
  "deployedBytecode": "0x6080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634a5db3b58114610087578063715018a6146100bc5780638da5cb5b146100d15780638f32d59b14610102578063bbd4845c1461012b578063ced3fb9c1461015e578063f2fde38b14610191575b600080fd5b34801561009357600080fd5b506100ba600480360360208110156100aa57600080fd5b5035600160a060020a03166101c4565b005b3480156100c857600080fd5b506100ba610209565b3480156100dd57600080fd5b506100e6610273565b60408051600160a060020a039092168252519081900360200190f35b34801561010e57600080fd5b50610117610282565b604080519115158252519081900360200190f35b34801561013757600080fd5b506100ba6004803603602081101561014e57600080fd5b5035600160a060020a0316610293565b34801561016a57600080fd5b506101176004803603602081101561018157600080fd5b5035600160a060020a03166102d2565b34801561019d57600080fd5b506100ba600480360360208110156101b457600080fd5b5035600160a060020a03166102f0565b3360009081526001602052604090205460ff1615156101e257600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610211610282565b151561021c57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b600054600160a060020a0316331490565b3360009081526001602052604090205460ff1615156102b157600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b600160a060020a031660009081526001602052604090205460ff1690565b6102f8610282565b151561030357600080fd5b61030c8161030f565b50565b600160a060020a038116151561032457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556fea165627a7a72305820df6865d379487e5d5c7bf3550ead954ade39ba2d1da7d780d27641c21fc15ac70029",
  "sourceMap": "144:1440:0:-;;;459:83;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;515:6:15;:19;;-1:-1:-1;;;;;;515:19:15;524:10;515:19;;;;549:40;;-1:-1:-1;;;;;582:6:15;;;;;515;549:40;;515:6;;549:40;531:4:0;;500:28;520:7;:5;;;;:7;:::i;:::-;-1:-1:-1;;;;;500:28:0;;;;;;;;;;;;-1:-1:-1;500:28:0;:35;;-1:-1:-1;;500:35:0;;;;;;;;;;144:1440;;659:77:15;697:7;723:6;-1:-1:-1;;;;;723:6:15;659:77;:::o;144:1440:0:-;;;;;;;",
  "deployedSourceMap": "144:1440:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;742:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;742:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;742:140:0;-1:-1:-1;;;;;742:140:0;;;;;1347:137:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:137:15;;;;659:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:15;;;;;;;;-1:-1:-1;;;;;659:77:15;;;;;;;;;;;;;;979:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:15;;;;;;;;;;;;;;;;;;;;;;1090:143:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1090:143:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1090:143:0;-1:-1:-1;;;;;1090:143:0;;;1469:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1469:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1469:113:0;-1:-1:-1;;;;;1469:113:0;;;1655:107:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1655:107:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:15;-1:-1:-1;;;;;1655:107:15;;;742:140:0;824:10;804:31;;;;:19;:31;;;;;;;;796:40;;;;;;;;-1:-1:-1;;;;;846:22:0;;;;;871:4;846:22;;;;;;;;:29;;-1:-1:-1;;846:29:0;;;;;;742:140::o;1347:137:15:-;863:9;:7;:9::i;:::-;855:18;;;;;;;;1445:1;1429:6;;1408:40;;-1:-1:-1;;;;;1429:6:15;;;;1408:40;;1445:1;;1408:40;1475:1;1458:19;;-1:-1:-1;;1458:19:15;;;1347:137::o;659:77::-;697:7;723:6;-1:-1:-1;;;;;723:6:15;659:77;:::o;979:90::-;1019:4;1056:6;-1:-1:-1;;;;;1056:6:15;1042:10;:20;;979:90::o;1090:143:0:-;1174:10;1154:31;;;;:19;:31;;;;;;;;1146:40;;;;;;;;-1:-1:-1;;;;;1196:22:0;1221:5;1196:22;;;:19;:22;;;;;:30;;-1:-1:-1;;1196:30:0;;;1090:143::o;1469:113::-;-1:-1:-1;;;;;1553:22:0;1530:4;1553:22;;;:19;:22;;;;;;;;;1469:113::o;1655:107:15:-;863:9;:7;:9::i;:::-;855:18;;;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;1906:183::-;-1:-1:-1;;;;;1979:22:15;;;;1971:31;;;;;;2038:6;;;2017:38;;-1:-1:-1;;;;;2017:38:15;;;;2038:6;;;2017:38;;;2065:6;:17;;-1:-1:-1;;2065:17:15;-1:-1:-1;;;;;2065:17:15;;;;;;;;;;1906:183::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\n/** @title AuthorizedAddresses\n    @author Freydal\n*/\ncontract AuthorizedAddresses is Ownable {\n\n    // Mapping storing address permissions\n    mapping(address => bool) private authorizedAddresses;\n\n    /** @dev Constructor initializes with the creator permission set to true.\n        @notice Constructor initializes with the creator permission set to true.\n    */\n    constructor() Ownable() public {\n        authorizedAddresses[owner()] = true;\n    }\n\n    /** @dev Authorizes the address by setting the mapping value to true\n        @notice Authorizes the address by setting the mapping value to true\n        @param a Address to authorize\n    */\n    function authorizeAddress(address a) public {\n        require(authorizedAddresses[msg.sender]);\n        authorizedAddresses[a] = true;\n    }\n\n    /** @dev Unauthorizes the address by setting the mapping value to false\n        @notice Unauthorizes the address by setting the mapping value to false\n        @param a Address to unauthorize\n    */\n    function unauthorizeAddress(address a) public {\n        require(authorizedAddresses[msg.sender]);\n        authorizedAddresses[a] = false;\n    }\n\n    /** @dev Verify if address is authorized by reading contract mapping\n        @notice Verify if address is authorized by reading contract mapping\n        @param a Address to get authorized value.\n        @return boolean\n    */\n    function isAddressAuthorized(address a) public view returns (bool) {\n        return authorizedAddresses[a];\n    }\n}\n",
  "sourcePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/access_control/AuthorizedAddresses.sol",
  "ast": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/access_control/AuthorizedAddresses.sol",
    "exportedSymbols": {
      "AuthorizedAddresses": [
        72
      ]
    },
    "id": 73,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 73,
        "sourceUnit": 4014,
        "src": "25:63:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4013,
              "src": "176:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4013",
                "typeString": "contract Ownable"
              }
            },
            "id": 4,
            "nodeType": "InheritanceSpecifier",
            "src": "176:7:0"
          }
        ],
        "contractDependencies": [
          4013
        ],
        "contractKind": "contract",
        "documentation": "@title AuthorizedAddresses\n@author Freydal",
        "fullyImplemented": true,
        "id": 72,
        "linearizedBaseContracts": [
          72,
          4013
        ],
        "name": "AuthorizedAddresses",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 8,
            "name": "authorizedAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 72,
            "src": "234:52:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 7,
              "keyType": {
                "id": 5,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "242:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "234:24:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 6,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "253:4:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 20,
              "nodeType": "Block",
              "src": "490:52:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13,
                        "name": "authorizedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8,
                        "src": "500:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 16,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 14,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3938,
                          "src": "520:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 15,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "520:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "500:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 17,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "531:4:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "500:35:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19,
                  "nodeType": "ExpressionStatement",
                  "src": "500:35:0"
                }
              ]
            },
            "documentation": "@dev Constructor initializes with the creator permission set to true.\n@notice Constructor initializes with the creator permission set to true.",
            "id": 21,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 11,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10,
                  "name": "Ownable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4013,
                  "src": "473:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Ownable_$4013_$",
                    "typeString": "type(contract Ownable)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "473:9:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "470:2:0"
            },
            "returnParameters": {
              "id": 12,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "490:0:0"
            },
            "scope": 72,
            "src": "459:83:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 39,
              "nodeType": "Block",
              "src": "786:96:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 27,
                          "name": "authorizedAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8,
                          "src": "804:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 30,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 28,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4569,
                            "src": "824:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 29,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "824:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "804:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 26,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "796:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 31,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "796:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 32,
                  "nodeType": "ExpressionStatement",
                  "src": "796:40:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 37,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 33,
                        "name": "authorizedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8,
                        "src": "846:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 35,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 34,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "866:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "846:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 36,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "871:4:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "846:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 38,
                  "nodeType": "ExpressionStatement",
                  "src": "846:29:0"
                }
              ]
            },
            "documentation": "@dev Authorizes the address by setting the mapping value to true\n@notice Authorizes the address by setting the mapping value to true\n@param a Address to authorize",
            "id": 40,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "authorizeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 40,
                  "src": "768:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "768:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "767:11:0"
            },
            "returnParameters": {
              "id": 25,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "786:0:0"
            },
            "scope": 72,
            "src": "742:140:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 58,
              "nodeType": "Block",
              "src": "1136:97:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 46,
                          "name": "authorizedAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8,
                          "src": "1154:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 49,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 47,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4569,
                            "src": "1174:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 48,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1174:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1154:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 45,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "1146:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 50,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1146:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51,
                  "nodeType": "ExpressionStatement",
                  "src": "1146:40:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 56,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 52,
                        "name": "authorizedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8,
                        "src": "1196:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 54,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 53,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "1216:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1196:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 55,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1221:5:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1196:30:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 57,
                  "nodeType": "ExpressionStatement",
                  "src": "1196:30:0"
                }
              ]
            },
            "documentation": "@dev Unauthorizes the address by setting the mapping value to false\n@notice Unauthorizes the address by setting the mapping value to false\n@param a Address to unauthorize",
            "id": 59,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "unauthorizeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 43,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 59,
                  "src": "1118:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 41,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1117:11:0"
            },
            "returnParameters": {
              "id": 44,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1136:0:0"
            },
            "scope": 72,
            "src": "1090:143:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 70,
              "nodeType": "Block",
              "src": "1536:46:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 66,
                      "name": "authorizedAddresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8,
                      "src": "1553:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 68,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 67,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61,
                      "src": "1573:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1553:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 65,
                  "id": 69,
                  "nodeType": "Return",
                  "src": "1546:29:0"
                }
              ]
            },
            "documentation": "@dev Verify if address is authorized by reading contract mapping\n@notice Verify if address is authorized by reading contract mapping\n@param a Address to get authorized value.\n@return boolean",
            "id": 71,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAddressAuthorized",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 62,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 61,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "1498:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 60,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1498:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1497:11:0"
            },
            "returnParameters": {
              "id": 65,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "1530:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 63,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1530:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1529:6:0"
            },
            "scope": 72,
            "src": "1469:113:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 73,
        "src": "144:1440:0"
      }
    ],
    "src": "0:1585:0"
  },
  "legacyAST": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/access_control/AuthorizedAddresses.sol",
    "exportedSymbols": {
      "AuthorizedAddresses": [
        72
      ]
    },
    "id": 73,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 73,
        "sourceUnit": 4014,
        "src": "25:63:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4013,
              "src": "176:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4013",
                "typeString": "contract Ownable"
              }
            },
            "id": 4,
            "nodeType": "InheritanceSpecifier",
            "src": "176:7:0"
          }
        ],
        "contractDependencies": [
          4013
        ],
        "contractKind": "contract",
        "documentation": "@title AuthorizedAddresses\n@author Freydal",
        "fullyImplemented": true,
        "id": 72,
        "linearizedBaseContracts": [
          72,
          4013
        ],
        "name": "AuthorizedAddresses",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 8,
            "name": "authorizedAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 72,
            "src": "234:52:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 7,
              "keyType": {
                "id": 5,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "242:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "234:24:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 6,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "253:4:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 20,
              "nodeType": "Block",
              "src": "490:52:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13,
                        "name": "authorizedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8,
                        "src": "500:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 16,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 14,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3938,
                          "src": "520:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 15,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "520:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "500:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 17,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "531:4:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "500:35:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19,
                  "nodeType": "ExpressionStatement",
                  "src": "500:35:0"
                }
              ]
            },
            "documentation": "@dev Constructor initializes with the creator permission set to true.\n@notice Constructor initializes with the creator permission set to true.",
            "id": 21,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 11,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10,
                  "name": "Ownable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4013,
                  "src": "473:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Ownable_$4013_$",
                    "typeString": "type(contract Ownable)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "473:9:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "470:2:0"
            },
            "returnParameters": {
              "id": 12,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "490:0:0"
            },
            "scope": 72,
            "src": "459:83:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 39,
              "nodeType": "Block",
              "src": "786:96:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 27,
                          "name": "authorizedAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8,
                          "src": "804:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 30,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 28,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4569,
                            "src": "824:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 29,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "824:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "804:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 26,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "796:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 31,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "796:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 32,
                  "nodeType": "ExpressionStatement",
                  "src": "796:40:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 37,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 33,
                        "name": "authorizedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8,
                        "src": "846:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 35,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 34,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "866:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "846:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 36,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "871:4:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "846:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 38,
                  "nodeType": "ExpressionStatement",
                  "src": "846:29:0"
                }
              ]
            },
            "documentation": "@dev Authorizes the address by setting the mapping value to true\n@notice Authorizes the address by setting the mapping value to true\n@param a Address to authorize",
            "id": 40,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "authorizeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 40,
                  "src": "768:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "768:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "767:11:0"
            },
            "returnParameters": {
              "id": 25,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "786:0:0"
            },
            "scope": 72,
            "src": "742:140:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 58,
              "nodeType": "Block",
              "src": "1136:97:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 46,
                          "name": "authorizedAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8,
                          "src": "1154:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 49,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 47,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4569,
                            "src": "1174:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 48,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1174:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1154:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 45,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "1146:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 50,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1146:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51,
                  "nodeType": "ExpressionStatement",
                  "src": "1146:40:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 56,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 52,
                        "name": "authorizedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8,
                        "src": "1196:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 54,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 53,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "1216:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1196:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 55,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1221:5:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1196:30:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 57,
                  "nodeType": "ExpressionStatement",
                  "src": "1196:30:0"
                }
              ]
            },
            "documentation": "@dev Unauthorizes the address by setting the mapping value to false\n@notice Unauthorizes the address by setting the mapping value to false\n@param a Address to unauthorize",
            "id": 59,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "unauthorizeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 43,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 59,
                  "src": "1118:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 41,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1117:11:0"
            },
            "returnParameters": {
              "id": 44,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1136:0:0"
            },
            "scope": 72,
            "src": "1090:143:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 70,
              "nodeType": "Block",
              "src": "1536:46:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 66,
                      "name": "authorizedAddresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8,
                      "src": "1553:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 68,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 67,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61,
                      "src": "1573:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1553:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 65,
                  "id": 69,
                  "nodeType": "Return",
                  "src": "1546:29:0"
                }
              ]
            },
            "documentation": "@dev Verify if address is authorized by reading contract mapping\n@notice Verify if address is authorized by reading contract mapping\n@param a Address to get authorized value.\n@return boolean",
            "id": 71,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAddressAuthorized",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 62,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 61,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "1498:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 60,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1498:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1497:11:0"
            },
            "returnParameters": {
              "id": 65,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "1530:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 63,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1530:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1529:6:0"
            },
            "scope": 72,
            "src": "1469:113:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 73,
        "src": "144:1440:0"
      }
    ],
    "src": "0:1585:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event",
          "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
        }
      },
      "links": {},
      "address": "0x5475aaa2BAD719af54851d6352ca452A12981E3e",
      "transactionHash": "0x183f252d8e5a0bd14a7b5a0f1f342ce86b332ce7fd17fc376c3841b8c54e31a2"
    },
    "6174": {
      "events": {},
      "links": {},
      "address": "0x46572f9082dd2429c2c138FA9483a67d4F29D423",
      "transactionHash": "0x8dff216766b383ef110484c38b02545c2ca63082fb4319b03da7b557d3a0d35c"
    }
  },
  "schemaVersion": "3.0.2",
  "updatedAt": "2019-04-04T17:37:24.635Z",
  "devdoc": {
    "author": "Freydal",
    "methods": {
      "authorizeAddress(address)": {
        "details": "Authorizes the address by setting the mapping value to true",
        "params": {
          "a": "Address to authorize"
        }
      },
      "constructor": {
        "details": "Constructor initializes with the creator permission set to true."
      },
      "isAddressAuthorized(address)": {
        "details": "Verify if address is authorized by reading contract mapping",
        "params": {
          "a": "Address to get authorized value."
        },
        "return": "boolean"
      },
      "isOwner()": {
        "return": "true if `msg.sender` is the owner of the contract."
      },
      "owner()": {
        "return": "the address of the owner."
      },
      "renounceOwnership()": {
        "details": "Allows the current owner to relinquish control of the contract."
      },
      "transferOwnership(address)": {
        "details": "Allows the current owner to transfer control of the contract to a newOwner.",
        "params": {
          "newOwner": "The address to transfer ownership to."
        }
      },
      "unauthorizeAddress(address)": {
        "details": "Unauthorizes the address by setting the mapping value to false",
        "params": {
          "a": "Address to unauthorize"
        }
      }
    },
    "title": "AuthorizedAddresses"
  },
  "userdoc": {
    "methods": {
      "authorizeAddress(address)": {
        "notice": "Authorizes the address by setting the mapping value to true"
      },
      "constructor": "Constructor initializes with the creator permission set to true.",
      "isAddressAuthorized(address)": {
        "notice": "Verify if address is authorized by reading contract mapping"
      },
      "renounceOwnership()": {
        "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
      },
      "unauthorizeAddress(address)": {
        "notice": "Unauthorizes the address by setting the mapping value to false"
      }
    }
  }
}