{
  "contractName": "ManualApprovalTransferManager",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "manualBlockings",
      "outputs": [
        {
          "name": "expiryTime",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "takeFee",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "manualApprovals",
      "outputs": [
        {
          "name": "allowance",
          "type": "uint256"
        },
        {
          "name": "expiryTime",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "TRANSFER_APPROVAL",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signingAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "issuanceAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "FEE_ADMIN",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_securityToken",
          "type": "address"
        },
        {
          "name": "_polyAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_allowance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_expiryTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_addedBy",
          "type": "address"
        }
      ],
      "name": "LogAddManualApproval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_expiryTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_addedBy",
          "type": "address"
        }
      ],
      "name": "LogAddManualBlocking",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_addedBy",
          "type": "address"
        }
      ],
      "name": "LogRevokeManualApproval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_addedBy",
          "type": "address"
        }
      ],
      "name": "LogRevokeManualBlocking",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestammp",
          "type": "uint256"
        }
      ],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Unpause",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitFunction",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_isTransfer",
          "type": "bool"
        }
      ],
      "name": "verifyTransfer",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_allowance",
          "type": "uint256"
        },
        {
          "name": "_expiryTime",
          "type": "uint256"
        }
      ],
      "name": "addManualApproval",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_expiryTime",
          "type": "uint256"
        }
      ],
      "name": "addManualBlocking",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "revokeManualApproval",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "revokeManualBlocking",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526002805460a060020a60ff021916905560038054600160a060020a031990811690915560048054909116905534801561003c57600080fd5b5060405160408061196183398101604052805160209091015160018054600160a060020a03938416600160a060020a03199182161790915560008054821633179055600280549390921692169190911790556118c48061009d6000396000f3006080604052600436106100f85763ffffffff60e060020a6000350416631613ec9d81146100fd57806339d04b6c146101475780633f4ba83a1461017657806340bb79851461018b5780635c975abb146101c45780635f7619a4146101ed5780636faa22a51461020557806370aad962146102365780637915c9e0146102605780637dc32b0b146102b35780638456cb59146102da578063889b2cc3146102ef5780639f7cd0ef1461032f578063b3e82dc914610344578063b3fac8ce14610359578063b84dfbd21461036e578063c3a07df614610383578063c45a0155146103e8578063d70afa96146103fd578063ed9d787314610412575b600080fd5b34801561010957600080fd5b50610112610439565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561015357600080fd5b50610174600160a060020a036004358116906024351660443560643561043e565b005b34801561018257600080fd5b50610174610751565b34801561019757600080fd5b506101b2600160a060020a0360043581169060243516610839565b60408051918252519081900360200190f35b3480156101d057600080fd5b506101d9610856565b604080519115158252519081900360200190f35b3480156101f957600080fd5b506101d9600435610866565b34801561021157600080fd5b5061021a610b7d565b60408051600160a060020a039092168252519081900360200190f35b34801561024257600080fd5b50610174600160a060020a0360043581169060243516604435610b8c565b34801561026c57600080fd5b5061028f600160a060020a03600435811690602435166044356064351515610e84565b6040518082600381111561029f57fe5b60ff16815260200191505060405180910390f35b3480156102bf57600080fd5b50610174600160a060020a0360043581169060243516610f9f565b3480156102e657600080fd5b50610174611236565b3480156102fb57600080fd5b50610316600160a060020a036004358116906024351661131c565b6040805192835260208301919091528051918290030190f35b34801561033b57600080fd5b506101b2611340565b34801561035057600080fd5b5061021a611352565b34801561036557600080fd5b5061021a611361565b34801561037a57600080fd5b5061021a611370565b34801561038f57600080fd5b5061039861137f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103d45781810151838201526020016103bc565b505050509050019250505060405180910390f35b3480156103f457600080fd5b5061021a6113d1565b34801561040957600080fd5b506101b26113e0565b34801561041e57600080fd5b50610174600160a060020a0360043581169060243516611404565b600090565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b505050506040513d60208110156104cd57600080fd5b505160005433600160a060020a0392831681149450911614905081806104f05750805b8061058057506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b505050506040513d602081101561057d57600080fd5b50515b15156105c4576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a0387161515610612576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a0386161515610660576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b4284116106b7576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c6964206578706972792074696d6500000000000000000000000000604482015290519081900360640190fd5b6040805180820182528681526020808201878152600160a060020a03808c16600081815260058552868120928d168082529285528690209451855591516001909401939093558351908152908101919091528082018790526060810186905233608082015290517f90ee15f89c9a607f731c9e21490aa4fb787765ca244780c4cf14e60b6982fd6b9181900360a00190a150505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107a457600080fd5b505af11580156107b8573d6000803e3d6000fd5b505050506040513d60208110156107ce57600080fd5b5051600160a060020a0316331461082f576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610837611695565b565b600660209081526000928352604080842090915290825290205481565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156108df57600080fd5b505af11580156108f3573d6000803e3d6000fd5b505050506040513d602081101561090957600080fd5b505160005433600160a060020a03928316811494509116149050818061092c5750805b806109bc57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b505050506040513d60208110156109b957600080fd5b50515b1515610a00576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b158015610a6f57600080fd5b505af1158015610a83573d6000803e3d6000fd5b505050506040513d6020811015610a9957600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b158015610af057600080fd5b505af1158015610b04573d6000803e3d6000fd5b505050506040513d6020811015610b1a57600080fd5b50511515610b72576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600254600160a060020a031681565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b505050506040513d6020811015610c1b57600080fd5b505160005433600160a060020a039283168114945091161490508180610c3e5750805b80610cce57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d6020811015610ccb57600080fd5b50515b1515610d12576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a0386161515610d60576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a0385161515610dae576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b428411610e05576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c6964206578706972792074696d6500000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352868252600160a060020a03808a16600081815260068452858120928b16808252928452859020935190935583519283529082015280820186905233606082015290517f025175e118727e402afd2852f5b550d8c3dd87e2d53f7315e978b815bbd31d189181900360800190a1505050505050565b60025460009060a060020a900460ff161515610b7257600160a060020a038086166000908152600660209081526040808320938816835292905220544211610ece57506000610f97565b600160a060020a038086166000908152600560209081526040808320938816835292905220600101544211801590610f2b5750600160a060020a038086166000908152600560209081526040808320938816835292905220548311155b15610b72578115610f9357600160a060020a03808616600090815260056020908152604080832093881683529290522054610f6c908463ffffffff61174b16565b600160a060020a038087166000908152600560209081526040808320938916835292905220555b5060025b949350505050565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561100457600080fd5b505af1158015611018573d6000803e3d6000fd5b505050506040513d602081101561102e57600080fd5b505160005433600160a060020a0392831681149450911614905081806110515750805b806110e157506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156110b457600080fd5b505af11580156110c8573d6000803e3d6000fd5b505050506040513d60208110156110de57600080fd5b50515b1515611125576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a0385161515611173576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a03841615156111c1576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b600160a060020a038086166000818152600560209081526040808320948916808452948252808320838155600101929092558151928352820192909252338183015290517f9b2aceb68830f5eb0ad13b4e30560c85439547deab0060ce984aae641d34b0069181900360600190a15050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561128957600080fd5b505af115801561129d573d6000803e3d6000fd5b505050506040513d60208110156112b357600080fd5b5051600160a060020a03163314611314576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b61083761175d565b60056020908152600092835260408084209091529082529020805460019091015482565b60008051602061185983398151915281565b600454600160a060020a031681565b600354600160a060020a031681565b600154600160a060020a031681565b604080516001808252818301909252606091829190602080830190803883390190505090506000805160206118598339815191528160008151811015156113c257fe5b60209081029091010152905090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050506040513d602081101561149357600080fd5b505160005433600160a060020a0392831681149450911614905081806114b65750805b8061154657506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506040513d602081101561154357600080fd5b50515b151561158a576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a03851615156115d8576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a0384161515611626576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b600160a060020a038086166000818152600660209081526040808320948916808452948252808320929092558151928352820192909252338183015290517f1032078cb6646bf29e5931e893a691532173df464fbddfbe03d8f2da71c643bd9181900360600190a15050505050565b60025460a060020a900460ff1615156116f8576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60008282111561175757fe5b50900390565b60025460a060020a900460ff16156117bf576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a15600496e76616c69642066726f6d2061646472657373000000000000000000000000496e76616c696420746f206164647265737300000000000000000000000000005452414e534645525f415050524f56414c0000000000000000000000000000005065726d697373696f6e20636865636b206661696c6564000000000000000000a165627a7a723058203673092b8469ad061dd200d9feb726a74d1d166347b372572a043fe78a242b000029",
  "deployedBytecode": "0x6080604052600436106100f85763ffffffff60e060020a6000350416631613ec9d81146100fd57806339d04b6c146101475780633f4ba83a1461017657806340bb79851461018b5780635c975abb146101c45780635f7619a4146101ed5780636faa22a51461020557806370aad962146102365780637915c9e0146102605780637dc32b0b146102b35780638456cb59146102da578063889b2cc3146102ef5780639f7cd0ef1461032f578063b3e82dc914610344578063b3fac8ce14610359578063b84dfbd21461036e578063c3a07df614610383578063c45a0155146103e8578063d70afa96146103fd578063ed9d787314610412575b600080fd5b34801561010957600080fd5b50610112610439565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561015357600080fd5b50610174600160a060020a036004358116906024351660443560643561043e565b005b34801561018257600080fd5b50610174610751565b34801561019757600080fd5b506101b2600160a060020a0360043581169060243516610839565b60408051918252519081900360200190f35b3480156101d057600080fd5b506101d9610856565b604080519115158252519081900360200190f35b3480156101f957600080fd5b506101d9600435610866565b34801561021157600080fd5b5061021a610b7d565b60408051600160a060020a039092168252519081900360200190f35b34801561024257600080fd5b50610174600160a060020a0360043581169060243516604435610b8c565b34801561026c57600080fd5b5061028f600160a060020a03600435811690602435166044356064351515610e84565b6040518082600381111561029f57fe5b60ff16815260200191505060405180910390f35b3480156102bf57600080fd5b50610174600160a060020a0360043581169060243516610f9f565b3480156102e657600080fd5b50610174611236565b3480156102fb57600080fd5b50610316600160a060020a036004358116906024351661131c565b6040805192835260208301919091528051918290030190f35b34801561033b57600080fd5b506101b2611340565b34801561035057600080fd5b5061021a611352565b34801561036557600080fd5b5061021a611361565b34801561037a57600080fd5b5061021a611370565b34801561038f57600080fd5b5061039861137f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103d45781810151838201526020016103bc565b505050509050019250505060405180910390f35b3480156103f457600080fd5b5061021a6113d1565b34801561040957600080fd5b506101b26113e0565b34801561041e57600080fd5b50610174600160a060020a0360043581169060243516611404565b600090565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b505050506040513d60208110156104cd57600080fd5b505160005433600160a060020a0392831681149450911614905081806104f05750805b8061058057506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b505050506040513d602081101561057d57600080fd5b50515b15156105c4576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a0387161515610612576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a0386161515610660576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b4284116106b7576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c6964206578706972792074696d6500000000000000000000000000604482015290519081900360640190fd5b6040805180820182528681526020808201878152600160a060020a03808c16600081815260058552868120928d168082529285528690209451855591516001909401939093558351908152908101919091528082018790526060810186905233608082015290517f90ee15f89c9a607f731c9e21490aa4fb787765ca244780c4cf14e60b6982fd6b9181900360a00190a150505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107a457600080fd5b505af11580156107b8573d6000803e3d6000fd5b505050506040513d60208110156107ce57600080fd5b5051600160a060020a0316331461082f576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610837611695565b565b600660209081526000928352604080842090915290825290205481565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156108df57600080fd5b505af11580156108f3573d6000803e3d6000fd5b505050506040513d602081101561090957600080fd5b505160005433600160a060020a03928316811494509116149050818061092c5750805b806109bc57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b505050506040513d60208110156109b957600080fd5b50515b1515610a00576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b158015610a6f57600080fd5b505af1158015610a83573d6000803e3d6000fd5b505050506040513d6020811015610a9957600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b158015610af057600080fd5b505af1158015610b04573d6000803e3d6000fd5b505050506040513d6020811015610b1a57600080fd5b50511515610b72576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600254600160a060020a031681565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b505050506040513d6020811015610c1b57600080fd5b505160005433600160a060020a039283168114945091161490508180610c3e5750805b80610cce57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d6020811015610ccb57600080fd5b50515b1515610d12576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a0386161515610d60576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a0385161515610dae576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b428411610e05576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c6964206578706972792074696d6500000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352868252600160a060020a03808a16600081815260068452858120928b16808252928452859020935190935583519283529082015280820186905233606082015290517f025175e118727e402afd2852f5b550d8c3dd87e2d53f7315e978b815bbd31d189181900360800190a1505050505050565b60025460009060a060020a900460ff161515610b7257600160a060020a038086166000908152600660209081526040808320938816835292905220544211610ece57506000610f97565b600160a060020a038086166000908152600560209081526040808320938816835292905220600101544211801590610f2b5750600160a060020a038086166000908152600560209081526040808320938816835292905220548311155b15610b72578115610f9357600160a060020a03808616600090815260056020908152604080832093881683529290522054610f6c908463ffffffff61174b16565b600160a060020a038087166000908152600560209081526040808320938916835292905220555b5060025b949350505050565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561100457600080fd5b505af1158015611018573d6000803e3d6000fd5b505050506040513d602081101561102e57600080fd5b505160005433600160a060020a0392831681149450911614905081806110515750805b806110e157506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156110b457600080fd5b505af11580156110c8573d6000803e3d6000fd5b505050506040513d60208110156110de57600080fd5b50515b1515611125576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a0385161515611173576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a03841615156111c1576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b600160a060020a038086166000818152600560209081526040808320948916808452948252808320838155600101929092558151928352820192909252338183015290517f9b2aceb68830f5eb0ad13b4e30560c85439547deab0060ce984aae641d34b0069181900360600190a15050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561128957600080fd5b505af115801561129d573d6000803e3d6000fd5b505050506040513d60208110156112b357600080fd5b5051600160a060020a03163314611314576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b61083761175d565b60056020908152600092835260408084209091529082529020805460019091015482565b60008051602061185983398151915281565b600454600160a060020a031681565b600354600160a060020a031681565b600154600160a060020a031681565b604080516001808252818301909252606091829190602080830190803883390190505090506000805160206118598339815191528160008151811015156113c257fe5b60209081029091010152905090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b600080516020611859833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050506040513d602081101561149357600080fd5b505160005433600160a060020a0392831681149450911614905081806114b65750805b8061154657506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506040513d602081101561154357600080fd5b50515b151561158a576040805160e560020a62461bcd0281526020600482015260176024820152600080516020611879833981519152604482015290519081900360640190fd5b600160a060020a03851615156115d8576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611819833981519152604482015290519081900360640190fd5b600160a060020a0384161515611626576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611839833981519152604482015290519081900360640190fd5b600160a060020a038086166000818152600660209081526040808320948916808452948252808320929092558151928352820192909252338183015290517f1032078cb6646bf29e5931e893a691532173df464fbddfbe03d8f2da71c643bd9181900360600190a15050505050565b60025460a060020a900460ff1615156116f8576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60008282111561175757fe5b50900390565b60025460a060020a900460ff16156117bf576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a15600496e76616c69642066726f6d2061646472657373000000000000000000000000496e76616c696420746f206164647265737300000000000000000000000000005452414e534645525f415050524f56414c0000000000000000000000000000005065726d697373696f6e20636865636b206661696c6564000000000000000000a165627a7a723058203673092b8469ad061dd200d9feb726a74d1d166347b372572a043fe78a242b000029",
  "sourceMap": "622:6254:51:-;;;216:26:2;;;-1:-1:-1;;;;;;216:26:2;;;760:43:51;;;-1:-1:-1;;;;;;760:43:51;;;;;;857:42;;;;;;;;2315:123;5:2:-1;;;;30:1;27;20:12;5:2;2315:123:51;;;;;;;;;;;;;;;;;;;624:13:13;:30;;-1:-1:-1;;;;;624:30:13;;;-1:-1:-1;;;;;;624:30:13;;;;;;;:13;664:20;;;;674:10;664:20;;;694:9;:31;;;;;;;;;;;;;;622:6254:51;;;;;;",
  "deployedSourceMap": "622:6254:51:-;;;;;;;;-1:-1:-1;622:6254:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2533:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2533:89:51;;;;;;;;;;;;;;;;;;;;;;;4055:584;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4055:584:51;-1:-1:-1;;;;;4055:584:51;;;;;;;;;;;;;;;;711:69:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:69:50;;;;1547:79:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1547:79:51;-1:-1:-1;;;;;1547:79:51;;;;;;;;;;;;;;;;;;;;;;;;;;216:26:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:26:2;;;;;;;;;;;;;;;;;;;;;;1890:223:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1890:223:13;;;;;365:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;365:22:13;;;;;;;;-1:-1:-1;;;;;365:22:13;;;;;;;;;;;;;;4922:540:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4922:540:51;-1:-1:-1;;;;;4922:540:51;;;;;;;;;;;;3017:696;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3017:696:51;-1:-1:-1;;;;;3017:696:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5680:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5680:326:51;-1:-1:-1;;;;;5680:326:51;;;;;;;;;;786:65:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;786:65:50;;;;1397:79:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1397:79:51;-1:-1:-1;;;;;1397:79:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;906:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;906:63:51;;;;857:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;857:42:51;;;;760:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;760:43:51;;;;276:28:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;276:28:13;;;;6672:202:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6672:202:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6672:202:51;;;;;;;;;;;;;;;;;247:22:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:22:13;;;;311:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;311:47:13;;;;6224:326:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6224:326:51;-1:-1:-1;;;;;6224:326:51;;;;;;;;;;2533:89;2581:6;2533:89;:::o;4055:584::-;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;4308:19:51;;;;4300:52;;;;;-1:-1:-1;;;;;4300:52:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;4300:52:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;4370:17:51;;;;4362:48;;;;;-1:-1:-1;;;;;4362:48:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;4362:48:51;;;;;;;;;;;;;;;4442:3;4428:17;;4420:49;;;;;-1:-1:-1;;;;;4420:49:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;4509:39;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4479:22:51;;;-1:-1:-1;4479:22:51;;;:15;:22;;;;;:27;;;;;;;;;;;;:69;;;;;;-1:-1:-1;4479:69:51;;;;;;;;4563;;;;;;;;;;;;;;;;;;;;;;;;4621:10;4563:69;;;;;;;;;;;-1:-1:-1;4563:69:51;;;4055:584;;;;;;;:::o;711:69:50:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:16:50;:14;:16::i;:::-;711:69::o;1547:79:51:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;216:26:2:-;;;-1:-1:-1;216:26:2;;;;;:::o;1890:223:13:-;1029:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;1959:4;;1940:9;;1959:4;;;;-1:-1:-1;;;;;1029:13:13;;1014:35;;:37;;;;;;;;;;;;;;1959:4;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;1983:9;;;2036:7;;2021:31;;;-1:-1:-1;;;;;2021:31:13;;;;-1:-1:-1;;;;;1983:9:13;;;;:22;;2014:4;;2036:7;;;;;2021:29;;:31;;;;;;;;;;;;;;;;2036:7;2021:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2021:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:31:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2021:31:13;1983:79;;;;;;-1:-1:-1;1983:79:13;;;-1:-1:-1;;;;;1983:79:13;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:31;;1983:79;;;;;;;-1:-1:-1;1983:79:13;;;;5:2:-1;;;;30:1;27;20:12;5:2;1983:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1983:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1983:79:13;1975:110;;;;;;;-1:-1:-1;;;;;1975:110:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:4:13;;1890:223;-1:-1:-1;;;;1890:223:13:o;365:22::-;;;-1:-1:-1;;;;;365:22:13;;:::o;4922:540:51:-;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;5155:19:51;;;;5147:52;;;;;-1:-1:-1;;;;;5147:52:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;5147:52:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;5217:17:51;;;;5209:48;;;;;-1:-1:-1;;;;;5209:48:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;5209:48:51;;;;;;;;;;;;;;;5289:3;5275:17;;5267:49;;;;;-1:-1:-1;;;;;5267:49:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;5356:27;;;;;;;;;;;;-1:-1:-1;;;;;5326:22:51;;;-1:-1:-1;5326:22:51;;;:15;:22;;;;;:27;;;;;;;;;;;;:57;;;;;5398;;;;;;;;;;;;;;;5444:10;5398:57;;;;;;;;;;;;;;;4922:540;;;;;;:::o;3017:696::-;3207:6;;3119;;-1:-1:-1;3207:6:51;;;;3206:7;3202:479;;;-1:-1:-1;;;;;3233:22:51;;;;;;;:15;:22;;;;;;;;:27;;;;;;;;;:38;3275:3;-1:-1:-1;3229:105:51;;-1:-1:-1;3305:14:51;3298:21;;3229:105;-1:-1:-1;;;;;3352:22:51;;;;;;;:15;:22;;;;;;;;:27;;;;;;;;;-1:-1:-1;3352:38:51;;3394:3;-1:-1:-1;3352:45:51;;;3351:101;;-1:-1:-1;;;;;;3403:22:51;;;;;;;:15;:22;;;;;;;;:27;;;;;;;;;:37;-1:-1:-1;;3403:48:51;3351:101;3347:324;;;3476:11;3472:148;;;-1:-1:-1;;;;;3551:22:51;;;;;;;:15;:22;;;;;;;;:27;;;;;;;;;:37;:50;;3593:7;3551:41;:50::i;:::-;-1:-1:-1;;;;;3511:22:51;;;;;;;:15;:22;;;;;;;;:27;;;;;;;;;:90;3472:148;-1:-1:-1;3644:12:51;3017:696;;;;;;;:::o;5680:326::-;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;5791:19:51;;;;5783:52;;;;;-1:-1:-1;;;;;5783:52:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;5783:52:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;5853:17:51;;;;5845:48;;;;;-1:-1:-1;;;;;5845:48:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;5845:48:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;5910:22:51;;;;;;;:15;:22;;;;;;;;:27;;;;;;;;;;;;5903:34;;;-1:-1:-1;5903:34:51;;;;;5952:47;;;;;;;;;;;5988:10;5952:47;;;;;;;;;;;;;;;5680:326;;;;;:::o;786:65:50:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;830:14:50;:12;:14::i;1397:79:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;906:63::-;-1:-1:-1;;;;;;;;;;;906:63:51;:::o;857:42::-;;;-1:-1:-1;;;;;857:42:51;;:::o;760:43::-;;;-1:-1:-1;;;;;760:43:51;;:::o;276:28:13:-;;;-1:-1:-1;;;;;276:28:13;;:::o;6672:202:51:-;6773:16;;;6787:1;6773:16;;;;;;;;;6718:9;;;;6773:16;;;;;;;105:10:-1;6773:16:51;88:34:-1;136:17;;-1:-1;6773:16:51;6739:50;;-1:-1:-1;;;;;;;;;;;6799:14:51;6814:1;6799:17;;;;;;;;;;;;;;;;;;:37;6853:14;-1:-1:-1;6672:202:51;:::o;247:22:13:-;;;-1:-1:-1;;;;;247:22:13;;:::o;311:47::-;;;:::o;6224:326:51:-;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;6335:19:51;;;;6327:52;;;;;-1:-1:-1;;;;;6327:52:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;6327:52:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;6397:17:51;;;;6389:48;;;;;-1:-1:-1;;;;;6389:48:51;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;6389:48:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;6454:22:51;;;;;;;:15;:22;;;;;;;;:27;;;;;;;;;;;;6447:34;;;;6496:47;;;;;;;;;;;6532:10;6496:47;;;;;;;;;;;;;;;6224:326;;;;;:::o;915:98:2:-;590:6;;-1:-1:-1;590:6:2;;;;582:41;;;;;;;-1:-1:-1;;;;;582:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:6;:14;;-1:-1:-1;;965:14:2;;;994:12;;;1002:3;994:12;;;;;;;;;;;;;915:98::o;1042:110:63:-;1100:7;1122:6;;;;1115:14;;;;-1:-1:-1;1142:5:63;;;1042:110::o;728:96:2:-;397:6;;-1:-1:-1;397:6:2;;;;396:7;388:38;;;;;-1:-1:-1;;;;;388:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:6;:13;;-1:-1:-1;;779:13:2;-1:-1:-1;;;779:13:2;;;807:10;;;813:3;807:10;;;;;;;;;;;;;728:96::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./ITransferManager.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n/////////////////////\n// Module permissions\n/////////////////////\n//                                        Owner       TRANSFER_APPROVAL\n// addManualApproval                        X                 X\n// addManualBlocking                        X                 X\n// revokeManualApproval                     X                 X\n// revokeManualBlocking                     X                 X\n\n/**\n * @title Transfer Manager module for manually approving or blocking transactions between accounts\n */\ncontract ManualApprovalTransferManager is ITransferManager {\n    using SafeMath for uint256;\n\n    //Address from which issuances come\n    address public issuanceAddress = address(0);\n\n    //Address which can sign whitelist changes\n    address public signingAddress = address(0);\n\n    bytes32 public constant TRANSFER_APPROVAL = \"TRANSFER_APPROVAL\";\n\n    //Manual approval is an allowance (that has been approved) with an expiry time\n    struct ManualApproval {\n        uint256 allowance;\n        uint256 expiryTime;\n    }\n\n    //Manual blocking allows you to specify a list of blocked address pairs with an associated expiry time for the block\n    struct ManualBlocking {\n        uint256 expiryTime;\n    }\n\n    //Store mappings of address => address with ManualApprovals\n    mapping (address => mapping (address => ManualApproval)) public manualApprovals;\n\n    //Store mappings of address => address with ManualBlockings\n    mapping (address => mapping (address => ManualBlocking)) public manualBlockings;\n\n    event LogAddManualApproval(\n        address _from,\n        address _to,\n        uint256 _allowance,\n        uint256 _expiryTime,\n        address _addedBy\n    );\n\n    event LogAddManualBlocking(\n        address _from,\n        address _to,\n        uint256 _expiryTime,\n        address _addedBy\n    );\n\n    event LogRevokeManualApproval(\n        address _from,\n        address _to,\n        address _addedBy\n    );\n\n    event LogRevokeManualBlocking(\n        address _from,\n        address _to,\n        address _addedBy\n    );\n\n    /**\n     * @notice Constructor\n     * @param _securityToken Address of the security token\n     * @param _polyAddress Address of the polytoken\n     */\n    constructor (address _securityToken, address _polyAddress)\n    public\n    IModule(_securityToken, _polyAddress)\n    {\n    }\n\n    /**\n     * @notice This function returns the signature of configure function\n     */\n    function getInitFunction() public pure returns (bytes4) {\n        return bytes4(0);\n    }\n\n    /**\n    * @notice default implementation of verifyTransfer used by SecurityToken\n    * If the transfer request comes from the STO, it only checks that the investor is in the whitelist\n    * If the transfer request comes from a token holder, it checks that:\n    * a) Both are on the whitelist\n    * b) Seller's sale lockup period is over\n    * c) Buyer's purchase lockup is over\n    */\n    function verifyTransfer(address _from, address _to, uint256 _amount, bool _isTransfer) public returns(Result) {\n        // manual blocking takes precidence over manual approval\n        if (!paused) {\n            if (manualBlockings[_from][_to].expiryTime >= now) {\n                return Result.INVALID;\n            }\n            if ((manualApprovals[_from][_to].expiryTime >= now) && (manualApprovals[_from][_to].allowance >= _amount)) {\n                if (_isTransfer) {\n                    manualApprovals[_from][_to].allowance = manualApprovals[_from][_to].allowance.sub(_amount);\n                }\n                return Result.VALID;\n            }\n        }\n        return Result.NA;\n    }\n\n    /**\n    * @notice adds a pair of addresses to manual approvals\n    * @param _from is the address from which transfers are approved\n    * @param _to is the address to which transfers are approved\n    * @param _allowance is the approved amount of tokens\n    * @param _expiryTime is the time until which the transfer is allowed\n    */\n    function addManualApproval(address _from, address _to, uint256 _allowance, uint256 _expiryTime) public withPerm(TRANSFER_APPROVAL) {\n        //Passing a _expiryTime == 0 into this function, is equivalent to removing the manual approval.\n        require(_from != address(0), \"Invalid from address\");\n        require(_to != address(0), \"Invalid to address\");\n        require(_expiryTime > now, \"Invalid expiry time\");\n        manualApprovals[_from][_to] = ManualApproval(_allowance, _expiryTime);\n        emit LogAddManualApproval(_from, _to, _allowance, _expiryTime, msg.sender);\n    }\n\n    /**\n    * @notice adds a pair of addresses to manual blockings\n    * @param _from is the address from which transfers are blocked\n    * @param _to is the address to which transfers are blocked\n    * @param _expiryTime is the time until which the transfer is blocked\n    */\n    function addManualBlocking(address _from, address _to, uint256 _expiryTime) public withPerm(TRANSFER_APPROVAL) {\n        //Passing a _expiryTime == 0 into this function, is equivalent to removing the manual blocking.\n        require(_from != address(0), \"Invalid from address\");\n        require(_to != address(0), \"Invalid to address\");\n        require(_expiryTime > now, \"Invalid expiry time\");\n        manualBlockings[_from][_to] = ManualBlocking(_expiryTime);\n        emit LogAddManualBlocking(_from, _to, _expiryTime, msg.sender);\n    }\n\n    /**\n    * @notice removes a pairs of addresses from manual approvals\n    * @param _from is the address from which transfers are approved\n    * @param _to is the address to which transfers are approved\n    */\n    function revokeManualApproval(address _from, address _to) public withPerm(TRANSFER_APPROVAL) {\n        require(_from != address(0), \"Invalid from address\");\n        require(_to != address(0), \"Invalid to address\");\n        delete manualApprovals[_from][_to];\n        emit LogRevokeManualApproval(_from, _to, msg.sender);\n    }\n\n    /**\n    * @notice removes a pairs of addresses from manual approvals\n    * @param _from is the address from which transfers are approved\n    * @param _to is the address to which transfers are approved\n    */\n    function revokeManualBlocking(address _from, address _to) public withPerm(TRANSFER_APPROVAL) {\n        require(_from != address(0), \"Invalid from address\");\n        require(_to != address(0), \"Invalid to address\");\n        delete manualBlockings[_from][_to];\n        emit LogRevokeManualBlocking(_from, _to, msg.sender);\n    }\n\n    /**\n     * @notice Return the permissions flag that are associated with ManualApproval transfer manager\n     */\n    function getPermissions() public view returns(bytes32[]) {\n        bytes32[] memory allPermissions = new bytes32[](1);\n        allPermissions[0] = TRANSFER_APPROVAL;\n        return allPermissions;\n    }\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ManualApprovalTransferManager.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ManualApprovalTransferManager.sol",
    "exportedSymbols": {
      "ManualApprovalTransferManager": [
        18802
      ]
    },
    "id": 18803,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 18396,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:51"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ITransferManager.sol",
        "file": "./ITransferManager.sol",
        "id": 18397,
        "nodeType": "ImportDirective",
        "scope": 18803,
        "sourceUnit": 18395,
        "src": "26:32:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 18398,
        "nodeType": "ImportDirective",
        "scope": 18803,
        "sourceUnit": 22579,
        "src": "59:59:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 18399,
              "name": "ITransferManager",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18394,
              "src": "664:16:51",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITransferManager_$18394",
                "typeString": "contract ITransferManager"
              }
            },
            "id": 18400,
            "nodeType": "InheritanceSpecifier",
            "src": "664:16:51"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          18394
        ],
        "contractKind": "contract",
        "documentation": "@title Transfer Manager module for manually approving or blocking transactions between accounts",
        "fullyImplemented": true,
        "id": 18802,
        "linearizedBaseContracts": [
          18802,
          18394,
          471,
          9717
        ],
        "name": "ManualApprovalTransferManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 18403,
            "libraryName": {
              "contractScope": null,
              "id": 18401,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "693:8:51",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "687:27:51",
            "typeName": {
              "id": 18402,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "706:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 18408,
            "name": "issuanceAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "760:43:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18404,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "760:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 18406,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "801:1:51",
                  "subdenomination": null,
                  "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": 18405,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "793:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 18407,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "793:10:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18413,
            "name": "signingAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "857:42:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18409,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "857:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 18411,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "897:1:51",
                  "subdenomination": null,
                  "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": 18410,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "889:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 18412,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "889:10:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18416,
            "name": "TRANSFER_APPROVAL",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "906:63:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 18414,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "906:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5452414e534645525f415050524f56414c",
              "id": 18415,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "950:19:51",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8f826cb5d2fbac06941d2b4c13fa1cb830e2b96e3bd8660ac5716d17f5354215",
                "typeString": "literal_string \"TRANSFER_APPROVAL\""
              },
              "value": "TRANSFER_APPROVAL"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "ManualApprovalTransferManager.ManualApproval",
            "id": 18421,
            "members": [
              {
                "constant": false,
                "id": 18418,
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "scope": 18421,
                "src": "1091:17:51",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 18417,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1091:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 18420,
                "name": "expiryTime",
                "nodeType": "VariableDeclaration",
                "scope": 18421,
                "src": "1118:18:51",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 18419,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1118:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ManualApproval",
            "nodeType": "StructDefinition",
            "scope": 18802,
            "src": "1059:84:51",
            "visibility": "public"
          },
          {
            "canonicalName": "ManualApprovalTransferManager.ManualBlocking",
            "id": 18424,
            "members": [
              {
                "constant": false,
                "id": 18423,
                "name": "expiryTime",
                "nodeType": "VariableDeclaration",
                "scope": 18424,
                "src": "1302:18:51",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 18422,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1302:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ManualBlocking",
            "nodeType": "StructDefinition",
            "scope": 18802,
            "src": "1270:57:51",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18430,
            "name": "manualApprovals",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "1397:79:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
              "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval))"
            },
            "typeName": {
              "id": 18429,
              "keyType": {
                "id": 18425,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1406:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1397:56:51",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval))"
              },
              "valueType": {
                "id": 18428,
                "keyType": {
                  "id": 18426,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1426:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1417:35:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 18427,
                  "name": "ManualApproval",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 18421,
                  "src": "1437:14:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ManualApproval_$18421_storage_ptr",
                    "typeString": "struct ManualApprovalTransferManager.ManualApproval"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18436,
            "name": "manualBlockings",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "1547:79:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
              "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking))"
            },
            "typeName": {
              "id": 18435,
              "keyType": {
                "id": 18431,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1556:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1547:56:51",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking))"
              },
              "valueType": {
                "id": 18434,
                "keyType": {
                  "id": 18432,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1576:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1567:35:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 18433,
                  "name": "ManualBlocking",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 18424,
                  "src": "1587:14:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage_ptr",
                    "typeString": "struct ManualApprovalTransferManager.ManualBlocking"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18448,
            "name": "LogAddManualApproval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18447,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18438,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1669:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18437,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1669:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18440,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1692:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18439,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1692:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18442,
                  "indexed": false,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1713:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18441,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1713:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18444,
                  "indexed": false,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1741:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18443,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1741:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18446,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1770:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18445,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1770:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1659:133:51"
            },
            "src": "1633:160:51"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18458,
            "name": "LogAddManualBlocking",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18457,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18450,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1835:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18449,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1835:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18452,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1858:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18451,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1858:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18454,
                  "indexed": false,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1879:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18453,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18456,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1908:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18455,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1908:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1825:105:51"
            },
            "src": "1799:132:51"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18466,
            "name": "LogRevokeManualApproval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18460,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18466,
                  "src": "1976:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18459,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1976:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18462,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18466,
                  "src": "1999:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18461,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1999:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18464,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18466,
                  "src": "2020:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18463,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2020:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1966:76:51"
            },
            "src": "1937:106:51"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18474,
            "name": "LogRevokeManualBlocking",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18468,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18474,
                  "src": "2088:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18467,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2088:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18470,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18474,
                  "src": "2111:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18469,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2111:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18472,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18474,
                  "src": "2132:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18471,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2132:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2078:76:51"
            },
            "src": "2049:106:51"
          },
          {
            "body": {
              "id": 18485,
              "nodeType": "Block",
              "src": "2431:7:51",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 18486,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18481,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18476,
                    "src": "2397:14:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 18482,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18478,
                    "src": "2413:12:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 18483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18480,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "2389:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2389:37:51"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18476,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 18486,
                  "src": "2328:22:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18475,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2328:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18478,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 18486,
                  "src": "2352:20:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18477,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2327:46:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2431:0:51"
            },
            "scope": 18802,
            "src": "2315:123:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18495,
              "nodeType": "Block",
              "src": "2589:33:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2613:1:51",
                        "subdenomination": null,
                        "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": 18491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2606:6:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 18493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2606:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 18490,
                  "id": 18494,
                  "nodeType": "Return",
                  "src": "2599:16:51"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 18496,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2557:2:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18489,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18496,
                  "src": "2581:6:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 18488,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2580:8:51"
            },
            "scope": 18802,
            "src": "2533:89:51",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18573,
              "nodeType": "Block",
              "src": "3127:586:51",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 18510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3206:7:51",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 18509,
                      "name": "paused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "3207:6:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18569,
                  "nodeType": "IfStatement",
                  "src": "3202:479:51",
                  "trueBody": {
                    "id": 18568,
                    "nodeType": "Block",
                    "src": "3215:466:51",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 18511,
                                  "name": "manualBlockings",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18436,
                                  "src": "3233:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                                    "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref))"
                                  }
                                },
                                "id": 18513,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 18512,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18498,
                                  "src": "3249:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3233:22:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref)"
                                }
                              },
                              "id": 18515,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18514,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18500,
                                "src": "3256:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3233:27:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                                "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                              }
                            },
                            "id": 18516,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "expiryTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18423,
                            "src": "3233:38:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 18517,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23133,
                            "src": "3275:3:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3233:45:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18523,
                        "nodeType": "IfStatement",
                        "src": "3229:105:51",
                        "trueBody": {
                          "id": 18522,
                          "nodeType": "Block",
                          "src": "3280:54:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18519,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "3305:6:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 18520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "INVALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3305:14:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 18508,
                              "id": 18521,
                              "nodeType": "Return",
                              "src": "3298:21:51"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 18524,
                                        "name": "manualApprovals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18430,
                                        "src": "3352:15:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                          "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                        }
                                      },
                                      "id": 18526,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 18525,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18498,
                                        "src": "3368:5:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3352:22:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                        "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                      }
                                    },
                                    "id": 18528,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 18527,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18500,
                                      "src": "3375:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3352:27:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                      "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                    }
                                  },
                                  "id": 18529,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "expiryTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18420,
                                  "src": "3352:38:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 18530,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23133,
                                  "src": "3394:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3352:45:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18532,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3351:47:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 18533,
                                        "name": "manualApprovals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18430,
                                        "src": "3403:15:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                          "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                        }
                                      },
                                      "id": 18535,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 18534,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18498,
                                        "src": "3419:5:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3403:22:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                        "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                      }
                                    },
                                    "id": 18537,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 18536,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18500,
                                      "src": "3426:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3403:27:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                      "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                    }
                                  },
                                  "id": 18538,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "allowance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18418,
                                  "src": "3403:37:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 18539,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18502,
                                  "src": "3444:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3403:48:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18541,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3402:50:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3351:101:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18567,
                        "nodeType": "IfStatement",
                        "src": "3347:324:51",
                        "trueBody": {
                          "id": 18566,
                          "nodeType": "Block",
                          "src": "3454:217:51",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 18543,
                                "name": "_isTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18504,
                                "src": "3476:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 18562,
                              "nodeType": "IfStatement",
                              "src": "3472:148:51",
                              "trueBody": {
                                "id": 18561,
                                "nodeType": "Block",
                                "src": "3489:131:51",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 18544,
                                              "name": "manualApprovals",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18430,
                                              "src": "3511:15:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                                "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                              }
                                            },
                                            "id": 18547,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 18545,
                                              "name": "_from",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18498,
                                              "src": "3527:5:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3511:22:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                              "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                            }
                                          },
                                          "id": 18548,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 18546,
                                            "name": "_to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18500,
                                            "src": "3534:3:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "3511:27:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                            "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                          }
                                        },
                                        "id": 18549,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "allowance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18418,
                                        "src": "3511:37:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 18557,
                                            "name": "_amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18502,
                                            "src": "3593:7:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18550,
                                                  "name": "manualApprovals",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18430,
                                                  "src": "3551:15:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                                  }
                                                },
                                                "id": 18552,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18551,
                                                  "name": "_from",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18498,
                                                  "src": "3567:5:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3551:22:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                                }
                                              },
                                              "id": 18554,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 18553,
                                                "name": "_to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18500,
                                                "src": "3574:3:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3551:27:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                                "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                              }
                                            },
                                            "id": 18555,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allowance",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 18418,
                                            "src": "3551:37:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18556,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22553,
                                          "src": "3551:41:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 18558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3551:50:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3511:90:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18560,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3511:90:51"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18563,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "3644:6:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 18564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "VALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3644:12:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 18508,
                              "id": 18565,
                              "nodeType": "Return",
                              "src": "3637:19:51"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 18570,
                      "name": "Result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18358,
                      "src": "3697:6:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                        "typeString": "type(enum ITransferManager.Result)"
                      }
                    },
                    "id": 18571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "NA",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3697:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "functionReturnParameters": 18508,
                  "id": 18572,
                  "nodeType": "Return",
                  "src": "3690:16:51"
                }
              ]
            },
            "documentation": "@notice default implementation of verifyTransfer used by SecurityToken\nIf the transfer request comes from the STO, it only checks that the investor is in the whitelist\nIf the transfer request comes from a token holder, it checks that:\na) Both are on the whitelist\nb) Seller's sale lockup period is over\nc) Buyer's purchase lockup is over",
            "id": 18574,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18498,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3041:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18497,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3041:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18500,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3056:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18499,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3056:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18502,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3069:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18501,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3069:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18504,
                  "name": "_isTransfer",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3086:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18503,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3086:4:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3040:63:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18507,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3119:6:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Result_$18358",
                    "typeString": "enum ITransferManager.Result"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18506,
                    "name": "Result",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18358,
                    "src": "3119:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3118:8:51"
            },
            "scope": 18802,
            "src": "3017:696:51",
            "stateMutability": "nonpayable",
            "superFunction": 18371,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18633,
              "nodeType": "Block",
              "src": "4186:453:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18589,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18576,
                          "src": "4308:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4325:1:51",
                              "subdenomination": null,
                              "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": 18590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4317:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4317:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4308:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4329:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18588,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4300:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18595,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4300:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18596,
                  "nodeType": "ExpressionStatement",
                  "src": "4300:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18598,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18578,
                          "src": "4370:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4385:1:51",
                              "subdenomination": null,
                              "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": 18599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4377:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4377:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4370:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4389:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18597,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4362:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4362:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18605,
                  "nodeType": "ExpressionStatement",
                  "src": "4362:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18607,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18582,
                          "src": "4428:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18608,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "4442:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4428:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c6964206578706972792074696d65",
                        "id": 18610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4447:21:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        },
                        "value": "Invalid expiry time"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        }
                      ],
                      "id": 18606,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4420:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4420:49:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18612,
                  "nodeType": "ExpressionStatement",
                  "src": "4420:49:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18613,
                          "name": "manualApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18430,
                          "src": "4479:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                          }
                        },
                        "id": 18616,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18614,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18576,
                          "src": "4495:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4479:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                        }
                      },
                      "id": 18617,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18615,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18578,
                        "src": "4502:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4479:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18619,
                          "name": "_allowance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18580,
                          "src": "4524:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18620,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18582,
                          "src": "4536:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 18618,
                        "name": "ManualApproval",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18421,
                        "src": "4509:14:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ManualApproval_$18421_storage_ptr_$",
                          "typeString": "type(struct ManualApprovalTransferManager.ManualApproval storage pointer)"
                        }
                      },
                      "id": 18621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4509:39:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualApproval_$18421_memory",
                        "typeString": "struct ManualApprovalTransferManager.ManualApproval memory"
                      }
                    },
                    "src": "4479:69:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                      "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                    }
                  },
                  "id": 18623,
                  "nodeType": "ExpressionStatement",
                  "src": "4479:69:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18625,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18576,
                        "src": "4584:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18626,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18578,
                        "src": "4591:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18627,
                        "name": "_allowance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18580,
                        "src": "4596:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18628,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18582,
                        "src": "4608:11:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18629,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "4621:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4621:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18624,
                      "name": "LogAddManualApproval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18448,
                      "src": "4563:20:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,address)"
                      }
                    },
                    "id": 18631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4563:69:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18632,
                  "nodeType": "EmitStatement",
                  "src": "4558:74:51"
                }
              ]
            },
            "documentation": "@notice adds a pair of addresses to manual approvals\n@param _from is the address from which transfers are approved\n@param _to is the address to which transfers are approved\n@param _allowance is the approved amount of tokens\n@param _expiryTime is the time until which the transfer is allowed",
            "id": 18634,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18585,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "4167:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18584,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "4158:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4158:27:51"
              }
            ],
            "name": "addManualApproval",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18576,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4082:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18575,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4082:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18578,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4097:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18577,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4097:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18580,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4110:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4110:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18582,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4130:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4130:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4081:69:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4186:0:51"
            },
            "scope": 18802,
            "src": "4055:584:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18689,
              "nodeType": "Block",
              "src": "5033:429:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18647,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18636,
                          "src": "5155:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5172:1:51",
                              "subdenomination": null,
                              "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": 18648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5164:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5164:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5155:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5176:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18646,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5147:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5147:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18654,
                  "nodeType": "ExpressionStatement",
                  "src": "5147:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18656,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18638,
                          "src": "5217:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5232:1:51",
                              "subdenomination": null,
                              "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": 18657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5224:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5224:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5217:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5236:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18655,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5209:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5209:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18663,
                  "nodeType": "ExpressionStatement",
                  "src": "5209:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18665,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18640,
                          "src": "5275:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18666,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "5289:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5275:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c6964206578706972792074696d65",
                        "id": 18668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5294:21:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        },
                        "value": "Invalid expiry time"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        }
                      ],
                      "id": 18664,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5267:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5267:49:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18670,
                  "nodeType": "ExpressionStatement",
                  "src": "5267:49:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18671,
                          "name": "manualBlockings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18436,
                          "src": "5326:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref))"
                          }
                        },
                        "id": 18674,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18672,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18636,
                          "src": "5342:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5326:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref)"
                        }
                      },
                      "id": 18675,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18673,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18638,
                        "src": "5349:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5326:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18677,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18640,
                          "src": "5371:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 18676,
                        "name": "ManualBlocking",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18424,
                        "src": "5356:14:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ManualBlocking_$18424_storage_ptr_$",
                          "typeString": "type(struct ManualApprovalTransferManager.ManualBlocking storage pointer)"
                        }
                      },
                      "id": 18678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5356:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualBlocking_$18424_memory",
                        "typeString": "struct ManualApprovalTransferManager.ManualBlocking memory"
                      }
                    },
                    "src": "5326:57:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                      "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                    }
                  },
                  "id": 18680,
                  "nodeType": "ExpressionStatement",
                  "src": "5326:57:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18682,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18636,
                        "src": "5419:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18683,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18638,
                        "src": "5426:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18684,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18640,
                        "src": "5431:11:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18685,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5444:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5444:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18681,
                      "name": "LogAddManualBlocking",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18458,
                      "src": "5398:20:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,address,uint256,address)"
                      }
                    },
                    "id": 18687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5398:57:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18688,
                  "nodeType": "EmitStatement",
                  "src": "5393:62:51"
                }
              ]
            },
            "documentation": "@notice adds a pair of addresses to manual blockings\n@param _from is the address from which transfers are blocked\n@param _to is the address to which transfers are blocked\n@param _expiryTime is the time until which the transfer is blocked",
            "id": 18690,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18643,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "5014:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18644,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18642,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5005:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5005:27:51"
              }
            ],
            "name": "addManualBlocking",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18636,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18690,
                  "src": "4949:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4949:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18638,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18690,
                  "src": "4964:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18637,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4964:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18640,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18690,
                  "src": "4977:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18639,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4977:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4948:49:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18645,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5033:0:51"
            },
            "scope": 18802,
            "src": "4922:540:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18732,
              "nodeType": "Block",
              "src": "5773:233:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18701,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18692,
                          "src": "5791:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5808:1:51",
                              "subdenomination": null,
                              "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": 18702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5800:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5800:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5791:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5812:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18700,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5783:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5783:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18708,
                  "nodeType": "ExpressionStatement",
                  "src": "5783:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18710,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18694,
                          "src": "5853:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5868:1:51",
                              "subdenomination": null,
                              "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": 18711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5860:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5860:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5853:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5872:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18709,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5845:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5845:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18717,
                  "nodeType": "ExpressionStatement",
                  "src": "5845:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "5903:34:51",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18718,
                          "name": "manualApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18430,
                          "src": "5910:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                          }
                        },
                        "id": 18720,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18719,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18692,
                          "src": "5926:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5910:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                        }
                      },
                      "id": 18722,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18721,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18694,
                        "src": "5933:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5910:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18724,
                  "nodeType": "ExpressionStatement",
                  "src": "5903:34:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18726,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18692,
                        "src": "5976:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18727,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18694,
                        "src": "5983:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18728,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5988:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5988:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18725,
                      "name": "LogRevokeManualApproval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18466,
                      "src": "5952:23:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address,address)"
                      }
                    },
                    "id": 18730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5952:47:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18731,
                  "nodeType": "EmitStatement",
                  "src": "5947:52:51"
                }
              ]
            },
            "documentation": "@notice removes a pairs of addresses from manual approvals\n@param _from is the address from which transfers are approved\n@param _to is the address to which transfers are approved",
            "id": 18733,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18697,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "5754:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18698,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18696,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5745:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5745:27:51"
              }
            ],
            "name": "revokeManualApproval",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18692,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18733,
                  "src": "5710:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18691,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5710:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18694,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18733,
                  "src": "5725:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18693,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5725:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5709:28:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5773:0:51"
            },
            "scope": 18802,
            "src": "5680:326:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18775,
              "nodeType": "Block",
              "src": "6317:233:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18744,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18735,
                          "src": "6335:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6352:1:51",
                              "subdenomination": null,
                              "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": 18745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6344:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6344:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6335:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6356:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18743,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "6327:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6327:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18751,
                  "nodeType": "ExpressionStatement",
                  "src": "6327:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18757,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18753,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18737,
                          "src": "6397:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6412:1:51",
                              "subdenomination": null,
                              "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": 18754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6404:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6404:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6397:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6416:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18752,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "6389:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6389:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18760,
                  "nodeType": "ExpressionStatement",
                  "src": "6389:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "6447:34:51",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18761,
                          "name": "manualBlockings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18436,
                          "src": "6454:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref))"
                          }
                        },
                        "id": 18763,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18762,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18735,
                          "src": "6470:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6454:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref)"
                        }
                      },
                      "id": 18765,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18764,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18737,
                        "src": "6477:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6454:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18767,
                  "nodeType": "ExpressionStatement",
                  "src": "6447:34:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18769,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18735,
                        "src": "6520:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18770,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18737,
                        "src": "6527:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18771,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "6532:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6532:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18768,
                      "name": "LogRevokeManualBlocking",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18474,
                      "src": "6496:23:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address,address)"
                      }
                    },
                    "id": 18773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6496:47:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18774,
                  "nodeType": "EmitStatement",
                  "src": "6491:52:51"
                }
              ]
            },
            "documentation": "@notice removes a pairs of addresses from manual approvals\n@param _from is the address from which transfers are approved\n@param _to is the address to which transfers are approved",
            "id": 18776,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18740,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "6298:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18741,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18739,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "6289:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6289:27:51"
              }
            ],
            "name": "revokeManualBlocking",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18735,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18776,
                  "src": "6254:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18734,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6254:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18737,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18776,
                  "src": "6269:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6269:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6253:28:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6317:0:51"
            },
            "scope": 18802,
            "src": "6224:326:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18800,
              "nodeType": "Block",
              "src": "6729:145:51",
              "statements": [
                {
                  "assignments": [
                    18785
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18785,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 18801,
                      "src": "6739:31:51",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18783,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6739:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18784,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6739:9:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18791,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 18789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6787:1:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 18788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6773:13:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18786,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6777:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18787,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6777:9:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 18790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6773:16:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6739:50:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18792,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18785,
                        "src": "6799:14:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 18794,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6814:1:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6799:17:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18795,
                      "name": "TRANSFER_APPROVAL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18416,
                      "src": "6819:17:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6799:37:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18797,
                  "nodeType": "ExpressionStatement",
                  "src": "6799:37:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18798,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18785,
                    "src": "6853:14:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 18781,
                  "id": 18799,
                  "nodeType": "Return",
                  "src": "6846:21:51"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with ManualApproval transfer manager",
            "id": 18801,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6695:2:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18780,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18801,
                  "src": "6718:9:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18778,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6718:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18779,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6718:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6717:11:51"
            },
            "scope": 18802,
            "src": "6672:202:51",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          }
        ],
        "scope": 18803,
        "src": "622:6254:51"
      }
    ],
    "src": "0:6877:51"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ManualApprovalTransferManager.sol",
    "exportedSymbols": {
      "ManualApprovalTransferManager": [
        18802
      ]
    },
    "id": 18803,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 18396,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:51"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ITransferManager.sol",
        "file": "./ITransferManager.sol",
        "id": 18397,
        "nodeType": "ImportDirective",
        "scope": 18803,
        "sourceUnit": 18395,
        "src": "26:32:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 18398,
        "nodeType": "ImportDirective",
        "scope": 18803,
        "sourceUnit": 22579,
        "src": "59:59:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 18399,
              "name": "ITransferManager",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18394,
              "src": "664:16:51",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITransferManager_$18394",
                "typeString": "contract ITransferManager"
              }
            },
            "id": 18400,
            "nodeType": "InheritanceSpecifier",
            "src": "664:16:51"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          18394
        ],
        "contractKind": "contract",
        "documentation": "@title Transfer Manager module for manually approving or blocking transactions between accounts",
        "fullyImplemented": true,
        "id": 18802,
        "linearizedBaseContracts": [
          18802,
          18394,
          471,
          9717
        ],
        "name": "ManualApprovalTransferManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 18403,
            "libraryName": {
              "contractScope": null,
              "id": 18401,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "693:8:51",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "687:27:51",
            "typeName": {
              "id": 18402,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "706:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 18408,
            "name": "issuanceAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "760:43:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18404,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "760:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 18406,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "801:1:51",
                  "subdenomination": null,
                  "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": 18405,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "793:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 18407,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "793:10:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18413,
            "name": "signingAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "857:42:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18409,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "857:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 18411,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "897:1:51",
                  "subdenomination": null,
                  "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": 18410,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "889:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 18412,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "889:10:51",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18416,
            "name": "TRANSFER_APPROVAL",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "906:63:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 18414,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "906:7:51",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5452414e534645525f415050524f56414c",
              "id": 18415,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "950:19:51",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8f826cb5d2fbac06941d2b4c13fa1cb830e2b96e3bd8660ac5716d17f5354215",
                "typeString": "literal_string \"TRANSFER_APPROVAL\""
              },
              "value": "TRANSFER_APPROVAL"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "ManualApprovalTransferManager.ManualApproval",
            "id": 18421,
            "members": [
              {
                "constant": false,
                "id": 18418,
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "scope": 18421,
                "src": "1091:17:51",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 18417,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1091:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 18420,
                "name": "expiryTime",
                "nodeType": "VariableDeclaration",
                "scope": 18421,
                "src": "1118:18:51",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 18419,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1118:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ManualApproval",
            "nodeType": "StructDefinition",
            "scope": 18802,
            "src": "1059:84:51",
            "visibility": "public"
          },
          {
            "canonicalName": "ManualApprovalTransferManager.ManualBlocking",
            "id": 18424,
            "members": [
              {
                "constant": false,
                "id": 18423,
                "name": "expiryTime",
                "nodeType": "VariableDeclaration",
                "scope": 18424,
                "src": "1302:18:51",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 18422,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1302:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ManualBlocking",
            "nodeType": "StructDefinition",
            "scope": 18802,
            "src": "1270:57:51",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18430,
            "name": "manualApprovals",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "1397:79:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
              "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval))"
            },
            "typeName": {
              "id": 18429,
              "keyType": {
                "id": 18425,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1406:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1397:56:51",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval))"
              },
              "valueType": {
                "id": 18428,
                "keyType": {
                  "id": 18426,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1426:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1417:35:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 18427,
                  "name": "ManualApproval",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 18421,
                  "src": "1437:14:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ManualApproval_$18421_storage_ptr",
                    "typeString": "struct ManualApprovalTransferManager.ManualApproval"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18436,
            "name": "manualBlockings",
            "nodeType": "VariableDeclaration",
            "scope": 18802,
            "src": "1547:79:51",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
              "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking))"
            },
            "typeName": {
              "id": 18435,
              "keyType": {
                "id": 18431,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1556:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1547:56:51",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking))"
              },
              "valueType": {
                "id": 18434,
                "keyType": {
                  "id": 18432,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1576:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1567:35:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 18433,
                  "name": "ManualBlocking",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 18424,
                  "src": "1587:14:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage_ptr",
                    "typeString": "struct ManualApprovalTransferManager.ManualBlocking"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18448,
            "name": "LogAddManualApproval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18447,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18438,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1669:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18437,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1669:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18440,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1692:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18439,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1692:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18442,
                  "indexed": false,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1713:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18441,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1713:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18444,
                  "indexed": false,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1741:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18443,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1741:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18446,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18448,
                  "src": "1770:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18445,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1770:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1659:133:51"
            },
            "src": "1633:160:51"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18458,
            "name": "LogAddManualBlocking",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18457,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18450,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1835:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18449,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1835:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18452,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1858:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18451,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1858:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18454,
                  "indexed": false,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1879:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18453,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18456,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18458,
                  "src": "1908:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18455,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1908:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1825:105:51"
            },
            "src": "1799:132:51"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18466,
            "name": "LogRevokeManualApproval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18460,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18466,
                  "src": "1976:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18459,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1976:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18462,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18466,
                  "src": "1999:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18461,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1999:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18464,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18466,
                  "src": "2020:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18463,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2020:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1966:76:51"
            },
            "src": "1937:106:51"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18474,
            "name": "LogRevokeManualBlocking",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18468,
                  "indexed": false,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18474,
                  "src": "2088:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18467,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2088:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18470,
                  "indexed": false,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18474,
                  "src": "2111:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18469,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2111:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18472,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 18474,
                  "src": "2132:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18471,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2132:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2078:76:51"
            },
            "src": "2049:106:51"
          },
          {
            "body": {
              "id": 18485,
              "nodeType": "Block",
              "src": "2431:7:51",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 18486,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18481,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18476,
                    "src": "2397:14:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 18482,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18478,
                    "src": "2413:12:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 18483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18480,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "2389:7:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2389:37:51"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18476,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 18486,
                  "src": "2328:22:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18475,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2328:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18478,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 18486,
                  "src": "2352:20:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18477,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2327:46:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2431:0:51"
            },
            "scope": 18802,
            "src": "2315:123:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18495,
              "nodeType": "Block",
              "src": "2589:33:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2613:1:51",
                        "subdenomination": null,
                        "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": 18491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2606:6:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 18493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2606:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 18490,
                  "id": 18494,
                  "nodeType": "Return",
                  "src": "2599:16:51"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 18496,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2557:2:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18489,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18496,
                  "src": "2581:6:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 18488,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2580:8:51"
            },
            "scope": 18802,
            "src": "2533:89:51",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18573,
              "nodeType": "Block",
              "src": "3127:586:51",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 18510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3206:7:51",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 18509,
                      "name": "paused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "3207:6:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18569,
                  "nodeType": "IfStatement",
                  "src": "3202:479:51",
                  "trueBody": {
                    "id": 18568,
                    "nodeType": "Block",
                    "src": "3215:466:51",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 18511,
                                  "name": "manualBlockings",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18436,
                                  "src": "3233:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                                    "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref))"
                                  }
                                },
                                "id": 18513,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 18512,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18498,
                                  "src": "3249:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3233:22:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref)"
                                }
                              },
                              "id": 18515,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18514,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18500,
                                "src": "3256:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3233:27:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                                "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                              }
                            },
                            "id": 18516,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "expiryTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18423,
                            "src": "3233:38:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 18517,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23133,
                            "src": "3275:3:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3233:45:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18523,
                        "nodeType": "IfStatement",
                        "src": "3229:105:51",
                        "trueBody": {
                          "id": 18522,
                          "nodeType": "Block",
                          "src": "3280:54:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18519,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "3305:6:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 18520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "INVALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3305:14:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 18508,
                              "id": 18521,
                              "nodeType": "Return",
                              "src": "3298:21:51"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 18524,
                                        "name": "manualApprovals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18430,
                                        "src": "3352:15:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                          "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                        }
                                      },
                                      "id": 18526,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 18525,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18498,
                                        "src": "3368:5:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3352:22:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                        "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                      }
                                    },
                                    "id": 18528,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 18527,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18500,
                                      "src": "3375:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3352:27:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                      "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                    }
                                  },
                                  "id": 18529,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "expiryTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18420,
                                  "src": "3352:38:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 18530,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23133,
                                  "src": "3394:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3352:45:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18532,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3351:47:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 18533,
                                        "name": "manualApprovals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18430,
                                        "src": "3403:15:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                          "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                        }
                                      },
                                      "id": 18535,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 18534,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18498,
                                        "src": "3419:5:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3403:22:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                        "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                      }
                                    },
                                    "id": 18537,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 18536,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18500,
                                      "src": "3426:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3403:27:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                      "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                    }
                                  },
                                  "id": 18538,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "allowance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18418,
                                  "src": "3403:37:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 18539,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18502,
                                  "src": "3444:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3403:48:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18541,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3402:50:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3351:101:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18567,
                        "nodeType": "IfStatement",
                        "src": "3347:324:51",
                        "trueBody": {
                          "id": 18566,
                          "nodeType": "Block",
                          "src": "3454:217:51",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 18543,
                                "name": "_isTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18504,
                                "src": "3476:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 18562,
                              "nodeType": "IfStatement",
                              "src": "3472:148:51",
                              "trueBody": {
                                "id": 18561,
                                "nodeType": "Block",
                                "src": "3489:131:51",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 18544,
                                              "name": "manualApprovals",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18430,
                                              "src": "3511:15:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                                "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                              }
                                            },
                                            "id": 18547,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 18545,
                                              "name": "_from",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18498,
                                              "src": "3527:5:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3511:22:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                              "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                            }
                                          },
                                          "id": 18548,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 18546,
                                            "name": "_to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18500,
                                            "src": "3534:3:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "3511:27:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                            "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                          }
                                        },
                                        "id": 18549,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "allowance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18418,
                                        "src": "3511:37:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 18557,
                                            "name": "_amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18502,
                                            "src": "3593:7:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18550,
                                                  "name": "manualApprovals",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18430,
                                                  "src": "3551:15:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                                                  }
                                                },
                                                "id": 18552,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18551,
                                                  "name": "_from",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18498,
                                                  "src": "3567:5:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3551:22:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                                                  "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                                                }
                                              },
                                              "id": 18554,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 18553,
                                                "name": "_to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18500,
                                                "src": "3574:3:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3551:27:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                                                "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                                              }
                                            },
                                            "id": 18555,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allowance",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 18418,
                                            "src": "3551:37:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18556,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22553,
                                          "src": "3551:41:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 18558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3551:50:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3511:90:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18560,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3511:90:51"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18563,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "3644:6:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 18564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "VALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3644:12:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 18508,
                              "id": 18565,
                              "nodeType": "Return",
                              "src": "3637:19:51"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 18570,
                      "name": "Result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18358,
                      "src": "3697:6:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                        "typeString": "type(enum ITransferManager.Result)"
                      }
                    },
                    "id": 18571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "NA",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3697:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "functionReturnParameters": 18508,
                  "id": 18572,
                  "nodeType": "Return",
                  "src": "3690:16:51"
                }
              ]
            },
            "documentation": "@notice default implementation of verifyTransfer used by SecurityToken\nIf the transfer request comes from the STO, it only checks that the investor is in the whitelist\nIf the transfer request comes from a token holder, it checks that:\na) Both are on the whitelist\nb) Seller's sale lockup period is over\nc) Buyer's purchase lockup is over",
            "id": 18574,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18498,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3041:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18497,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3041:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18500,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3056:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18499,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3056:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18502,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3069:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18501,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3069:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18504,
                  "name": "_isTransfer",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3086:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18503,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3086:4:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3040:63:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18507,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18574,
                  "src": "3119:6:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Result_$18358",
                    "typeString": "enum ITransferManager.Result"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18506,
                    "name": "Result",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18358,
                    "src": "3119:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3118:8:51"
            },
            "scope": 18802,
            "src": "3017:696:51",
            "stateMutability": "nonpayable",
            "superFunction": 18371,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18633,
              "nodeType": "Block",
              "src": "4186:453:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18589,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18576,
                          "src": "4308:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4325:1:51",
                              "subdenomination": null,
                              "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": 18590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4317:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4317:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4308:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4329:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18588,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4300:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18595,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4300:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18596,
                  "nodeType": "ExpressionStatement",
                  "src": "4300:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18598,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18578,
                          "src": "4370:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4385:1:51",
                              "subdenomination": null,
                              "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": 18599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4377:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4377:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4370:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4389:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18597,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4362:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4362:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18605,
                  "nodeType": "ExpressionStatement",
                  "src": "4362:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18607,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18582,
                          "src": "4428:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18608,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "4442:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4428:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c6964206578706972792074696d65",
                        "id": 18610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4447:21:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        },
                        "value": "Invalid expiry time"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        }
                      ],
                      "id": 18606,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4420:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4420:49:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18612,
                  "nodeType": "ExpressionStatement",
                  "src": "4420:49:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18613,
                          "name": "manualApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18430,
                          "src": "4479:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                          }
                        },
                        "id": 18616,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18614,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18576,
                          "src": "4495:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4479:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                        }
                      },
                      "id": 18617,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18615,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18578,
                        "src": "4502:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4479:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18619,
                          "name": "_allowance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18580,
                          "src": "4524:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18620,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18582,
                          "src": "4536:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 18618,
                        "name": "ManualApproval",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18421,
                        "src": "4509:14:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ManualApproval_$18421_storage_ptr_$",
                          "typeString": "type(struct ManualApprovalTransferManager.ManualApproval storage pointer)"
                        }
                      },
                      "id": 18621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4509:39:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualApproval_$18421_memory",
                        "typeString": "struct ManualApprovalTransferManager.ManualApproval memory"
                      }
                    },
                    "src": "4479:69:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                      "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                    }
                  },
                  "id": 18623,
                  "nodeType": "ExpressionStatement",
                  "src": "4479:69:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18625,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18576,
                        "src": "4584:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18626,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18578,
                        "src": "4591:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18627,
                        "name": "_allowance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18580,
                        "src": "4596:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18628,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18582,
                        "src": "4608:11:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18629,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "4621:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4621:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18624,
                      "name": "LogAddManualApproval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18448,
                      "src": "4563:20:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,address)"
                      }
                    },
                    "id": 18631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4563:69:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18632,
                  "nodeType": "EmitStatement",
                  "src": "4558:74:51"
                }
              ]
            },
            "documentation": "@notice adds a pair of addresses to manual approvals\n@param _from is the address from which transfers are approved\n@param _to is the address to which transfers are approved\n@param _allowance is the approved amount of tokens\n@param _expiryTime is the time until which the transfer is allowed",
            "id": 18634,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18585,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "4167:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18584,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "4158:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4158:27:51"
              }
            ],
            "name": "addManualApproval",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18576,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4082:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18575,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4082:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18578,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4097:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18577,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4097:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18580,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4110:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4110:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18582,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18634,
                  "src": "4130:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4130:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4081:69:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4186:0:51"
            },
            "scope": 18802,
            "src": "4055:584:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18689,
              "nodeType": "Block",
              "src": "5033:429:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18647,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18636,
                          "src": "5155:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5172:1:51",
                              "subdenomination": null,
                              "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": 18648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5164:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5164:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5155:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5176:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18646,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5147:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5147:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18654,
                  "nodeType": "ExpressionStatement",
                  "src": "5147:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18656,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18638,
                          "src": "5217:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5232:1:51",
                              "subdenomination": null,
                              "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": 18657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5224:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5224:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5217:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5236:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18655,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5209:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5209:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18663,
                  "nodeType": "ExpressionStatement",
                  "src": "5209:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18665,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18640,
                          "src": "5275:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18666,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "5289:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5275:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c6964206578706972792074696d65",
                        "id": 18668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5294:21:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        },
                        "value": "Invalid expiry time"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_280aa420a8f06ff818d53a2327ac918990782a990165288b619495ffe2c87e01",
                          "typeString": "literal_string \"Invalid expiry time\""
                        }
                      ],
                      "id": 18664,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5267:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5267:49:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18670,
                  "nodeType": "ExpressionStatement",
                  "src": "5267:49:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18671,
                          "name": "manualBlockings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18436,
                          "src": "5326:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref))"
                          }
                        },
                        "id": 18674,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18672,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18636,
                          "src": "5342:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5326:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref)"
                        }
                      },
                      "id": 18675,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18673,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18638,
                        "src": "5349:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5326:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18677,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18640,
                          "src": "5371:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 18676,
                        "name": "ManualBlocking",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18424,
                        "src": "5356:14:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ManualBlocking_$18424_storage_ptr_$",
                          "typeString": "type(struct ManualApprovalTransferManager.ManualBlocking storage pointer)"
                        }
                      },
                      "id": 18678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5356:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualBlocking_$18424_memory",
                        "typeString": "struct ManualApprovalTransferManager.ManualBlocking memory"
                      }
                    },
                    "src": "5326:57:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                      "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                    }
                  },
                  "id": 18680,
                  "nodeType": "ExpressionStatement",
                  "src": "5326:57:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18682,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18636,
                        "src": "5419:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18683,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18638,
                        "src": "5426:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18684,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18640,
                        "src": "5431:11:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18685,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5444:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5444:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18681,
                      "name": "LogAddManualBlocking",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18458,
                      "src": "5398:20:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,address,uint256,address)"
                      }
                    },
                    "id": 18687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5398:57:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18688,
                  "nodeType": "EmitStatement",
                  "src": "5393:62:51"
                }
              ]
            },
            "documentation": "@notice adds a pair of addresses to manual blockings\n@param _from is the address from which transfers are blocked\n@param _to is the address to which transfers are blocked\n@param _expiryTime is the time until which the transfer is blocked",
            "id": 18690,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18643,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "5014:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18644,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18642,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5005:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5005:27:51"
              }
            ],
            "name": "addManualBlocking",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18636,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18690,
                  "src": "4949:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4949:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18638,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18690,
                  "src": "4964:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18637,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4964:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18640,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18690,
                  "src": "4977:19:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18639,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4977:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4948:49:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18645,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5033:0:51"
            },
            "scope": 18802,
            "src": "4922:540:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18732,
              "nodeType": "Block",
              "src": "5773:233:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18701,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18692,
                          "src": "5791:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5808:1:51",
                              "subdenomination": null,
                              "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": 18702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5800:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5800:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5791:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5812:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18700,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5783:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5783:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18708,
                  "nodeType": "ExpressionStatement",
                  "src": "5783:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18710,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18694,
                          "src": "5853:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5868:1:51",
                              "subdenomination": null,
                              "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": 18711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5860:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5860:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5853:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5872:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18709,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "5845:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5845:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18717,
                  "nodeType": "ExpressionStatement",
                  "src": "5845:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "5903:34:51",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18718,
                          "name": "manualApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18430,
                          "src": "5910:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref))"
                          }
                        },
                        "id": 18720,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18719,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18692,
                          "src": "5926:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5910:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualApproval_$18421_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualApproval storage ref)"
                        }
                      },
                      "id": 18722,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18721,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18694,
                        "src": "5933:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5910:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualApproval_$18421_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualApproval storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18724,
                  "nodeType": "ExpressionStatement",
                  "src": "5903:34:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18726,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18692,
                        "src": "5976:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18727,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18694,
                        "src": "5983:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18728,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5988:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5988:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18725,
                      "name": "LogRevokeManualApproval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18466,
                      "src": "5952:23:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address,address)"
                      }
                    },
                    "id": 18730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5952:47:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18731,
                  "nodeType": "EmitStatement",
                  "src": "5947:52:51"
                }
              ]
            },
            "documentation": "@notice removes a pairs of addresses from manual approvals\n@param _from is the address from which transfers are approved\n@param _to is the address to which transfers are approved",
            "id": 18733,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18697,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "5754:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18698,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18696,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5745:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5745:27:51"
              }
            ],
            "name": "revokeManualApproval",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18692,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18733,
                  "src": "5710:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18691,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5710:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18694,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18733,
                  "src": "5725:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18693,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5725:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5709:28:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5773:0:51"
            },
            "scope": 18802,
            "src": "5680:326:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18775,
              "nodeType": "Block",
              "src": "6317:233:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18744,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18735,
                          "src": "6335:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6352:1:51",
                              "subdenomination": null,
                              "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": 18745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6344:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6344:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6335:19:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642066726f6d2061646472657373",
                        "id": 18749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6356:22:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        },
                        "value": "Invalid from address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_624a15ca8baf3dc1f8a2de656ac1ecb55ab22786bd8035785f5855b6269dbc11",
                          "typeString": "literal_string \"Invalid from address\""
                        }
                      ],
                      "id": 18743,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "6327:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6327:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18751,
                  "nodeType": "ExpressionStatement",
                  "src": "6327:52:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18757,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18753,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18737,
                          "src": "6397:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6412:1:51",
                              "subdenomination": null,
                              "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": 18754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6404:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 18756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6404:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6397:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c696420746f2061646472657373",
                        "id": 18758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6416:20:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        },
                        "value": "Invalid to address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_967ccd0284acbaf5d42e466d1ca654f57c959edac0ebfa0089a763db6755467b",
                          "typeString": "literal_string \"Invalid to address\""
                        }
                      ],
                      "id": 18752,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "6389:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6389:48:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18760,
                  "nodeType": "ExpressionStatement",
                  "src": "6389:48:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "6447:34:51",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18761,
                          "name": "manualBlockings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18436,
                          "src": "6454:15:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref))"
                          }
                        },
                        "id": 18763,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18762,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18735,
                          "src": "6470:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6454:22:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ManualBlocking_$18424_storage_$",
                          "typeString": "mapping(address => struct ManualApprovalTransferManager.ManualBlocking storage ref)"
                        }
                      },
                      "id": 18765,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18764,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18737,
                        "src": "6477:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6454:27:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ManualBlocking_$18424_storage",
                        "typeString": "struct ManualApprovalTransferManager.ManualBlocking storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18767,
                  "nodeType": "ExpressionStatement",
                  "src": "6447:34:51"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18769,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18735,
                        "src": "6520:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18770,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18737,
                        "src": "6527:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18771,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "6532:3:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6532:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18768,
                      "name": "LogRevokeManualBlocking",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18474,
                      "src": "6496:23:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address,address)"
                      }
                    },
                    "id": 18773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6496:47:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18774,
                  "nodeType": "EmitStatement",
                  "src": "6491:52:51"
                }
              ]
            },
            "documentation": "@notice removes a pairs of addresses from manual approvals\n@param _from is the address from which transfers are approved\n@param _to is the address to which transfers are approved",
            "id": 18776,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 18740,
                    "name": "TRANSFER_APPROVAL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18416,
                    "src": "6298:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 18741,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 18739,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "6289:8:51",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6289:27:51"
              }
            ],
            "name": "revokeManualBlocking",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18735,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 18776,
                  "src": "6254:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18734,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6254:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18737,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 18776,
                  "src": "6269:11:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6269:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6253:28:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6317:0:51"
            },
            "scope": 18802,
            "src": "6224:326:51",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18800,
              "nodeType": "Block",
              "src": "6729:145:51",
              "statements": [
                {
                  "assignments": [
                    18785
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18785,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 18801,
                      "src": "6739:31:51",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18783,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6739:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18784,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6739:9:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18791,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 18789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6787:1:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 18788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6773:13:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18786,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6777:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18787,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6777:9:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 18790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6773:16:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6739:50:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18792,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18785,
                        "src": "6799:14:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 18794,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6814:1:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6799:17:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18795,
                      "name": "TRANSFER_APPROVAL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18416,
                      "src": "6819:17:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6799:37:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18797,
                  "nodeType": "ExpressionStatement",
                  "src": "6799:37:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18798,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18785,
                    "src": "6853:14:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 18781,
                  "id": 18799,
                  "nodeType": "Return",
                  "src": "6846:21:51"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with ManualApproval transfer manager",
            "id": 18801,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6695:2:51"
            },
            "payable": false,
            "returnParameters": {
              "id": 18781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18780,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18801,
                  "src": "6718:9:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18778,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6718:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18779,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6718:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6717:11:51"
            },
            "scope": 18802,
            "src": "6672:202:51",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          }
        ],
        "scope": 18803,
        "src": "622:6254:51"
      }
    ],
    "src": "0:6877:51"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:12.643Z"
}