{
  "contractName": "BancorX",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxLockLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxReleaseLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_limitIncPerBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_minRequiredReports",
          "type": "uint8"
        },
        {
          "internalType": "contract IContractRegistry",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Token",
          "name": "_token",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_prevOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "OwnerUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokensLock",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokensRelease",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_reporter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_fromBlockchain",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_txId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_xTransferId",
          "type": "uint256"
        }
      ],
      "name": "TxReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_toBlockchain",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_to",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "XTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "XTransferComplete",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "limitIncPerBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxLockLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxReleaseLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minRequiredReports",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "newOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "onlyOwnerCanUpdateRegistry",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prevLockBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prevLockLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prevRegistry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prevReleaseBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prevReleaseLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "reportedTxs",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "reporters",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reportingEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "restoreRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_onlyOwnerCanUpdateRegistry",
          "type": "bool"
        }
      ],
      "name": "restrictRegistryUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "transactionIds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "transactions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "fromBlockchain",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "numOfReports",
          "type": "uint8"
        },
        {
          "internalType": "bool",
          "name": "completed",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "xTransfersEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxLockLimit",
          "type": "uint256"
        }
      ],
      "name": "setMaxLockLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxReleaseLimit",
          "type": "uint256"
        }
      ],
      "name": "setMaxReleaseLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_minLimit",
          "type": "uint256"
        }
      ],
      "name": "setMinLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_limitIncPerBlock",
          "type": "uint256"
        }
      ],
      "name": "setLimitIncPerBlock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_minRequiredReports",
          "type": "uint8"
        }
      ],
      "name": "setMinRequiredReports",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_reporter",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_active",
          "type": "bool"
        }
      ],
      "name": "setReporter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_enable",
          "type": "bool"
        }
      ],
      "name": "enableXTransfers",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_enable",
          "type": "bool"
        }
      ],
      "name": "enableReporting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_reporters",
          "type": "address[]"
        }
      ],
      "name": "upgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_toBlockchain",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_to",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "xTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_toBlockchain",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_to",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "xTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_fromBlockchain",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_txId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_xTransferId",
          "type": "uint256"
        }
      ],
      "name": "reportTx",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_xTransferId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_for",
          "type": "address"
        }
      ],
      "name": "getXTransferAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentLockLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentReleaseLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxLockLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxReleaseLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limitIncPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_minRequiredReports\",\"type\":\"uint8\"},{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Token\",\"name\":\"_token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TokensLock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TokensRelease\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_reporter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_fromBlockchain\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_txId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_xTransferId\",\"type\":\"uint256\"}],\"name\":\"TxReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_toBlockchain\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_to\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"XTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"XTransferComplete\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_enable\",\"type\":\"bool\"}],\"name\":\"enableReporting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_enable\",\"type\":\"bool\"}],\"name\":\"enableXTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentLockLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentReleaseLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_xTransferId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_for\",\"type\":\"address\"}],\"name\":\"getXTransferAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitIncPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLockLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxReleaseLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minRequiredReports\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevLockBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevLockLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevReleaseBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevReleaseLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_fromBlockchain\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_txId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_xTransferId\",\"type\":\"uint256\"}],\"name\":\"reportTx\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"reportedTxs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"reporters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reportingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_limitIncPerBlock\",\"type\":\"uint256\"}],\"name\":\"setLimitIncPerBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxLockLimit\",\"type\":\"uint256\"}],\"name\":\"setMaxLockLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxReleaseLimit\",\"type\":\"uint256\"}],\"name\":\"setMaxReleaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minLimit\",\"type\":\"uint256\"}],\"name\":\"setMinLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_minRequiredReports\",\"type\":\"uint8\"}],\"name\":\"setMinRequiredReports\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reporter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_active\",\"type\":\"bool\"}],\"name\":\"setReporter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transactionIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transactions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"fromBlockchain\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"numOfReports\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_reporters\",\"type\":\"address[]\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_toBlockchain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"xTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_toBlockchain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"xTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xTransfersEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The BancorX contract allows cross chain token transfers. There are two processes that take place in the contract - - Initiate a cross chain transfer to a target blockchain (locks tokens from the caller account on Ethereum) - Report a cross chain transfer initiated on a source blockchain (releases tokens to an account on Ethereum) Reporting cross chain transfers works similar to standard multisig contracts, meaning that multiple callers are required to report a transfer before tokens are released to the target account.\",\"events\":{\"TokensLock(address,uint256)\":{\"details\":\"triggered when tokens are locked in smart contract\",\"params\":{\"_amount\":\"amount locked\",\"_from\":\"wallet address that the tokens are locked from\"}},\"TokensRelease(address,uint256)\":{\"details\":\"triggered when tokens are released by the smart contract\",\"params\":{\"_amount\":\"amount released\",\"_to\":\"wallet address that the tokens are released to\"}},\"TxReport(address,bytes32,uint256,address,uint256,uint256)\":{\"details\":\"triggered when report is successfully submitted\",\"params\":{\"_amount\":\"transfer amount\",\"_fromBlockchain\":\"source blockchain\",\"_reporter\":\"reporter wallet\",\"_to\":\"target wallet\",\"_txId\":\"tx id on the source blockchain\",\"_xTransferId\":\"xtransfer id\"}},\"XTransfer(address,bytes32,bytes32,uint256,uint256)\":{\"details\":\"triggered when xTransfer is successfully called\",\"params\":{\"_amount\":\"transfer amount\",\"_from\":\"wallet address that initiated the xtransfer\",\"_id\":\"xtransfer id\",\"_to\":\"target wallet\",\"_toBlockchain\":\"target blockchain\"}},\"XTransferComplete(address,uint256)\":{\"details\":\"triggered when final report is successfully submitted\",\"params\":{\"_id\":\"xtransfer id\",\"_to\":\"target wallet\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"constructor\":{\"details\":\"initializes a new BancorX instance\",\"params\":{\"_limitIncPerBlock\":\"how much the limit increases per block\",\"_maxLockLimit\":\"maximum amount of tokens that can be locked in one transaction\",\"_maxReleaseLimit\":\"maximum amount of tokens that can be released in one transaction\",\"_minLimit\":\"minimum amount of tokens that can be transferred in one transaction\",\"_minRequiredReports\":\"minimum number of reporters to report transaction before tokens can be released\",\"_registry\":\"address of contract registry\",\"_token\":\"erc20 token\"}},\"enableReporting(bool)\":{\"details\":\"allows the owner enable/disable the reportTransaction method\",\"params\":{\"_enable\":\"true to enable, false to disable\"}},\"enableXTransfers(bool)\":{\"details\":\"allows the owner enable/disable the xTransfer method\",\"params\":{\"_enable\":\"true to enable, false to disable\"}},\"getCurrentLockLimit()\":{\"details\":\"method for calculating current lock limit\",\"returns\":{\"_0\":\"the current maximum limit of tokens that can be locked\"}},\"getCurrentReleaseLimit()\":{\"details\":\"method for calculating current release limit\",\"returns\":{\"_0\":\"the current maximum limit of tokens that can be released\"}},\"getXTransferAmount(uint256,address)\":{\"details\":\"gets x transfer amount by xTransferId (not txId)\",\"params\":{\"_for\":\"address corresponding to xTransferId\",\"_xTransferId\":\"unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been broadcasted)\"},\"returns\":{\"_0\":\"amount that was sent in xTransfer corresponding to _xTransferId\"}},\"reportTx(bytes32,uint256,address,uint256,uint256)\":{\"details\":\"allows reporter to report transaction which occured on another blockchain\",\"params\":{\"_amount\":\"amount of tokens destroyed on another blockchain\",\"_fromBlockchain\":\"blockchain in which tokens were destroyed\",\"_to\":\"address to receive tokens\",\"_txId\":\"transactionId of transaction thats being reported\",\"_xTransferId\":\"unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been mined)\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"setLimitIncPerBlock(uint256)\":{\"details\":\"setter\",\"params\":{\"_limitIncPerBlock\":\"new limitIncPerBlock\"}},\"setMaxLockLimit(uint256)\":{\"details\":\"setter\",\"params\":{\"_maxLockLimit\":\"new maxLockLimit\"}},\"setMaxReleaseLimit(uint256)\":{\"details\":\"setter\",\"params\":{\"_maxReleaseLimit\":\"new maxReleaseLimit\"}},\"setMinLimit(uint256)\":{\"details\":\"setter\",\"params\":{\"_minLimit\":\"new minLimit\"}},\"setMinRequiredReports(uint8)\":{\"details\":\"setter\",\"params\":{\"_minRequiredReports\":\"new minRequiredReports\"}},\"setReporter(address,bool)\":{\"details\":\"allows the owner to set/remove reporters\",\"params\":{\"_active\":\"true if the reporter is approved, false otherwise\",\"_reporter\":\"reporter whos status is to be set\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"},\"upgrade(address[])\":{\"details\":\"upgrades the contract to the latest version can only be called by the owner note that the owner needs to call acceptOwnership on the new contract after the upgrade\",\"params\":{\"_reporters\":\"new list of reporters\"}},\"withdrawTokens(address,address,uint256)\":{\"details\":\"withdraws tokens held by the contract and sends them to an account can only be called by the owner\",\"params\":{\"_amount\":\"amount to withdraw\",\"_to\":\"account to receive the new amount\",\"_token\":\"ERC20 token contract address\"}},\"xTransfer(bytes32,bytes32,uint256)\":{\"details\":\"claims tokens from msg.sender to be converted to tokens on another blockchain\",\"params\":{\"_amount\":\"the amount of tokens to transfer\",\"_to\":\"address to send the tokens to\",\"_toBlockchain\":\"blockchain on which tokens will be issued\"}},\"xTransfer(bytes32,bytes32,uint256,uint256)\":{\"details\":\"claims tokens from msg.sender to be converted to tokens on another blockchain\",\"params\":{\"_amount\":\"the amount of tokens to transfer\",\"_id\":\"pre-determined unique (if non zero) id which refers to this transaction\",\"_to\":\"address to send the tokens to\",\"_toBlockchain\":\"blockchain on which tokens will be issued\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/BancorX.sol\":\"BancorX\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/BancorX.sol\":{\"keccak256\":\"0xe2b3099bba3c6688433611b13621418fb330030f4c11e43a76046ceaee03ef5c\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://971f9e6ccc18878706965dead5c2cfd92ab33a3bf73e7a256d53b4d00e8fc058\",\"dweb:/ipfs/Qmdg4tpFLzy4FVX7t9CeT9gBdmJWJzLpVsz5Dr611EtuaA\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/interfaces/IBancorX.sol\":{\"keccak256\":\"0x65b5780d710159c7540078c38406c53db37a349fb468a0bf21bdc6262e497951\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://3df931a12770d10a22451326e38ae9d405d3e2716bdbdd6306b5e2361f6fe511\",\"dweb:/ipfs/QmcRBSaFLz516dAEqb8ZEiyx8ZTHZZ6rfxHn5roL2fHA3S\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/interfaces/IBancorXUpgrader.sol\":{\"keccak256\":\"0x5292f6484aafd5e225b0d4f7fe61235ebee69ada5044a84e3f94014053d8a373\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://f796012a45f7d9c47239725ad638f8636146686a5a390bd85892e889a20459b2\",\"dweb:/ipfs/QmRbfxfYCssyj1PkQMdv1rsjUz35BDTLag4wrxnq4SAy2j\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/SafeMath.sol\":{\"keccak256\":\"0x1ab7391a19ca8a3ad2f3c4a1074e080d4d76dfdb834637bdd0c1e6b6acdf28af\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://d6d8c99621ca884b72da2d84eddfec8ec8c5533915691d6eec94a07adf445608\",\"dweb:/ipfs/QmaXr6DN7VbfxfMn3PsTy7SAMgZVVXbdeaw11BsAjVL2x1\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol\":{\"keccak256\":\"0xf65b87e3bf3343e368da67878c19d1a043a1025b10e9053d3562b53b4aa447fe\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b85c5d96642c14c53b8d5062eecd4d27d3bdb457d1d0f130900763a75a512eb7\",\"dweb:/ipfs/QmUHtbqC1khqnRZXYn11Aykus4m5e9MVNUWqorxhpr5ipJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol\":{\"keccak256\":\"0xac6bc102eff6c1bb8c1bb4466eab50322c7c101e2e33d577dd3035f106627577\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9fdbda2d4509260ca3dd43654bdaea07ef18a5e04213ff16e38e3b4abad78a5f\",\"dweb:/ipfs/QmPb69rzX1DwDeEhhfzqQNS3U2bfGcFjXNaV5ffHsZHzfP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol\":{\"keccak256\":\"0x3551889a83738b621c29ed66f1ecb6a843cca4217e54c9357198559b9cc92259\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://231a59c8f2665adeda8c7e6930832409c9b991fd27ad84b3a24335e7bf269bbe\",\"dweb:/ipfs/QmeJJbn1EAUbZenruTEdJAnwUn3dxsVNeJvxPe81qKEGqL\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]}},\"version\":1}",
  "bytecode": "[encoded data, 16564 characters]",
  "deployedBytecode": "[encoded data, 15006 characters]",
  "immutableReferences": {},
  "sourceMap": "900:17593:3:-:0;;;2305:36;;;-1:-1:-1;;;;;;;;2305:36:3;;;-1:-1:-1;;;2305:36:3;2399:35;-1:-1:-1;;;2399:35:3;;;5579:1321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5579:1321:3;;;;;;;;;;;;;;;;;;;;;;;;;;;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;5579:1321:3;;;;;;;;;;;;;594:23:64;5579:1321:3;594:13:64;:23::i;:::-;-1:-1:-1;2122:8:56::1;:39:::0;;-1:-1:-1;;;;;2122:39:56;;::::1;-1:-1:-1::0;;;;;;2122:39:56;;::::1;::::0;::::1;::::0;;;2172:12:::1;:43:::0;;;;::::1;;::::0;;5909:13:3;252:24:64::1;5909:13:3::0;252:16:64::1;:24::i;:::-;5949:16:3::0;252:24:64::2;5949:16:3::0;252::64::2;:24::i;:::-;5992:9:3::0;252:24:64::3;5992:9:3::0;252:16:64::3;:24::i;:::-;6028:17:3::0;252:24:64::4;6028:17:3::0;252:16:64::4;:24::i;:::-;200:96:::5;::::0;::::5;252:24;200:96:::0;252:16:::5;:24::i;:::-;6123:6:3::0;594:23:64::6;6123:6:3::0;594:13:64::6;:23::i;:::-;6157:6:3::0;948:18:64::7;6157:6:3::0;948:8:64::7;:18::i;:::-;6230:13:3::8;6217:9;:26;;:59;;;;;6260:16;6247:9;:29;;6217:59;6209:93;;;::::0;;-1:-1:-1;;;6209:93:3;;::::8;;::::0;::::8;::::0;::::8;::::0;;;;::::8;::::0;;;;;;;;;;;;;::::8;;-1:-1:-1::0;;;6391:12:3::8;:28:::0;;;-1:-1:-1;;;6430:15:3::8;:34:::0;;;-1:-1:-1;6475:8:3::8;:20:::0;;;;-1:-1:-1;6506:16:3::8;:36:::0;;;;6553:18:::8;:40:::0;;6697:13:::8;:29:::0;;;;6737:16:::8;:35:::0;;;;6805:12:::8;6783:19;:34:::0;;;6828:22:::8;:37:::0;-1:-1:-1;;;;;6878:14:3;;::::8;6553:40;6878:14;-1:-1:-1::0;;;;;;6553:40:3::8;::::0;;::::8;-1:-1:-1::0;;6553:40:3;;::::8;::::0;;;::::8;6878:14;::::0;;;::::8;::::0;;900:17593;;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;351:112::-;435:1;426:6;:10;418:37;;;;;-1:-1:-1;;;418:37:64;;;;;;;;;;;;-1:-1:-1;;;418:37:64;;;;;;;;;;;;;;1041:126;-1:-1:-1;;;;;1110:25:64;;1130:4;1110:25;;1102:57;;;;;-1:-1:-1;;;1102:57:64;;;;;;;;;;;;;;;;;;;;;;;;;;;900:17593:3;;;;;;;",
  "deployedSourceMap": "900:17593:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:302;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10400:302:3;;-1:-1:-1;10400:302:3;;-1:-1:-1;;;;;10400:302:3:i;:::-;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;1675:28:3:-;;;:::i;:::-;;;;;;;;;;;;;;;;16338:392;;;:::i;1949:34::-;;;:::i;16898:422::-;;;:::i;1555:23::-;;;:::i;2856:42::-;;;;;;;;;;;;;;;;-1:-1:-1;2856:42:3;-1:-1:-1;;;;;2856:42:3;;:::i;:::-;;;;;;;;;;;;;;;;;;1333:38:56;;;:::i;12106:684:3:-;;;;;;;;;;;;;;;;-1:-1:-1;12106:684:3;;;;;;;;;;;;;;;;;:::i;11033:637::-;;;;;;;;;;;;;;;;-1:-1:-1;11033:637:3;;;;;;;;;;;;:::i;2300:925:56:-;;;:::i;2043:37:3:-;;;:::i;1438:30::-;;;:::i;1280:34::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1196:290:62;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1196:290:62;;;;;;;;;;;;;;;;;:::i;1243:37:56:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1243:37:56;;;;;;;;;;;;;;13353:2023:3;;;;;;;;;;;;;;;;-1:-1:-1;13353:2023:3;;;;;;;;-1:-1:-1;;;;;13353:2023:3;;;;;;;;;;;;;;;:::i;8408:254::-;;;;;;;;;;;;;;;;-1:-1:-1;8408:254:3;;:::i;1862:31::-;;;:::i;1422:217:57:-;;;:::i;1154:33:56:-;;;:::i;9057:171:3:-;;;;;;;;;;;;;;;;-1:-1:-1;9057:171:3;;;;:::i;2735:65::-;;;;;;;;;;;;;;;;-1:-1:-1;2735:65:3;;;;;;-1:-1:-1;;;;;2735:65:3;;:::i;219:29:57:-;;;:::i;2399:35:3:-;;;:::i;2520:52::-;;;;;;;;;;;;;;;;-1:-1:-1;2520:52:3;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;2520:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;8776:163;;;;;;;;;;;;;;;;-1:-1:-1;8776:163:3;;:::i;9743:103::-;;;;;;;;;;;;;;;;-1:-1:-1;9743:103:3;;;;:::i;1323:27::-;;;:::i;15778:397::-;;;;;;;;;;;;;;;;-1:-1:-1;15778:397:3;;;;;;-1:-1:-1;;;;;15778:397:3;;:::i;7897:143::-;;;;;;;;;;;;;;;;-1:-1:-1;7897:143:3;;:::i;3304:137:56:-;;;:::i;8152:158:3:-;;;;;;;;;;;;;;;;-1:-1:-1;8152:158:3;;:::i;2140:31::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;255:23:57;;;:::i;9460:120:3:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9460:120:3;;;;;;;;;;:::i;2609:50::-;;;;;;;;;;;;;;;;-1:-1:-1;2609:50:3;;:::i;10017:101::-;;;;;;;;;;;;;;;;-1:-1:-1;10017:101:3;;;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;1767:31:3:-;;;:::i;2305:36::-;;;:::i;2243:33::-;;;:::i;10400:302::-;726:12:57;:10;:12::i;:::-;10474:32:3::1;10526:28;-1:-1:-1::0;;;10526:9:3::1;:28::i;:::-;10474:81;;10568:43;10594:15;10568:17;:43::i;:::-;10622:44;::::0;;-1:-1:-1;;;10622:44:3;;1313:1:::1;10622:44:::0;;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10622:23:3;::::1;::::0;::::1;::::0;10655:10;;10622:44;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;10622:44:3::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10677:17;:15;:17::i;:::-;749:1:57;10400:302:3::0;:::o;3655:224:56:-;726:12:57;:10;:12::i;:::-;3815:26:56::1;:56:::0;;;::::1;;-1:-1:-1::0;;;3815:56:56::1;-1:-1:-1::0;;;;3815:56:56;;::::1;::::0;;;::::1;::::0;;3655:224::o;1675:28:3:-;;;;:::o;16338:392::-;16390:7;16499:24;16526:82;16544:63;16590:16;;16545:39;16564:19;;16546:12;16545:18;;:39;;;;:::i;:::-;16544:45;;:63::i;:::-;16526:13;;;:17;:82::i;:::-;16499:109;;16642:12;;16623:16;:31;16619:69;;;-1:-1:-1;;16676:12:3;;16669:19;;16619:69;16706:16;-1:-1:-1;16338:392:3;;:::o;1949:34::-;;;;:::o;16898:422::-;16953:7;17068:27;17098:88;17119:66;17168:16;;17120:42;17139:22;;17121:12;17120:18;;:42;;;;:::i;17119:66::-;17098:16;;;:20;:88::i;:::-;17068:118;;17223:15;;17201:19;:37;17197:78;;;-1:-1:-1;;17260:15:3;;17253:22;;1555:23;;;;:::o;2856:42::-;;;;;;;;;;;;;;;:::o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;12106:684:3:-;7293:20;:18;:20::i;:::-;12275:24:::1;12302:21;:19;:21::i;:::-;12275:48;;12421:8;;12410:7;:19;;:50;;;;;12444:16;12433:7;:27;;12410:50;12402:82;;;::::0;;-1:-1:-1;;;12402:82:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12402:82:3;;;;;;;;;;;;;::::1;;12497:19;12508:7;12497:10;:19::i;:::-;12602:29;:16:::0;12623:7;12602:20:::1;:29::i;:::-;12586:13;:45:::0;12664:12:::1;12642:19;:34:::0;12727:55:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;12764:3;;12737:10:::1;::::0;12727:55:::1;::::0;;;;;;;::::1;7324:1;12106:684:::0;;;;:::o;11033:637::-;7293:20;:18;:20::i;:::-;11180:24:::1;11207:21;:19;:21::i;:::-;11180:48;;11290:8;;11279:7;:19;;:50;;;;;11313:16;11302:7;:27;;11279:50;11271:82;;;::::0;;-1:-1:-1;;;11271:82:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11271:82:3;;;;;;;;;;;;;::::1;;11366:19;11377:7;11366:10;:19::i;:::-;11471:29;:16:::0;11492:7;11471:20:::1;:29::i;:::-;11455:13;:45:::0;11533:12:::1;11511:19;:34:::0;11609:53:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;-1:-1:-1;11609:53:3;;;;;;11646:3;;11619:10:::1;::::0;11609:53:::1;::::0;;;;;;;::::1;7324:1;11033:637:::0;;;:::o;2300:925:56:-;2417:5;;-1:-1:-1;;;;;2417:5:56;2403:10;:19;;:50;;-1:-1:-1;2427:26:56;;-1:-1:-1;;;2427:26:56;;;;2426:27;2403:50;2395:80;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;;;;2530:29;2580:28;-1:-1:-1;;;2580:9:56;:28::i;:::-;2721:8;;2530:79;;-1:-1:-1;;;;;;2706:23:56;;;2721:8;;2706:23;;;;:61;;-1:-1:-1;;;;;;2733:34:56;;;;2706:61;2698:94;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;;;;2959:1;-1:-1:-1;;;;;2907:54:56;:11;-1:-1:-1;;;;;2907:21:56;;-1:-1:-1;;;2907:40:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:40:56;-1:-1:-1;;;;;2907:54:56;;;2899:87;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;;;;3093:8;;;3078:12;:23;;-1:-1:-1;;;;;3093:8:56;;;-1:-1:-1;;;;;;3078:23:56;;;;;;;3195:22;;;;;;;;;;;2300:925::o;2043:37:3:-;;;;:::o;1438:30::-;;;;:::o;1280:34::-;1313:1;1280:34;:::o;1196:290:62:-;726:12:57;:10;:12::i;:::-;1370:6:62::1;594:23:64;608:8;594:13;:23::i;:::-;1401:3:62::2;594:23:64;608:8;594:13;:23::i;:::-;1423:3:62::3;948:18:64;957:8;948;:18::i;:::-;1444:34:62::4;1457:6;1465:3;1470:7;1444:12;:34::i;:::-;628:1:64::3;::::2;749::57::1;1196:290:62::0;;;:::o;1243:37:56:-;;;-1:-1:-1;;;;;1243:37:56;;:::o;13353:2023:3:-;6989:15;:13;:15::i;:::-;7594:19:::1;:17;:19::i;:::-;13601:3:::2;594:23:64;608:8;594:13;:23::i;:::-;13631:7:3::3;252:24:64;269:6;252:16;:24::i;:::-;13748:18:3::4;::::0;;;:11:::4;:18;::::0;;;;;;;13767:10:::4;13748:30:::0;;;;;;;;::::4;;13747:31;13739:64;;;::::0;;-1:-1:-1;;;13739:64:3;;::::4;;::::0;::::4;::::0;::::4;::::0;;;;-1:-1:-1;;;13739:64:3;;;;;;;;;;;;;::::4;;13849:18;::::0;;;:11:::4;:18;::::0;;;;;;;13868:10:::4;13849:30:::0;;;;;;;:37;;-1:-1:-1;;13849:37:3::4;13882:4;13849:37;::::0;;13925:19;;;:12:::4;:19:::0;;;;;14038:16:::4;::::0;::::4;::::0;-1:-1:-1;;;14038:16:3;::::4;13849:37;14038:16;14034:756;;14076:6;::::0;::::4;:12:::0;;-1:-1:-1;;;;;;14076:12:3::4;-1:-1:-1::0;;;;;14076:12:3;::::4;;::::0;;14103:20;;;-1:-1:-1;14138:18:3;::::4;:36:::0;;;14195:17;;14191:257:::4;;14318:28;::::0;;;:14:::4;:28;::::0;;;;;:33;14310:67:::4;;;::::0;;-1:-1:-1;;;14310:67:3;;::::4;;::::0;::::4;::::0;::::4;::::0;;;;-1:-1:-1;;;14310:67:3;;;;;;;;;;;;;::::4;;14396:28;::::0;;;:14:::4;:28;::::0;;;;:36;;;14191:257:::4;14034:756;;;14551:6;::::0;::::4;::::0;-1:-1:-1;;;;;14551:13:3;;::::4;:6:::0;::::4;:13;:38:::0;::::4;;;-1:-1:-1::0;14568:10:3;;:21;::::4;14551:38;:79;;;;;14615:15;14593:3;:18;;;:37;14551:79;14543:107;;;::::0;;-1:-1:-1;;;14543:107:3;;::::4;;::::0;::::4;::::0;::::4;::::0;;;;-1:-1:-1;;;14543:107:3;;;;;;;;;;;;;::::4;;14671:17:::0;;14667:111:::4;;14715:28;::::0;;;:14:::4;:28;::::0;;;;;:37;::::4;14707:71;;;::::0;;-1:-1:-1;;;14707:71:3;;::::4;;::::0;::::4;::::0;::::4;::::0;;;;-1:-1:-1;;;14707:71:3;;;;;;;;;;;;;::::4;;14846:16;::::0;::::4;:18:::0;;::::4;;-1:-1:-1::0;;;14846:18:3;;::::4;::::0;::::4;::::0;;;::::4;;;-1:-1:-1::0;;;;14846:18:3;;::::4;;::::0;;14882:72:::4;::::0;;;;;::::4;::::0;::::4;::::0;;;-1:-1:-1;;;;;14882:72:3;::::4;::::0;;;;;;;;;;;;;;;;;;14891:10:::4;::::0;14882:72:::4;::::0;;;;;;;;::::4;15051:18;::::0;15031:16:::4;::::0;::::4;::::0;15051:18:::4;::::0;;::::4;-1:-1:-1::0;;;15031:16:3;;::::4;::::0;;::::4;:38;15027:342;;15095:19;::::0;;;:12:::4;:19;::::0;;;;:29:::4;;::::0;-1:-1:-1;;;15095:29:3;::::4;;;15094:30;15086:67;;;::::0;;-1:-1:-1;;;15086:67:3;;::::4;;::::0;::::4;::::0;::::4;::::0;;;;::::4;::::0;;;;;;;;;;;;;::::4;;15219:19;::::0;;;:12:::4;:19;::::0;;;;;;;;:29:::4;;:36:::0;;-1:-1:-1;;;;15219:36:3::4;-1:-1:-1::0;;;15219:36:3::4;::::0;;15277;;-1:-1:-1;;;;;15277:36:3;::::4;::::0;;;;::::4;::::0;;;;;::::4;::::0;;;;;;;;;::::4;15330:27;15344:3;15349:7;15330:13;:27::i;:::-;287:1:64;628::::3;7624::3::2;13353:2023:::0;;;;;:::o;8408:254::-;726:12:57;:10;:12::i;:::-;8481:9:3::1;252:24:64;269:6;252:16;:24::i;:::-;8551:12:3::2;;8538:9;:25;;:57;;;;;8580:15;;8567:9;:28;;8538:57;8530:91;;;::::0;;-1:-1:-1;;;8530:91:3;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;8530:91:3;;;;;;;;;;;;;::::2;;-1:-1:-1::0;8634:8:3::2;:20:::0;8408:254::o;1862:31::-;;;;:::o;1422:217:57:-;1498:8;;-1:-1:-1;;;;;1498:8:57;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:57;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:57;;;-1:-1:-1;;;;;1591:8:57;;1583:16;;;;1610:21;;;1422:217::o;1154:33:56:-;;;-1:-1:-1;;;;;1154:33:56;;:::o;9057:171:3:-;726:12:57;:10;:12::i;:::-;9148:19:3::1;200:96:64;;252:24;269:6;252:16;:24::i;:::-;-1:-1:-1::0;9180:18:3::2;:40:::0;;-1:-1:-1;;9180:40:3::2;;::::0;;;::::2;::::0;;;::::2;::::0;;9057:171::o;2735:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;219:29:57:-;;;-1:-1:-1;;;;;219:29:57;;:::o;2399:35:3:-;;;-1:-1:-1;;;2399:35:3;;;;;:::o;2520:52::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2520:52:3;;;;-1:-1:-1;;;2520:52:3;;;;;-1:-1:-1;;;2520:52:3;;;;:::o;8776:163::-;726:12:57;:10;:12::i;:::-;8865:17:3::1;252:24:64;269:6;252:16;:24::i;:::-;-1:-1:-1::0;8895:16:3::2;:36:::0;8776:163::o;9743:103::-;726:12:57;:10;:12::i;:::-;9811:17:3::1;:27:::0;;;::::1;;-1:-1:-1::0;;;9811:27:3::1;-1:-1:-1::0;;;;9811:27:3;;::::1;::::0;;;::::1;::::0;;9743:103::o;1323:27::-;;;;:::o;15778:397::-;15872:7;15939:30;;:::i;:::-;-1:-1:-1;15972:42:3;15985:28;;;:14;:28;;;;;;;;;15972:42;;:12;:42;;;;;;15939:75;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15939:75:3;;;;;;;;;;-1:-1:-1;;;15939:75:3;;;;;;;;-1:-1:-1;;;15939:75:3;;;;;;;;;;;;;;16087:22;;;;16079:50;;;;;-1:-1:-1;;;16079:50:3;;;;;;;;;;;;-1:-1:-1;;;16079:50:3;;;;;;;;;;;;;;;16149:18;;-1:-1:-1;15778:397:3;;;;;:::o;7897:143::-;726:12:57;:10;:12::i;:::-;7978:13:3::1;252:24:64;269:6;252:16;:24::i;:::-;-1:-1:-1::0;8004:12:3::2;:28:::0;7897:143::o;3304:137:56:-;726:12:57;:10;:12::i;:::-;3421::56::1;::::0;3410:8:::1;:23:::0;;-1:-1:-1;;;;;;3410:23:56::1;-1:-1:-1::0;;;;;3421:12:56;;::::1;3410:23:::0;;;::::1;::::0;;3304:137::o;8152:158:3:-;726:12:57;:10;:12::i;:::-;8239:16:3::1;252:24:64;269:6;252:16;:24::i;:::-;-1:-1:-1::0;8268:15:3::2;:34:::0;8152:158::o;2140:31::-;;;;;;:::o;255:23:57:-;;;-1:-1:-1;;;;;255:23:57;;:::o;9460:120:3:-;726:12:57;:10;:12::i;:::-;-1:-1:-1;;;;;9542:20:3;;;::::1;;::::0;;;:9:::1;:20;::::0;;;;:30;;-1:-1:-1;;9542:30:3::1;::::0;::::1;;::::0;;;::::1;::::0;;9460:120::o;2609:50::-;;;;;;;;;;;;;:::o;10017:101::-;726:12:57;:10;:12::i;:::-;10084:16:3::1;:26:::0;;;::::1;;-1:-1:-1::0;;;10084:26:3::1;-1:-1:-1::0;;;;10084:26:3;;::::1;::::0;;;::::1;::::0;;10017:101::o;1164:167:57:-;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:57;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:57;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:57;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:57::1;-1:-1:-1::0;;;;;1303:20:57;;;::::1;::::0;;;::::1;::::0;;1164:167::o;1767:31:3:-;;;;:::o;2305:36::-;;;-1:-1:-1;;;2305:36:3;;;;;:::o;2243:33::-;;;;;;-1:-1:-1;;;;;2243:33:3;;:::o;813:104:57:-;882:5;;-1:-1:-1;;;;;882:5:57;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;;;;813:104::o;4077:133:56:-;4169:8;;:33;;;-1:-1:-1;;;4169:33:56;;;;;;;;;;4142:7;;-1:-1:-1;;;;;4169:8:56;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4169:33:56;;4077:133;-1:-1:-1;;4077:133:56:o;778:147:60:-;838:7;872:2;866;:8;;858:34;;;;;-1:-1:-1;;;858:34:60;;;;;;;;;;;;-1:-1:-1;;;858:34:60;;;;;;;;;;;;;;;-1:-1:-1;910:7:60;;;778:147::o;1149:250::-;1209:7;1262;1258:34;;-1:-1:-1;1291:1:60;1284:8;;1258:34;1317:7;;;1322:2;1317;:7;:2;1343:6;;;;;:12;1335:37;;;;;-1:-1:-1;;;1335:37:60;;;;;;;;;;;;-1:-1:-1;;;1335:37:60;;;;;;;;;;;;;;;1390:1;1149:250;-1:-1:-1;;;1149:250:60:o;386:169::-;446:7;478;;;504;;;;496:32;;;;;-1:-1:-1;;;496:32:60;;;;;;;;;;;;-1:-1:-1;;;496:32:60;;;;;;;;;;;;;;7388:105:3;7451:17;;-1:-1:-1;;;7451:17:3;;;;7443:42;;;;;-1:-1:-1;;;7443:42:3;;;;;;;;;;;;-1:-1:-1;;;7443:42:3;;;;;;;;;;;;;;17511:170;17584:5;;17567:59;;17584:5;;;-1:-1:-1;;;;;17584:5:3;17591:10;17611:4;17618:7;17567:16;:59::i;:::-;17642:31;;;;;;;;17653:10;;17642:31;;;;;;;;;;17511:170;:::o;692:128:64:-;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;692:128;:::o;1041:126::-;-1:-1:-1;;;;;1110:25:64;;1130:4;1110:25;;1102:57;;;;;-1:-1:-1;;;1102:57:64;;;;;;;;;;;;-1:-1:-1;;;1102:57:64;;;;;;;;;;;;;;1485:312:61;1631:59;;;-1:-1:-1;;;;;1631:59:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1631:59:61;-1:-1:-1;;;1631:59:61;;;1610:81;;;;1575:12;;1589:17;;1610:20;;;;1631:59;1610:81;;;1631:59;1610:81;;1631:59;1610:81;;;;;;;;;;-1:-1:-1;;1610:81:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1574:117;;;;1709:7;:57;;;;-1:-1:-1;1721:11:61;;:16;;:44;;;1752:4;1741:24;;;;;;;;;;;;;;;-1:-1:-1;1741:24:61;1721:44;1701:89;;;;;-1:-1:-1;;;1701:89:61;;;;;;;;;;;;-1:-1:-1;;;1701:89:61;;;;;;;;;;;;;;;1485:312;;;;;:::o;7079:109:3:-;7147:10;7137:21;;;;:9;:21;;;;;;;;7129:51;;;;;-1:-1:-1;;;7129:51:3;;;;;;;;;;;;-1:-1:-1;;;7129:51:3;;;;;;;;;;;;;;7688:103;7750:16;;-1:-1:-1;;;7750:16:3;;;;7742:41;;;;;-1:-1:-1;;;7742:41:3;;;;;;;;;;;;-1:-1:-1;;;7742:41:3;;;;;;;;;;;;;;351:112:64;435:1;426:6;:10;418:37;;;;;-1:-1:-1;;;418:37:64;;;;;;;;;;;;-1:-1:-1;;;418:37:64;;;;;;;;;;;;;;17899:591:3;18013:27;18043:24;:22;:24::i;:::-;18013:54;;18099:8;;18088:7;:19;;:53;;;;;18122:19;18111:7;:30;;18088:53;18080:85;;;;;-1:-1:-1;;;18080:85:3;;;;;;;;;;;;-1:-1:-1;;;18080:85:3;;;;;;;;;;;;;;;18260:32;:19;18284:7;18260:23;:32::i;:::-;18241:16;:51;18328:12;18303:22;:37;18417:5;;18404:33;;18417:5;;;-1:-1:-1;;;;;18417:5:3;18424:3;18429:7;18404:12;:33::i;:::-;18455:27;;;;;;;;-1:-1:-1;;;;;18455:27:3;;;;;;;;;;;;;17899:591;;;:::o;2190:348:61:-;2355:71;;;-1:-1:-1;;;;;2355:71:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2355:71:61;-1:-1:-1;;;2355:71:61;;;2334:93;;;;2299:12;;2313:17;;2334:20;;;;2355:71;2334:93;;;2355:71;2334:93;;2355:71;2334:93;;;;;;;;;;-1:-1:-1;;2334:93:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2298:129;;;;2445:7;:57;;;;-1:-1:-1;2457:11:61;;:16;;:44;;;2488:4;2477:24;;;;;;;;;;;;;;;-1:-1:-1;2477:24:61;2457:44;2437:94;;;;;-1:-1:-1;;;2437:94:61;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./interfaces/IBancorXUpgrader.sol\";\r\nimport \"./interfaces/IBancorX.sol\";\r\nimport \"../utility/ContractRegistryClient.sol\";\r\nimport \"../utility/SafeMath.sol\";\r\nimport \"../utility/TokenHandler.sol\";\r\nimport \"../utility/TokenHolder.sol\";\r\n\r\n/**\r\n  * @dev The BancorX contract allows cross chain token transfers.\r\n  *\r\n  * There are two processes that take place in the contract -\r\n  * - Initiate a cross chain transfer to a target blockchain (locks tokens from the caller account on Ethereum)\r\n  * - Report a cross chain transfer initiated on a source blockchain (releases tokens to an account on Ethereum)\r\n  *\r\n  * Reporting cross chain transfers works similar to standard multisig contracts, meaning that multiple\r\n  * callers are required to report a transfer before tokens are released to the target account.\r\n*/\r\ncontract BancorX is IBancorX, TokenHandler, TokenHolder, ContractRegistryClient {\r\n    using SafeMath for uint256;\r\n\r\n    // represents a transaction on another blockchain where tokens were destroyed/locked\r\n    struct Transaction {\r\n        uint256 amount;\r\n        bytes32 fromBlockchain;\r\n        address to;\r\n        uint8 numOfReports;\r\n        bool completed;\r\n    }\r\n\r\n    uint16 public constant version = 4;\r\n\r\n    uint256 public maxLockLimit;            // the maximum amount of tokens that can be locked in one transaction\r\n    uint256 public maxReleaseLimit;         // the maximum amount of tokens that can be released in one transaction\r\n    uint256 public minLimit;                // the minimum amount of tokens that can be transferred in one transaction\r\n    uint256 public prevLockLimit;           // the lock limit *after* the last transaction\r\n    uint256 public prevReleaseLimit;        // the release limit *after* the last transaction\r\n    uint256 public limitIncPerBlock;        // how much the limit increases per block\r\n    uint256 public prevLockBlockNumber;     // the block number of the last lock transaction\r\n    uint256 public prevReleaseBlockNumber;  // the block number of the last release transaction\r\n    uint8 public minRequiredReports;        // minimum number of required reports to release tokens\r\n\r\n    IERC20Token public override token;      // erc20 token\r\n\r\n    bool public xTransfersEnabled = true;   // true if x transfers are enabled, false if not\r\n    bool public reportingEnabled = true;    // true if reporting is enabled, false if not\r\n\r\n    // txId -> Transaction\r\n    mapping (uint256 => Transaction) public transactions;\r\n\r\n    // xTransferId -> txId\r\n    mapping (uint256 => uint256) public transactionIds;\r\n\r\n    // txId -> reporter -> true if reporter already reported txId\r\n    mapping (uint256 => mapping (address => bool)) public reportedTxs;\r\n\r\n    // address -> true if address is reporter\r\n    mapping (address => bool) public reporters;\r\n\r\n    /**\r\n      * @dev triggered when tokens are locked in smart contract\r\n      *\r\n      * @param _from    wallet address that the tokens are locked from\r\n      * @param _amount  amount locked\r\n    */\r\n    event TokensLock(\r\n        address indexed _from,\r\n        uint256 _amount\r\n    );\r\n\r\n    /**\r\n      * @dev triggered when tokens are released by the smart contract\r\n      *\r\n      * @param _to      wallet address that the tokens are released to\r\n      * @param _amount  amount released\r\n    */\r\n    event TokensRelease(\r\n        address indexed _to,\r\n        uint256 _amount\r\n    );\r\n\r\n    /**\r\n      * @dev triggered when xTransfer is successfully called\r\n      *\r\n      * @param _from            wallet address that initiated the xtransfer\r\n      * @param _toBlockchain    target blockchain\r\n      * @param _to              target wallet\r\n      * @param _amount          transfer amount\r\n      * @param _id              xtransfer id\r\n    */\r\n    event XTransfer(\r\n        address indexed _from,\r\n        bytes32 _toBlockchain,\r\n        bytes32 indexed _to,\r\n        uint256 _amount,\r\n        uint256 _id\r\n    );\r\n\r\n    /**\r\n      * @dev triggered when report is successfully submitted\r\n      *\r\n      * @param _reporter        reporter wallet\r\n      * @param _fromBlockchain  source blockchain\r\n      * @param _txId            tx id on the source blockchain\r\n      * @param _to              target wallet\r\n      * @param _amount          transfer amount\r\n      * @param _xTransferId     xtransfer id\r\n    */\r\n    event TxReport(\r\n        address indexed _reporter,\r\n        bytes32 _fromBlockchain,\r\n        uint256 _txId,\r\n        address _to,\r\n        uint256 _amount,\r\n        uint256 _xTransferId\r\n    );\r\n\r\n    /**\r\n      * @dev triggered when final report is successfully submitted\r\n      *\r\n      * @param _to  target wallet\r\n      * @param _id  xtransfer id\r\n    */\r\n    event XTransferComplete(\r\n        address _to,\r\n        uint256 _id\r\n    );\r\n\r\n    /**\r\n      * @dev initializes a new BancorX instance\r\n      *\r\n      * @param _maxLockLimit          maximum amount of tokens that can be locked in one transaction\r\n      * @param _maxReleaseLimit       maximum amount of tokens that can be released in one transaction\r\n      * @param _minLimit              minimum amount of tokens that can be transferred in one transaction\r\n      * @param _limitIncPerBlock      how much the limit increases per block\r\n      * @param _minRequiredReports    minimum number of reporters to report transaction before tokens can be released\r\n      * @param _registry              address of contract registry\r\n      * @param _token                 erc20 token\r\n     */\r\n    constructor(\r\n        uint256 _maxLockLimit,\r\n        uint256 _maxReleaseLimit,\r\n        uint256 _minLimit,\r\n        uint256 _limitIncPerBlock,\r\n        uint8 _minRequiredReports,\r\n        IContractRegistry _registry,\r\n        IERC20Token _token\r\n    )   ContractRegistryClient(_registry)\r\n        public\r\n        greaterThanZero(_maxLockLimit)\r\n        greaterThanZero(_maxReleaseLimit)\r\n        greaterThanZero(_minLimit)\r\n        greaterThanZero(_limitIncPerBlock)\r\n        greaterThanZero(_minRequiredReports)\r\n        validAddress(address(_token))\r\n        notThis(address(_token))\r\n    {\r\n        // validate input\r\n        require(_minLimit <= _maxLockLimit && _minLimit <= _maxReleaseLimit, \"ERR_INVALID_MIN_LIMIT\");\r\n\r\n        // the maximum limits, minimum limit, and limit increase per block\r\n        maxLockLimit = _maxLockLimit;\r\n        maxReleaseLimit = _maxReleaseLimit;\r\n        minLimit = _minLimit;\r\n        limitIncPerBlock = _limitIncPerBlock;\r\n        minRequiredReports = _minRequiredReports;\r\n\r\n        // previous limit is _maxLimit, and previous block number is current block number\r\n        prevLockLimit = _maxLockLimit;\r\n        prevReleaseLimit = _maxReleaseLimit;\r\n        prevLockBlockNumber = block.number;\r\n        prevReleaseBlockNumber = block.number;\r\n\r\n        token = _token;\r\n    }\r\n\r\n    // validates that the caller is a reporter\r\n    modifier reporterOnly {\r\n        _reporterOnly();\r\n        _;\r\n    }\r\n\r\n    // error message binary size optimization\r\n    function _reporterOnly() internal view {\r\n        require(reporters[msg.sender], \"ERR_ACCESS_DENIED\");\r\n    }\r\n\r\n    // allows execution only when x transfers are enabled\r\n    modifier xTransfersAllowed {\r\n        _xTransfersAllowed();\r\n        _;\r\n    }\r\n\r\n    // error message binary size optimization\r\n    function _xTransfersAllowed() internal view {\r\n        require(xTransfersEnabled, \"ERR_DISABLED\");\r\n    }\r\n\r\n    // allows execution only when reporting is enabled\r\n    modifier reportingAllowed {\r\n        _reportingAllowed();\r\n        _;\r\n    }\r\n\r\n    // error message binary size optimization\r\n    function _reportingAllowed() internal view {\r\n        require(reportingEnabled, \"ERR_DISABLED\");\r\n    }\r\n\r\n    /**\r\n      * @dev setter\r\n      *\r\n      * @param _maxLockLimit    new maxLockLimit\r\n     */\r\n    function setMaxLockLimit(uint256 _maxLockLimit) public ownerOnly greaterThanZero(_maxLockLimit) {\r\n        maxLockLimit = _maxLockLimit;\r\n    }\r\n\r\n    /**\r\n      * @dev setter\r\n      *\r\n      * @param _maxReleaseLimit    new maxReleaseLimit\r\n     */\r\n    function setMaxReleaseLimit(uint256 _maxReleaseLimit) public ownerOnly greaterThanZero(_maxReleaseLimit) {\r\n        maxReleaseLimit = _maxReleaseLimit;\r\n    }\r\n\r\n    /**\r\n      * @dev setter\r\n      *\r\n      * @param _minLimit    new minLimit\r\n     */\r\n    function setMinLimit(uint256 _minLimit) public ownerOnly greaterThanZero(_minLimit) {\r\n        // validate input\r\n        require(_minLimit <= maxLockLimit && _minLimit <= maxReleaseLimit, \"ERR_INVALID_MIN_LIMIT\");\r\n\r\n        minLimit = _minLimit;\r\n    }\r\n\r\n    /**\r\n      * @dev setter\r\n      *\r\n      * @param _limitIncPerBlock    new limitIncPerBlock\r\n     */\r\n    function setLimitIncPerBlock(uint256 _limitIncPerBlock) public ownerOnly greaterThanZero(_limitIncPerBlock) {\r\n        limitIncPerBlock = _limitIncPerBlock;\r\n    }\r\n\r\n    /**\r\n      * @dev setter\r\n      *\r\n      * @param _minRequiredReports    new minRequiredReports\r\n     */\r\n    function setMinRequiredReports(uint8 _minRequiredReports) public ownerOnly greaterThanZero(_minRequiredReports) {\r\n        minRequiredReports = _minRequiredReports;\r\n    }\r\n\r\n    /**\r\n      * @dev allows the owner to set/remove reporters\r\n      *\r\n      * @param _reporter    reporter whos status is to be set\r\n      * @param _active      true if the reporter is approved, false otherwise\r\n     */\r\n    function setReporter(address _reporter, bool _active) public ownerOnly {\r\n        reporters[_reporter] = _active;\r\n    }\r\n\r\n    /**\r\n      * @dev allows the owner enable/disable the xTransfer method\r\n      *\r\n      * @param _enable     true to enable, false to disable\r\n     */\r\n    function enableXTransfers(bool _enable) public ownerOnly {\r\n        xTransfersEnabled = _enable;\r\n    }\r\n\r\n    /**\r\n      * @dev allows the owner enable/disable the reportTransaction method\r\n      *\r\n      * @param _enable     true to enable, false to disable\r\n     */\r\n    function enableReporting(bool _enable) public ownerOnly {\r\n        reportingEnabled = _enable;\r\n    }\r\n\r\n    /**\r\n      * @dev upgrades the contract to the latest version\r\n      * can only be called by the owner\r\n      * note that the owner needs to call acceptOwnership on the new contract after the upgrade\r\n      *\r\n      * @param _reporters    new list of reporters\r\n    */\r\n    function upgrade(address[] memory _reporters) public ownerOnly {\r\n        IBancorXUpgrader bancorXUpgrader = IBancorXUpgrader(addressOf(BANCOR_X_UPGRADER));\r\n\r\n        transferOwnership(address(bancorXUpgrader));\r\n        bancorXUpgrader.upgrade(version, _reporters);\r\n        acceptOwnership();\r\n    }\r\n\r\n    /**\r\n      * @dev claims tokens from msg.sender to be converted to tokens on another blockchain\r\n      *\r\n      * @param _toBlockchain    blockchain on which tokens will be issued\r\n      * @param _to              address to send the tokens to\r\n      * @param _amount          the amount of tokens to transfer\r\n     */\r\n    function xTransfer(bytes32 _toBlockchain, bytes32 _to, uint256 _amount) public xTransfersAllowed {\r\n        // get the current lock limit\r\n        uint256 currentLockLimit = getCurrentLockLimit();\r\n\r\n        // verify lock limit\r\n        require(_amount >= minLimit && _amount <= currentLockLimit, \"ERR_AMOUNT_TOO_HIGH\");\r\n\r\n        lockTokens(_amount);\r\n\r\n        // set the previous lock limit and block number\r\n        prevLockLimit = currentLockLimit.sub(_amount);\r\n        prevLockBlockNumber = block.number;\r\n\r\n        // emit XTransfer event with id of 0\r\n        emit XTransfer(msg.sender, _toBlockchain, _to, _amount, 0);\r\n    }\r\n\r\n    /**\r\n      * @dev claims tokens from msg.sender to be converted to tokens on another blockchain\r\n      *\r\n      * @param _toBlockchain    blockchain on which tokens will be issued\r\n      * @param _to              address to send the tokens to\r\n      * @param _amount          the amount of tokens to transfer\r\n      * @param _id              pre-determined unique (if non zero) id which refers to this transaction\r\n     */\r\n    function xTransfer(bytes32 _toBlockchain, bytes32 _to, uint256 _amount, uint256 _id) public override xTransfersAllowed {\r\n        // get the current lock limit\r\n        uint256 currentLockLimit = getCurrentLockLimit();\r\n\r\n        // require that; minLimit <= _amount <= currentLockLimit\r\n        require(_amount >= minLimit && _amount <= currentLockLimit, \"ERR_AMOUNT_TOO_HIGH\");\r\n\r\n        lockTokens(_amount);\r\n\r\n        // set the previous lock limit and block number\r\n        prevLockLimit = currentLockLimit.sub(_amount);\r\n        prevLockBlockNumber = block.number;\r\n\r\n        // emit XTransfer event\r\n        emit XTransfer(msg.sender, _toBlockchain, _to, _amount, _id);\r\n    }\r\n\r\n    /**\r\n      * @dev allows reporter to report transaction which occured on another blockchain\r\n      *\r\n      * @param _fromBlockchain  blockchain in which tokens were destroyed\r\n      * @param _txId            transactionId of transaction thats being reported\r\n      * @param _to              address to receive tokens\r\n      * @param _amount          amount of tokens destroyed on another blockchain\r\n      * @param _xTransferId     unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been mined)\r\n     */\r\n    function reportTx(\r\n        bytes32 _fromBlockchain,\r\n        uint256 _txId,\r\n        address _to,\r\n        uint256 _amount,\r\n        uint256 _xTransferId\r\n    )\r\n        public\r\n        reporterOnly\r\n        reportingAllowed\r\n        validAddress(_to)\r\n        greaterThanZero(_amount)\r\n    {\r\n        // require that the transaction has not been reported yet by the reporter\r\n        require(!reportedTxs[_txId][msg.sender], \"ERR_ALREADY_REPORTED\");\r\n\r\n        // set reported as true\r\n        reportedTxs[_txId][msg.sender] = true;\r\n\r\n        Transaction storage txn = transactions[_txId];\r\n\r\n        // If the caller is the first reporter, set the transaction details\r\n        if (txn.numOfReports == 0) {\r\n            txn.to = _to;\r\n            txn.amount = _amount;\r\n            txn.fromBlockchain = _fromBlockchain;\r\n\r\n            if (_xTransferId != 0) {\r\n                // verify uniqueness of xTransfer id to prevent overwriting\r\n                require(transactionIds[_xTransferId] == 0, \"ERR_TX_ALREADY_EXISTS\");\r\n                transactionIds[_xTransferId] = _txId;\r\n            }\r\n        }\r\n        else {\r\n            // otherwise, verify transaction details\r\n            require(txn.to == _to && txn.amount == _amount && txn.fromBlockchain == _fromBlockchain, \"ERR_TX_MISMATCH\");\r\n\r\n            if (_xTransferId != 0)\r\n                require(transactionIds[_xTransferId] == _txId, \"ERR_TX_ALREADY_EXISTS\");\r\n        }\r\n\r\n        // increment the number of reports\r\n        txn.numOfReports++;\r\n\r\n        emit TxReport(msg.sender, _fromBlockchain, _txId, _to, _amount, _xTransferId);\r\n\r\n        // if theres enough reports, try to release tokens\r\n        if (txn.numOfReports >= minRequiredReports) {\r\n            require(!transactions[_txId].completed, \"ERR_TX_ALREADY_COMPLETED\");\r\n\r\n            // set the transaction as completed\r\n            transactions[_txId].completed = true;\r\n\r\n            emit XTransferComplete(_to, _xTransferId);\r\n\r\n            releaseTokens(_to, _amount);\r\n        }\r\n    }\r\n\r\n    /**\r\n      * @dev gets x transfer amount by xTransferId (not txId)\r\n      *\r\n      * @param _xTransferId    unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been broadcasted)\r\n      * @param _for            address corresponding to xTransferId\r\n      *\r\n      * @return amount that was sent in xTransfer corresponding to _xTransferId\r\n    */\r\n    function getXTransferAmount(uint256 _xTransferId, address _for) public view override returns (uint256) {\r\n        // xTransferId -> txId -> Transaction\r\n        Transaction memory transaction = transactions[transactionIds[_xTransferId]];\r\n\r\n        // verify that the xTransferId is for _for\r\n        require(transaction.to == _for, \"ERR_TX_MISMATCH\");\r\n\r\n        return transaction.amount;\r\n    }\r\n\r\n    /**\r\n      * @dev method for calculating current lock limit\r\n      *\r\n      * @return the current maximum limit of tokens that can be locked\r\n     */\r\n    function getCurrentLockLimit() public view returns (uint256) {\r\n        // prevLockLimit + ((currBlockNumber - prevLockBlockNumber) * limitIncPerBlock)\r\n        uint256 currentLockLimit = prevLockLimit.add(((block.number).sub(prevLockBlockNumber)).mul(limitIncPerBlock));\r\n        if (currentLockLimit > maxLockLimit)\r\n            return maxLockLimit;\r\n        return currentLockLimit;\r\n    }\r\n\r\n    /**\r\n      * @dev method for calculating current release limit\r\n      *\r\n      * @return the current maximum limit of tokens that can be released\r\n     */\r\n    function getCurrentReleaseLimit() public view returns (uint256) {\r\n        // prevReleaseLimit + ((currBlockNumber - prevReleaseBlockNumber) * limitIncPerBlock)\r\n        uint256 currentReleaseLimit = prevReleaseLimit.add(((block.number).sub(prevReleaseBlockNumber)).mul(limitIncPerBlock));\r\n        if (currentReleaseLimit > maxReleaseLimit)\r\n            return maxReleaseLimit;\r\n        return currentReleaseLimit;\r\n    }\r\n\r\n    /**\r\n      * @dev claims and locks tokens from msg.sender to be converted to tokens on another blockchain\r\n      *\r\n      * @param _amount  the amount of tokens to lock\r\n     */\r\n    function lockTokens(uint256 _amount) private {\r\n        safeTransferFrom(token, msg.sender, address(this), _amount);\r\n        emit TokensLock(msg.sender, _amount);\r\n    }\r\n\r\n    /**\r\n      * @dev private method to release tokens held by the contract\r\n      *\r\n      * @param _to      the address to release tokens to\r\n      * @param _amount  the amount of tokens to release\r\n     */\r\n    function releaseTokens(address _to, uint256 _amount) private {\r\n        // get the current release limit\r\n        uint256 currentReleaseLimit = getCurrentReleaseLimit();\r\n\r\n        require(_amount >= minLimit && _amount <= currentReleaseLimit, \"ERR_AMOUNT_TOO_HIGH\");\r\n\r\n        // update the previous release limit and block number\r\n        prevReleaseLimit = currentReleaseLimit.sub(_amount);\r\n        prevReleaseBlockNumber = block.number;\r\n\r\n        // no need to require, reverts on failure\r\n        safeTransfer(token, _to, _amount);\r\n\r\n        emit TokensRelease(_to, _amount);\r\n    }\r\n}\r\n",
  "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/BancorX.sol",
  "ast": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/BancorX.sol",
    "exportedSymbols": {
      "BancorX": [
        3447
      ]
    },
    "id": 3448,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2548,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:3"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/interfaces/IBancorXUpgrader.sol",
        "file": "./interfaces/IBancorXUpgrader.sol",
        "id": 2549,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 3563,
        "src": "77:43:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/interfaces/IBancorX.sol",
        "file": "./interfaces/IBancorX.sol",
        "id": 2550,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 3552,
        "src": "122:35:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "../utility/ContractRegistryClient.sol",
        "id": 2551,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 21720,
        "src": "159:47:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/SafeMath.sol",
        "file": "../utility/SafeMath.sol",
        "id": 2552,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 22355,
        "src": "208:33:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol",
        "file": "../utility/TokenHandler.sol",
        "id": 2553,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 22527,
        "src": "243:37:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol",
        "file": "../utility/TokenHolder.sol",
        "id": 2554,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 22576,
        "src": "282:36:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2556,
              "name": "IBancorX",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3551,
              "src": "920:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IBancorX_$3551",
                "typeString": "contract IBancorX"
              }
            },
            "id": 2557,
            "nodeType": "InheritanceSpecifier",
            "src": "920:8:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2558,
              "name": "TokenHandler",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22526,
              "src": "930:12:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TokenHandler_$22526",
                "typeString": "contract TokenHandler"
              }
            },
            "id": 2559,
            "nodeType": "InheritanceSpecifier",
            "src": "930:12:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2560,
              "name": "TokenHolder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22575,
              "src": "944:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TokenHolder_$22575",
                "typeString": "contract TokenHolder"
              }
            },
            "id": 2561,
            "nodeType": "InheritanceSpecifier",
            "src": "944:11:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2562,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "957:22:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 2563,
            "nodeType": "InheritanceSpecifier",
            "src": "957:22:3"
          }
        ],
        "contractDependencies": [
          3551,
          21719,
          21818,
          22526,
          22575,
          22661,
          22847,
          22907
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 2555,
          "nodeType": "StructuredDocumentation",
          "src": "322:576:3",
          "text": " @dev The BancorX contract allows cross chain token transfers.\n There are two processes that take place in the contract -\n - Initiate a cross chain transfer to a target blockchain (locks tokens from the caller account on Ethereum)\n - Report a cross chain transfer initiated on a source blockchain (releases tokens to an account on Ethereum)\n Reporting cross chain transfers works similar to standard multisig contracts, meaning that multiple\n callers are required to report a transfer before tokens are released to the target account."
        },
        "fullyImplemented": true,
        "id": 3447,
        "linearizedBaseContracts": [
          3447,
          21719,
          22575,
          22661,
          21818,
          22526,
          22907,
          22847,
          3551
        ],
        "name": "BancorX",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2566,
            "libraryName": {
              "contractScope": null,
              "id": 2564,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22354,
              "src": "993:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22354",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "987:27:3",
            "typeName": {
              "id": 2565,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1006:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "BancorX.Transaction",
            "id": 2577,
            "members": [
              {
                "constant": false,
                "id": 2568,
                "mutability": "mutable",
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1142:14:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2567,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1142:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2570,
                "mutability": "mutable",
                "name": "fromBlockchain",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1167:22:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2569,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1167:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2572,
                "mutability": "mutable",
                "name": "to",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1200:10:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2571,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1200:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2574,
                "mutability": "mutable",
                "name": "numOfReports",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1221:18:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2573,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1221:5:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2576,
                "mutability": "mutable",
                "name": "completed",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1250:14:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2575,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1250:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Transaction",
            "nodeType": "StructDefinition",
            "scope": 3447,
            "src": "1112:160:3",
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "54fd4d50",
            "id": 2580,
            "mutability": "constant",
            "name": "version",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1280:34:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 2578,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "1280:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 2579,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1313:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a8c36a90",
            "id": 2582,
            "mutability": "mutable",
            "name": "maxLockLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1323:27:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2581,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1323:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "52e94ce3",
            "id": 2584,
            "mutability": "mutable",
            "name": "maxReleaseLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1438:30:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2583,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1438:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "1fd8088d",
            "id": 2586,
            "mutability": "mutable",
            "name": "minLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1555:23:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2585,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1555:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "16c76c27",
            "id": 2588,
            "mutability": "mutable",
            "name": "prevLockLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1675:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2587,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1675:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "f7385f76",
            "id": 2590,
            "mutability": "mutable",
            "name": "prevReleaseLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1767:31:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2589,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1767:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "72f43d19",
            "id": 2592,
            "mutability": "mutable",
            "name": "limitIncPerBlock",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1862:31:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2591,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1862:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "1aff29eb",
            "id": 2594,
            "mutability": "mutable",
            "name": "prevLockBlockNumber",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1949:34:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2593,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1949:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "4b3e475c",
            "id": 2596,
            "mutability": "mutable",
            "name": "prevReleaseBlockNumber",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2043:37:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2595,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2043:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "ca27e011",
            "id": 2598,
            "mutability": "mutable",
            "name": "minRequiredReports",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2140:31:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2597,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "2140:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3530
            ],
            "constant": false,
            "functionSelector": "fc0c546a",
            "id": 2601,
            "mutability": "mutable",
            "name": "token",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 2600,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2262:8:3"
            },
            "scope": 3447,
            "src": "2243:33:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Token_$21127",
              "typeString": "contract IERC20Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 2599,
              "name": "IERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21127,
              "src": "2243:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "fbb24692",
            "id": 2604,
            "mutability": "mutable",
            "name": "xTransfersEnabled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2305:36:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2602,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2305:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74727565",
              "id": 2603,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2337:4:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "true"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "9390701c",
            "id": 2607,
            "mutability": "mutable",
            "name": "reportingEnabled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2399:35:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2605,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2399:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74727565",
              "id": 2606,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2430:4:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "true"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "9ace38c2",
            "id": 2611,
            "mutability": "mutable",
            "name": "transactions",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2520:52:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
              "typeString": "mapping(uint256 => struct BancorX.Transaction)"
            },
            "typeName": {
              "id": 2610,
              "keyType": {
                "id": 2608,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2529:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2520:32:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                "typeString": "mapping(uint256 => struct BancorX.Transaction)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2609,
                "name": "Transaction",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2577,
                "src": "2540:11:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                  "typeString": "struct BancorX.Transaction"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "e36f8dc5",
            "id": 2615,
            "mutability": "mutable",
            "name": "transactionIds",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2609:50:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2614,
              "keyType": {
                "id": 2612,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2618:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2609:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2613,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2629:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "8544c52d",
            "id": 2621,
            "mutability": "mutable",
            "name": "reportedTxs",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2735:65:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(uint256 => mapping(address => bool))"
            },
            "typeName": {
              "id": 2620,
              "keyType": {
                "id": 2616,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2744:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2735:46:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(uint256 => mapping(address => bool))"
              },
              "valueType": {
                "id": 2619,
                "keyType": {
                  "id": 2617,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2764:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "2755:25:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 2618,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2775:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "2cc1cd9e",
            "id": 2625,
            "mutability": "mutable",
            "name": "reporters",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2856:42:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2624,
              "keyType": {
                "id": 2622,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2865:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2856:25:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2623,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2876:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2626,
              "nodeType": "StructuredDocumentation",
              "src": "2907:196:3",
              "text": " @dev triggered when tokens are locked in smart contract\n @param _from    wallet address that the tokens are locked from\n @param _amount  amount locked"
            },
            "id": 2632,
            "name": "TokensLock",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2628,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2632,
                  "src": "3136:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2627,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3136:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2630,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2632,
                  "src": "3168:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2629,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3125:65:3"
            },
            "src": "3109:82:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2633,
              "nodeType": "StructuredDocumentation",
              "src": "3199:204:3",
              "text": " @dev triggered when tokens are released by the smart contract\n @param _to      wallet address that the tokens are released to\n @param _amount  amount released"
            },
            "id": 2639,
            "name": "TokensRelease",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2638,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2635,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2639,
                  "src": "3439:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2634,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3439:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2637,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2639,
                  "src": "3469:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2636,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3469:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3428:63:3"
            },
            "src": "3409:83:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2640,
              "nodeType": "StructuredDocumentation",
              "src": "3500:352:3",
              "text": " @dev triggered when xTransfer is successfully called\n @param _from            wallet address that initiated the xtransfer\n @param _toBlockchain    target blockchain\n @param _to              target wallet\n @param _amount          transfer amount\n @param _id              xtransfer id"
            },
            "id": 2652,
            "name": "XTransfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2642,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3884:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3884:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2644,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_toBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3916:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2643,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3916:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2646,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3948:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2645,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3948:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2648,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3978:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2647,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3978:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2650,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "4004:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4004:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3873:149:3"
            },
            "src": "3858:165:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2653,
              "nodeType": "StructuredDocumentation",
              "src": "4031:388:3",
              "text": " @dev triggered when report is successfully submitted\n @param _reporter        reporter wallet\n @param _fromBlockchain  source blockchain\n @param _txId            tx id on the source blockchain\n @param _to              target wallet\n @param _amount          transfer amount\n @param _xTransferId     xtransfer id"
            },
            "id": 2667,
            "name": "TxReport",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2655,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_reporter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4450:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2654,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4450:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2657,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_fromBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4486:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2656,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4486:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2659,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_txId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4520:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4520:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2661,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4544:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2660,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4544:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2663,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4566:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2662,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4566:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2665,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_xTransferId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4592:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4592:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4439:180:3"
            },
            "src": "4425:195:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2668,
              "nodeType": "StructuredDocumentation",
              "src": "4628:157:3",
              "text": " @dev triggered when final report is successfully submitted\n @param _to  target wallet\n @param _id  xtransfer id"
            },
            "id": 2674,
            "name": "XTransferComplete",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2670,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2674,
                  "src": "4825:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2669,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4825:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2672,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2674,
                  "src": "4847:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4847:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4814:51:3"
            },
            "src": "4791:75:3"
          },
          {
            "body": {
              "id": 2775,
              "nodeType": "Block",
              "src": "6171:729:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2723,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2681,
                            "src": "6217:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2724,
                            "name": "_maxLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2677,
                            "src": "6230:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6217:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2726,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2681,
                            "src": "6247:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2727,
                            "name": "_maxReleaseLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2679,
                            "src": "6260:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6247:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6217:59:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f4d494e5f4c494d4954",
                        "id": 2730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6278:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        },
                        "value": "ERR_INVALID_MIN_LIMIT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        }
                      ],
                      "id": 2722,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6209:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6209:93:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2732,
                  "nodeType": "ExpressionStatement",
                  "src": "6209:93:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2733,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "6391:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2734,
                      "name": "_maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2677,
                      "src": "6406:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6391:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2736,
                  "nodeType": "ExpressionStatement",
                  "src": "6391:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2737,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "6430:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2738,
                      "name": "_maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2679,
                      "src": "6448:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6430:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2740,
                  "nodeType": "ExpressionStatement",
                  "src": "6430:34:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2741,
                      "name": "minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "6475:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2742,
                      "name": "_minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2681,
                      "src": "6486:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6475:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2744,
                  "nodeType": "ExpressionStatement",
                  "src": "6475:20:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2745,
                      "name": "limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2592,
                      "src": "6506:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2746,
                      "name": "_limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2683,
                      "src": "6525:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6506:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2748,
                  "nodeType": "ExpressionStatement",
                  "src": "6506:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2749,
                      "name": "minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2598,
                      "src": "6553:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2750,
                      "name": "_minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2685,
                      "src": "6574:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6553:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2752,
                  "nodeType": "ExpressionStatement",
                  "src": "6553:40:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2753,
                      "name": "prevLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2588,
                      "src": "6697:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2754,
                      "name": "_maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2677,
                      "src": "6713:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6697:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2756,
                  "nodeType": "ExpressionStatement",
                  "src": "6697:29:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2757,
                      "name": "prevReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "6737:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2758,
                      "name": "_maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2679,
                      "src": "6756:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6737:35:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2760,
                  "nodeType": "ExpressionStatement",
                  "src": "6737:35:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2761,
                      "name": "prevLockBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2594,
                      "src": "6783:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2762,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "6805:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2763,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6805:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6783:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2765,
                  "nodeType": "ExpressionStatement",
                  "src": "6783:34:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2766,
                      "name": "prevReleaseBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2596,
                      "src": "6828:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2767,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "6853:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2768,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6853:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6828:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2770,
                  "nodeType": "ExpressionStatement",
                  "src": "6828:37:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2771,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "6878:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2772,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2689,
                      "src": "6886:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "src": "6878:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 2774,
                  "nodeType": "ExpressionStatement",
                  "src": "6878:14:3"
                }
              ]
            },
            "documentation": {
              "id": 2675,
              "nodeType": "StructuredDocumentation",
              "src": "4874:699:3",
              "text": " @dev initializes a new BancorX instance\n @param _maxLockLimit          maximum amount of tokens that can be locked in one transaction\n @param _maxReleaseLimit       maximum amount of tokens that can be released in one transaction\n @param _minLimit              minimum amount of tokens that can be transferred in one transaction\n @param _limitIncPerBlock      how much the limit increases per block\n @param _minRequiredReports    minimum number of reporters to report transaction before tokens can be released\n @param _registry              address of contract registry\n @param _token                 erc20 token"
            },
            "id": 2776,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2692,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2687,
                    "src": "5857:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 2693,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2691,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "5834:22:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5834:33:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2695,
                    "name": "_maxLockLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2677,
                    "src": "5909:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2696,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2694,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "5893:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5893:30:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2698,
                    "name": "_maxReleaseLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2679,
                    "src": "5949:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2699,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2697,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "5933:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5933:33:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2701,
                    "name": "_minLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2681,
                    "src": "5992:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2702,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2700,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "5976:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5976:26:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2704,
                    "name": "_limitIncPerBlock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2683,
                    "src": "6028:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2705,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2703,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "6012:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6012:34:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2707,
                    "name": "_minRequiredReports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2685,
                    "src": "6072:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  }
                ],
                "id": 2708,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2706,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "6056:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6056:36:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2712,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2689,
                        "src": "6123:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 2711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6115:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 2710,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6115:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 2713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6115:15:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 2714,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2709,
                  "name": "validAddress",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22618,
                  "src": "6102:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6102:29:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2718,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2689,
                        "src": "6157:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 2717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6149:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 2716,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6149:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6149:15:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 2720,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2715,
                  "name": "notThis",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22644,
                  "src": "6141:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6141:24:3"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2677,
                  "mutability": "mutable",
                  "name": "_maxLockLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5601:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2676,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5601:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2679,
                  "mutability": "mutable",
                  "name": "_maxReleaseLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5633:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5633:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2681,
                  "mutability": "mutable",
                  "name": "_minLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5668:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2680,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5668:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2683,
                  "mutability": "mutable",
                  "name": "_limitIncPerBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5696:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2682,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5696:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2685,
                  "mutability": "mutable",
                  "name": "_minRequiredReports",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5732:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2684,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5732:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2687,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5768:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2686,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "5768:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2689,
                  "mutability": "mutable",
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5806:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2688,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "5806:11:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5590:241:3"
            },
            "returnParameters": {
              "id": 2721,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6171:0:3"
            },
            "scope": 3447,
            "src": "5579:1321:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2782,
              "nodeType": "Block",
              "src": "6978:46:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2778,
                      "name": "_reporterOnly",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2795,
                      "src": "6989:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 2779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6989:15:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2780,
                  "nodeType": "ExpressionStatement",
                  "src": "6989:15:3"
                },
                {
                  "id": 2781,
                  "nodeType": "PlaceholderStatement",
                  "src": "7015:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 2783,
            "name": "reporterOnly",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 2777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6978:0:3"
            },
            "src": "6956:68:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2794,
              "nodeType": "Block",
              "src": "7118:70:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2787,
                          "name": "reporters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2625,
                          "src": "7137:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 2790,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2788,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "7147:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7147:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7137:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f4143434553535f44454e494544",
                        "id": 2791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7160:19:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        },
                        "value": "ERR_ACCESS_DENIED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        }
                      ],
                      "id": 2786,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7129:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7129:51:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2793,
                  "nodeType": "ExpressionStatement",
                  "src": "7129:51:3"
                }
              ]
            },
            "documentation": null,
            "id": 2795,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_reporterOnly",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2784,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7101:2:3"
            },
            "returnParameters": {
              "id": 2785,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7118:0:3"
            },
            "scope": 3447,
            "src": "7079:109:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2801,
              "nodeType": "Block",
              "src": "7282:51:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2797,
                      "name": "_xTransfersAllowed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2811,
                      "src": "7293:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 2798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7293:20:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2799,
                  "nodeType": "ExpressionStatement",
                  "src": "7293:20:3"
                },
                {
                  "id": 2800,
                  "nodeType": "PlaceholderStatement",
                  "src": "7324:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 2802,
            "name": "xTransfersAllowed",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 2796,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7282:0:3"
            },
            "src": "7255:78:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2810,
              "nodeType": "Block",
              "src": "7432:61:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2806,
                        "name": "xTransfersEnabled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2604,
                        "src": "7451:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f44495341424c4544",
                        "id": 2807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7470:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        },
                        "value": "ERR_DISABLED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        }
                      ],
                      "id": 2805,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7443:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7443:42:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2809,
                  "nodeType": "ExpressionStatement",
                  "src": "7443:42:3"
                }
              ]
            },
            "documentation": null,
            "id": 2811,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_xTransfersAllowed",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7415:2:3"
            },
            "returnParameters": {
              "id": 2804,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7432:0:3"
            },
            "scope": 3447,
            "src": "7388:105:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2817,
              "nodeType": "Block",
              "src": "7583:50:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2813,
                      "name": "_reportingAllowed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2827,
                      "src": "7594:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 2814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7594:19:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2815,
                  "nodeType": "ExpressionStatement",
                  "src": "7594:19:3"
                },
                {
                  "id": 2816,
                  "nodeType": "PlaceholderStatement",
                  "src": "7624:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 2818,
            "name": "reportingAllowed",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 2812,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7583:0:3"
            },
            "src": "7557:76:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2826,
              "nodeType": "Block",
              "src": "7731:60:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2822,
                        "name": "reportingEnabled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "7750:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f44495341424c4544",
                        "id": 2823,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7768:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        },
                        "value": "ERR_DISABLED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        }
                      ],
                      "id": 2821,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7742:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7742:41:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2825,
                  "nodeType": "ExpressionStatement",
                  "src": "7742:41:3"
                }
              ]
            },
            "documentation": null,
            "id": 2827,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_reportingAllowed",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2819,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7714:2:3"
            },
            "returnParameters": {
              "id": 2820,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7731:0:3"
            },
            "scope": 3447,
            "src": "7688:103:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2842,
              "nodeType": "Block",
              "src": "7993:47:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2838,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "8004:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2839,
                      "name": "_maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2830,
                      "src": "8019:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8004:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2841,
                  "nodeType": "ExpressionStatement",
                  "src": "8004:28:3"
                }
              ]
            },
            "documentation": {
              "id": 2828,
              "nodeType": "StructuredDocumentation",
              "src": "7799:92:3",
              "text": " @dev setter\n @param _maxLockLimit    new maxLockLimit"
            },
            "functionSelector": "af2b9618",
            "id": 2843,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2833,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2832,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "7952:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7952:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2835,
                    "name": "_maxLockLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2830,
                    "src": "7978:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2836,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2834,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "7962:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7962:30:3"
              }
            ],
            "name": "setMaxLockLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2830,
                  "mutability": "mutable",
                  "name": "_maxLockLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2843,
                  "src": "7922:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2829,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7922:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7921:23:3"
            },
            "returnParameters": {
              "id": 2837,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7993:0:3"
            },
            "scope": 3447,
            "src": "7897:143:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2858,
              "nodeType": "Block",
              "src": "8257:53:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2854,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "8268:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2855,
                      "name": "_maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2846,
                      "src": "8286:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8268:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2857,
                  "nodeType": "ExpressionStatement",
                  "src": "8268:34:3"
                }
              ]
            },
            "documentation": {
              "id": 2844,
              "nodeType": "StructuredDocumentation",
              "src": "8048:98:3",
              "text": " @dev setter\n @param _maxReleaseLimit    new maxReleaseLimit"
            },
            "functionSelector": "bf28ece4",
            "id": 2859,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2849,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2848,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "8213:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8213:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2851,
                    "name": "_maxReleaseLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2846,
                    "src": "8239:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2852,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2850,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "8223:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8223:33:3"
              }
            ],
            "name": "setMaxReleaseLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2846,
                  "mutability": "mutable",
                  "name": "_maxReleaseLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2859,
                  "src": "8180:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2845,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8180:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8179:26:3"
            },
            "returnParameters": {
              "id": 2853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8257:0:3"
            },
            "scope": 3447,
            "src": "8152:158:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2885,
              "nodeType": "Block",
              "src": "8492:170:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2871,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2862,
                            "src": "8538:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2872,
                            "name": "maxLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2582,
                            "src": "8551:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8538:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2874,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2862,
                            "src": "8567:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2875,
                            "name": "maxReleaseLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2584,
                            "src": "8580:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8567:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8538:57:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f4d494e5f4c494d4954",
                        "id": 2878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8597:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        },
                        "value": "ERR_INVALID_MIN_LIMIT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        }
                      ],
                      "id": 2870,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8530:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8530:91:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2880,
                  "nodeType": "ExpressionStatement",
                  "src": "8530:91:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2881,
                      "name": "minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "8634:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2882,
                      "name": "_minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2862,
                      "src": "8645:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8634:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2884,
                  "nodeType": "ExpressionStatement",
                  "src": "8634:20:3"
                }
              ]
            },
            "documentation": {
              "id": 2860,
              "nodeType": "StructuredDocumentation",
              "src": "8318:84:3",
              "text": " @dev setter\n @param _minLimit    new minLimit"
            },
            "functionSelector": "6ec6d4a6",
            "id": 2886,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2865,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2864,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "8455:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8455:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2867,
                    "name": "_minLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2862,
                    "src": "8481:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2868,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2866,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "8465:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8465:26:3"
              }
            ],
            "name": "setMinLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "mutability": "mutable",
                  "name": "_minLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2886,
                  "src": "8429:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8429:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8428:19:3"
            },
            "returnParameters": {
              "id": 2869,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8492:0:3"
            },
            "scope": 3447,
            "src": "8408:254:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2901,
              "nodeType": "Block",
              "src": "8884:55:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2897,
                      "name": "limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2592,
                      "src": "8895:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2898,
                      "name": "_limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2889,
                      "src": "8914:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8895:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2900,
                  "nodeType": "ExpressionStatement",
                  "src": "8895:36:3"
                }
              ]
            },
            "documentation": {
              "id": 2887,
              "nodeType": "StructuredDocumentation",
              "src": "8670:100:3",
              "text": " @dev setter\n @param _limitIncPerBlock    new limitIncPerBlock"
            },
            "functionSelector": "a50c326c",
            "id": 2902,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2892,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2891,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "8839:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8839:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2894,
                    "name": "_limitIncPerBlock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2889,
                    "src": "8865:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2895,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2893,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "8849:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8849:34:3"
              }
            ],
            "name": "setLimitIncPerBlock",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2889,
                  "mutability": "mutable",
                  "name": "_limitIncPerBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2902,
                  "src": "8805:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8805:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8804:27:3"
            },
            "returnParameters": {
              "id": 2896,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8884:0:3"
            },
            "scope": 3447,
            "src": "8776:163:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2917,
              "nodeType": "Block",
              "src": "9169:59:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2913,
                      "name": "minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2598,
                      "src": "9180:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2914,
                      "name": "_minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2905,
                      "src": "9201:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "9180:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2916,
                  "nodeType": "ExpressionStatement",
                  "src": "9180:40:3"
                }
              ]
            },
            "documentation": {
              "id": 2903,
              "nodeType": "StructuredDocumentation",
              "src": "8947:104:3",
              "text": " @dev setter\n @param _minRequiredReports    new minRequiredReports"
            },
            "functionSelector": "7b15879c",
            "id": 2918,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2908,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2907,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "9122:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9122:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2910,
                    "name": "_minRequiredReports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2905,
                    "src": "9148:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  }
                ],
                "id": 2911,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2909,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "9132:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9132:36:3"
              }
            ],
            "name": "setMinRequiredReports",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2905,
                  "mutability": "mutable",
                  "name": "_minRequiredReports",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2918,
                  "src": "9088:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2904,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "9088:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9087:27:3"
            },
            "returnParameters": {
              "id": 2912,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9169:0:3"
            },
            "scope": 3447,
            "src": "9057:171:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2934,
              "nodeType": "Block",
              "src": "9531:49:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2928,
                        "name": "reporters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "9542:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2930,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2929,
                        "name": "_reporter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2921,
                        "src": "9552:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9542:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2931,
                      "name": "_active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2923,
                      "src": "9565:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9542:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2933,
                  "nodeType": "ExpressionStatement",
                  "src": "9542:30:3"
                }
              ]
            },
            "documentation": {
              "id": 2919,
              "nodeType": "StructuredDocumentation",
              "src": "9236:218:3",
              "text": " @dev allows the owner to set/remove reporters\n @param _reporter    reporter whos status is to be set\n @param _active      true if the reporter is approved, false otherwise"
            },
            "functionSelector": "e1bb5133",
            "id": 2935,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2926,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2925,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "9521:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9521:9:3"
              }
            ],
            "name": "setReporter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2921,
                  "mutability": "mutable",
                  "name": "_reporter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2935,
                  "src": "9481:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2920,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9481:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2923,
                  "mutability": "mutable",
                  "name": "_active",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2935,
                  "src": "9500:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2922,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9500:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9480:33:3"
            },
            "returnParameters": {
              "id": 2927,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9531:0:3"
            },
            "scope": 3447,
            "src": "9460:120:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2947,
              "nodeType": "Block",
              "src": "9800:46:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2943,
                      "name": "xTransfersEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2604,
                      "src": "9811:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2944,
                      "name": "_enable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2938,
                      "src": "9831:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9811:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2946,
                  "nodeType": "ExpressionStatement",
                  "src": "9811:27:3"
                }
              ]
            },
            "documentation": {
              "id": 2936,
              "nodeType": "StructuredDocumentation",
              "src": "9588:149:3",
              "text": " @dev allows the owner enable/disable the xTransfer method\n @param _enable     true to enable, false to disable"
            },
            "functionSelector": "a5c670ca",
            "id": 2948,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2941,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2940,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "9790:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9790:9:3"
              }
            ],
            "name": "enableXTransfers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2938,
                  "mutability": "mutable",
                  "name": "_enable",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2948,
                  "src": "9769:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2937,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9769:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9768:14:3"
            },
            "returnParameters": {
              "id": 2942,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9800:0:3"
            },
            "scope": 3447,
            "src": "9743:103:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2960,
              "nodeType": "Block",
              "src": "10073:45:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2956,
                      "name": "reportingEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2607,
                      "src": "10084:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2957,
                      "name": "_enable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2951,
                      "src": "10103:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10084:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2959,
                  "nodeType": "ExpressionStatement",
                  "src": "10084:26:3"
                }
              ]
            },
            "documentation": {
              "id": 2949,
              "nodeType": "StructuredDocumentation",
              "src": "9854:157:3",
              "text": " @dev allows the owner enable/disable the reportTransaction method\n @param _enable     true to enable, false to disable"
            },
            "functionSelector": "ed1d73a6",
            "id": 2961,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2954,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2953,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "10063:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10063:9:3"
              }
            ],
            "name": "enableReporting",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "mutability": "mutable",
                  "name": "_enable",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2961,
                  "src": "10042:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10042:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10041:14:3"
            },
            "returnParameters": {
              "id": 2955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10073:0:3"
            },
            "scope": 3447,
            "src": "10017:101:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2995,
              "nodeType": "Block",
              "src": "10463:239:3",
              "statements": [
                {
                  "assignments": [
                    2971
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2971,
                      "mutability": "mutable",
                      "name": "bancorXUpgrader",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2995,
                      "src": "10474:32:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                        "typeString": "contract IBancorXUpgrader"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2970,
                        "name": "IBancorXUpgrader",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3562,
                        "src": "10474:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                          "typeString": "contract IBancorXUpgrader"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2977,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2974,
                            "name": "BANCOR_X_UPGRADER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21557,
                            "src": "10536:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2973,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "10526:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 2975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10526:28:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2972,
                      "name": "IBancorXUpgrader",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3562,
                      "src": "10509:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IBancorXUpgrader_$3562_$",
                        "typeString": "type(contract IBancorXUpgrader)"
                      }
                    },
                    "id": 2976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10509:46:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                      "typeString": "contract IBancorXUpgrader"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10474:81:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2981,
                            "name": "bancorXUpgrader",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2971,
                            "src": "10594:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                              "typeString": "contract IBancorXUpgrader"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                              "typeString": "contract IBancorXUpgrader"
                            }
                          ],
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10586:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2979,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10586:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 2982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10586:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2978,
                      "name": "transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21787,
                      "src": "10568:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 2983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10568:43:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2984,
                  "nodeType": "ExpressionStatement",
                  "src": "10568:43:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2988,
                        "name": "version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2580,
                        "src": "10646:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2989,
                        "name": "_reporters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "10655:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2985,
                        "name": "bancorXUpgrader",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2971,
                        "src": "10622:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                          "typeString": "contract IBancorXUpgrader"
                        }
                      },
                      "id": 2987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "upgrade",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3561,
                      "src": "10622:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (uint16,address[] memory) external"
                      }
                    },
                    "id": 2990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10622:44:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2991,
                  "nodeType": "ExpressionStatement",
                  "src": "10622:44:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2992,
                      "name": "acceptOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21817,
                      "src": "10677:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10677:17:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2994,
                  "nodeType": "ExpressionStatement",
                  "src": "10677:17:3"
                }
              ]
            },
            "documentation": {
              "id": 2962,
              "nodeType": "StructuredDocumentation",
              "src": "10126:268:3",
              "text": " @dev upgrades the contract to the latest version\n can only be called by the owner\n note that the owner needs to call acceptOwnership on the new contract after the upgrade\n @param _reporters    new list of reporters"
            },
            "functionSelector": "0183592b",
            "id": 2996,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2968,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2967,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "10453:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10453:9:3"
              }
            ],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2965,
                  "mutability": "mutable",
                  "name": "_reporters",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2996,
                  "src": "10417:27:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2963,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "10417:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2964,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10417:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10416:29:3"
            },
            "returnParameters": {
              "id": 2969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10463:0:3"
            },
            "scope": 3447,
            "src": "10400:302:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3049,
              "nodeType": "Block",
              "src": "11130:540:3",
              "statements": [
                {
                  "assignments": [
                    3009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3009,
                      "mutability": "mutable",
                      "name": "currentLockLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3049,
                      "src": "11180:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3008,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11180:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3012,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3010,
                      "name": "getCurrentLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3343,
                      "src": "11207:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11207:21:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11180:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3020,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3014,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3003,
                            "src": "11279:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3015,
                            "name": "minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "11290:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11279:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3017,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3003,
                            "src": "11302:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3018,
                            "name": "currentLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3009,
                            "src": "11313:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11302:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "11279:50:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414d4f554e545f544f4f5f48494748",
                        "id": 3021,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11331:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        },
                        "value": "ERR_AMOUNT_TOO_HIGH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        }
                      ],
                      "id": 3013,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11271:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11271:82:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3023,
                  "nodeType": "ExpressionStatement",
                  "src": "11271:82:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3025,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3003,
                        "src": "11377:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3024,
                      "name": "lockTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3398,
                      "src": "11366:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11366:19:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3027,
                  "nodeType": "ExpressionStatement",
                  "src": "11366:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3028,
                      "name": "prevLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2588,
                      "src": "11455:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3031,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3003,
                          "src": "11492:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3029,
                          "name": "currentLockLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3009,
                          "src": "11471:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22293,
                        "src": "11471:20:3",
                        "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": 3032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11471:29:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11455:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3034,
                  "nodeType": "ExpressionStatement",
                  "src": "11455:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3035,
                      "name": "prevLockBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2594,
                      "src": "11511:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3036,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "11533:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 3037,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11533:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11511:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3039,
                  "nodeType": "ExpressionStatement",
                  "src": "11511:34:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3041,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "11619:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11619:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3043,
                        "name": "_toBlockchain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2999,
                        "src": "11631:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3044,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3001,
                        "src": "11646:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3045,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3003,
                        "src": "11651:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11660:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 3040,
                      "name": "XTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "11609:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 3047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11609:53:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3048,
                  "nodeType": "EmitStatement",
                  "src": "11604:58:3"
                }
              ]
            },
            "documentation": {
              "id": 2997,
              "nodeType": "StructuredDocumentation",
              "src": "10710:317:3",
              "text": " @dev claims tokens from msg.sender to be converted to tokens on another blockchain\n @param _toBlockchain    blockchain on which tokens will be issued\n @param _to              address to send the tokens to\n @param _amount          the amount of tokens to transfer"
            },
            "functionSelector": "49282538",
            "id": 3050,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3006,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3005,
                  "name": "xTransfersAllowed",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2802,
                  "src": "11112:17:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11112:17:3"
              }
            ],
            "name": "xTransfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "mutability": "mutable",
                  "name": "_toBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3050,
                  "src": "11052:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11052:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3001,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3050,
                  "src": "11075:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3000,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11075:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3003,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3050,
                  "src": "11088:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3002,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11088:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11051:53:3"
            },
            "returnParameters": {
              "id": 3007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11130:0:3"
            },
            "scope": 3447,
            "src": "11033:637:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3541
            ],
            "body": {
              "id": 3106,
              "nodeType": "Block",
              "src": "12225:565:3",
              "statements": [
                {
                  "assignments": [
                    3066
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3066,
                      "mutability": "mutable",
                      "name": "currentLockLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3106,
                      "src": "12275:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12275:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3069,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3067,
                      "name": "getCurrentLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3343,
                      "src": "12302:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12302:21:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12275:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3071,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3057,
                            "src": "12410:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3072,
                            "name": "minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "12421:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12410:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3074,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3057,
                            "src": "12433:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3075,
                            "name": "currentLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3066,
                            "src": "12444:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12433:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12410:50:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414d4f554e545f544f4f5f48494748",
                        "id": 3078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12462:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        },
                        "value": "ERR_AMOUNT_TOO_HIGH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        }
                      ],
                      "id": 3070,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12402:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12402:82:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3080,
                  "nodeType": "ExpressionStatement",
                  "src": "12402:82:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3082,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3057,
                        "src": "12508:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3081,
                      "name": "lockTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3398,
                      "src": "12497:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12497:19:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3084,
                  "nodeType": "ExpressionStatement",
                  "src": "12497:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3085,
                      "name": "prevLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2588,
                      "src": "12586:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3088,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3057,
                          "src": "12623:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3086,
                          "name": "currentLockLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3066,
                          "src": "12602:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3087,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22293,
                        "src": "12602:20:3",
                        "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": 3089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12602:29:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12586:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3091,
                  "nodeType": "ExpressionStatement",
                  "src": "12586:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3092,
                      "name": "prevLockBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2594,
                      "src": "12642:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3093,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "12664:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 3094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12664:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12642:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3096,
                  "nodeType": "ExpressionStatement",
                  "src": "12642:34:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3098,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "12737:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12737:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3100,
                        "name": "_toBlockchain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3053,
                        "src": "12749:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3101,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3055,
                        "src": "12764:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3102,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3057,
                        "src": "12769:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3103,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "12778:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3097,
                      "name": "XTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "12727:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 3104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12727:55:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3105,
                  "nodeType": "EmitStatement",
                  "src": "12722:60:3"
                }
              ]
            },
            "documentation": {
              "id": 3051,
              "nodeType": "StructuredDocumentation",
              "src": "11678:422:3",
              "text": " @dev claims tokens from msg.sender to be converted to tokens on another blockchain\n @param _toBlockchain    blockchain on which tokens will be issued\n @param _to              address to send the tokens to\n @param _amount          the amount of tokens to transfer\n @param _id              pre-determined unique (if non zero) id which refers to this transaction"
            },
            "functionSelector": "427c0374",
            "id": 3107,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3063,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3062,
                  "name": "xTransfersAllowed",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2802,
                  "src": "12207:17:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12207:17:3"
              }
            ],
            "name": "xTransfer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3061,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12198:8:3"
            },
            "parameters": {
              "id": 3060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3053,
                  "mutability": "mutable",
                  "name": "_toBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12125:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3052,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12125:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3055,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12148:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3054,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12148:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3057,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12161:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3056,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12161:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3059,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12178:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3058,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12178:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12124:66:3"
            },
            "returnParameters": {
              "id": 3064,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12225:0:3"
            },
            "scope": 3447,
            "src": "12106:684:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3280,
              "nodeType": "Block",
              "src": "13645:1731:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "13747:31:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3132,
                              "name": "reportedTxs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2621,
                              "src": "13748:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(uint256 => mapping(address => bool))"
                              }
                            },
                            "id": 3134,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3133,
                              "name": "_txId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "13760:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13748:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3137,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3135,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "13767:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13767:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13748:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414c52454144595f5245504f52544544",
                        "id": 3139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13780:22:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eacdf1b09650a9214fcd03c8cca153c1ef5430f33502fe3fc1e6f73a52233e56",
                          "typeString": "literal_string \"ERR_ALREADY_REPORTED\""
                        },
                        "value": "ERR_ALREADY_REPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eacdf1b09650a9214fcd03c8cca153c1ef5430f33502fe3fc1e6f73a52233e56",
                          "typeString": "literal_string \"ERR_ALREADY_REPORTED\""
                        }
                      ],
                      "id": 3131,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "13739:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13739:64:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3141,
                  "nodeType": "ExpressionStatement",
                  "src": "13739:64:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3142,
                          "name": "reportedTxs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2621,
                          "src": "13849:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
                            "typeString": "mapping(uint256 => mapping(address => bool))"
                          }
                        },
                        "id": 3146,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3143,
                          "name": "_txId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3112,
                          "src": "13861:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13849:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3147,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3144,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "13868:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3145,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13868:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13849:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13882:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "13849:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3150,
                  "nodeType": "ExpressionStatement",
                  "src": "13849:37:3"
                },
                {
                  "assignments": [
                    3152
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3152,
                      "mutability": "mutable",
                      "name": "txn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3280,
                      "src": "13899:23:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                        "typeString": "struct BancorX.Transaction"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3151,
                        "name": "Transaction",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2577,
                        "src": "13899:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3156,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3153,
                      "name": "transactions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2611,
                      "src": "13925:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                        "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                      }
                    },
                    "id": 3155,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3154,
                      "name": "_txId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3112,
                      "src": "13938:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13925:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                      "typeString": "struct BancorX.Transaction storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13899:45:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3157,
                        "name": "txn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3152,
                        "src": "14038:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction storage pointer"
                        }
                      },
                      "id": 3158,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfReports",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2574,
                      "src": "14038:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14058:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "14038:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3231,
                    "nodeType": "Block",
                    "src": "14474:316:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 3204,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3201,
                                      "name": "txn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3152,
                                      "src": "14551:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                        "typeString": "struct BancorX.Transaction storage pointer"
                                      }
                                    },
                                    "id": 3202,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2572,
                                    "src": "14551:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3203,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3114,
                                    "src": "14561:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "14551:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3205,
                                      "name": "txn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3152,
                                      "src": "14568:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                        "typeString": "struct BancorX.Transaction storage pointer"
                                      }
                                    },
                                    "id": 3206,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2568,
                                    "src": "14568:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3207,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3116,
                                    "src": "14582:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14568:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "14551:38:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 3213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3210,
                                    "name": "txn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3152,
                                    "src": "14593:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                      "typeString": "struct BancorX.Transaction storage pointer"
                                    }
                                  },
                                  "id": 3211,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "fromBlockchain",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2570,
                                  "src": "14593:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3212,
                                  "name": "_fromBlockchain",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3110,
                                  "src": "14615:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "14593:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "14551:79:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4552525f54585f4d49534d41544348",
                              "id": 3215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14632:17:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                                "typeString": "literal_string \"ERR_TX_MISMATCH\""
                              },
                              "value": "ERR_TX_MISMATCH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                                "typeString": "literal_string \"ERR_TX_MISMATCH\""
                              }
                            ],
                            "id": 3200,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14543:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14543:107:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3217,
                        "nodeType": "ExpressionStatement",
                        "src": "14543:107:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3218,
                            "name": "_xTransferId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3118,
                            "src": "14671:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14687:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14671:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3230,
                        "nodeType": "IfStatement",
                        "src": "14667:111:3",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3222,
                                    "name": "transactionIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "14715:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3224,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3223,
                                    "name": "_xTransferId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3118,
                                    "src": "14730:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14715:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3225,
                                  "name": "_txId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3112,
                                  "src": "14747:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14715:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "4552525f54585f414c52454144595f455849535453",
                                "id": 3227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14754:23:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                  "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                },
                                "value": "ERR_TX_ALREADY_EXISTS"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                  "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                }
                              ],
                              "id": 3221,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "src": "14707:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (bool,string memory) pure"
                              }
                            },
                            "id": 3228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14707:71:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 3229,
                          "nodeType": "ExpressionStatement",
                          "src": "14707:71:3"
                        }
                      }
                    ]
                  },
                  "id": 3232,
                  "nodeType": "IfStatement",
                  "src": "14034:756:3",
                  "trueBody": {
                    "id": 3199,
                    "nodeType": "Block",
                    "src": "14061:398:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3161,
                              "name": "txn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "14076:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                "typeString": "struct BancorX.Transaction storage pointer"
                              }
                            },
                            "id": 3163,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "to",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2572,
                            "src": "14076:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3164,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3114,
                            "src": "14085:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14076:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3166,
                        "nodeType": "ExpressionStatement",
                        "src": "14076:12:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3167,
                              "name": "txn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "14103:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                "typeString": "struct BancorX.Transaction storage pointer"
                              }
                            },
                            "id": 3169,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2568,
                            "src": "14103:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3170,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3116,
                            "src": "14116:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14103:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3172,
                        "nodeType": "ExpressionStatement",
                        "src": "14103:20:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3173,
                              "name": "txn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "14138:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                "typeString": "struct BancorX.Transaction storage pointer"
                              }
                            },
                            "id": 3175,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "fromBlockchain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2570,
                            "src": "14138:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3176,
                            "name": "_fromBlockchain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3110,
                            "src": "14159:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "14138:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3178,
                        "nodeType": "ExpressionStatement",
                        "src": "14138:36:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3179,
                            "name": "_xTransferId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3118,
                            "src": "14195:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14211:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14195:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3198,
                        "nodeType": "IfStatement",
                        "src": "14191:257:3",
                        "trueBody": {
                          "id": 3197,
                          "nodeType": "Block",
                          "src": "14214:234:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3183,
                                        "name": "transactionIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2615,
                                        "src": "14318:14:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 3185,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3184,
                                        "name": "_xTransferId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3118,
                                        "src": "14333:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "14318:28:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14350:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "14318:33:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "4552525f54585f414c52454144595f455849535453",
                                    "id": 3188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14353:23:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                      "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                    },
                                    "value": "ERR_TX_ALREADY_EXISTS"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                      "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                    }
                                  ],
                                  "id": 3182,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "14310:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14310:67:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3190,
                              "nodeType": "ExpressionStatement",
                              "src": "14310:67:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3191,
                                    "name": "transactionIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "14396:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3193,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3192,
                                    "name": "_xTransferId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3118,
                                    "src": "14411:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "14396:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3194,
                                  "name": "_txId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3112,
                                  "src": "14427:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14396:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3196,
                              "nodeType": "ExpressionStatement",
                              "src": "14396:36:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "14846:18:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3233,
                        "name": "txn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3152,
                        "src": "14846:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction storage pointer"
                        }
                      },
                      "id": 3235,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfReports",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2574,
                      "src": "14846:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3237,
                  "nodeType": "ExpressionStatement",
                  "src": "14846:18:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3239,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "14891:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14891:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3241,
                        "name": "_fromBlockchain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3110,
                        "src": "14903:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3242,
                        "name": "_txId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3112,
                        "src": "14920:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3243,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3114,
                        "src": "14927:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3244,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3116,
                        "src": "14932:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3245,
                        "name": "_xTransferId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3118,
                        "src": "14941:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3238,
                      "name": "TxReport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2667,
                      "src": "14882:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256,address,uint256,uint256)"
                      }
                    },
                    "id": 3246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14882:72:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3247,
                  "nodeType": "EmitStatement",
                  "src": "14877:77:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3248,
                        "name": "txn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3152,
                        "src": "15031:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction storage pointer"
                        }
                      },
                      "id": 3249,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfReports",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2574,
                      "src": "15031:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3250,
                      "name": "minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2598,
                      "src": "15051:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "15031:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3279,
                  "nodeType": "IfStatement",
                  "src": "15027:342:3",
                  "trueBody": {
                    "id": 3278,
                    "nodeType": "Block",
                    "src": "15071:298:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "15094:30:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3253,
                                    "name": "transactions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2611,
                                    "src": "15095:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                                      "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                                    }
                                  },
                                  "id": 3255,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3254,
                                    "name": "_txId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3112,
                                    "src": "15108:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15095:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                                    "typeString": "struct BancorX.Transaction storage ref"
                                  }
                                },
                                "id": 3256,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "completed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2576,
                                "src": "15095:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4552525f54585f414c52454144595f434f4d504c45544544",
                              "id": 3258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15126:26:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8458c6336176452534d737fe1d081580bd6710b63bb64c5c00fe229feb3ce8c8",
                                "typeString": "literal_string \"ERR_TX_ALREADY_COMPLETED\""
                              },
                              "value": "ERR_TX_ALREADY_COMPLETED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8458c6336176452534d737fe1d081580bd6710b63bb64c5c00fe229feb3ce8c8",
                                "typeString": "literal_string \"ERR_TX_ALREADY_COMPLETED\""
                              }
                            ],
                            "id": 3252,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15086:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15086:67:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3260,
                        "nodeType": "ExpressionStatement",
                        "src": "15086:67:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3261,
                                "name": "transactions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2611,
                                "src": "15219:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                                  "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                                }
                              },
                              "id": 3263,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3262,
                                "name": "_txId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3112,
                                "src": "15232:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15219:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                                "typeString": "struct BancorX.Transaction storage ref"
                              }
                            },
                            "id": 3264,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "completed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2576,
                            "src": "15219:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 3265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15251:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15219:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3267,
                        "nodeType": "ExpressionStatement",
                        "src": "15219:36:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3269,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3114,
                              "src": "15295:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3270,
                              "name": "_xTransferId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3118,
                              "src": "15300:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3268,
                            "name": "XTransferComplete",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2674,
                            "src": "15277:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15277:36:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3272,
                        "nodeType": "EmitStatement",
                        "src": "15272:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3274,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3114,
                              "src": "15344:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3275,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3116,
                              "src": "15349:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3273,
                            "name": "releaseTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3446,
                            "src": "15330:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15330:27:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3277,
                        "nodeType": "ExpressionStatement",
                        "src": "15330:27:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3108,
              "nodeType": "StructuredDocumentation",
              "src": "12798:549:3",
              "text": " @dev allows reporter to report transaction which occured on another blockchain\n @param _fromBlockchain  blockchain in which tokens were destroyed\n @param _txId            transactionId of transaction thats being reported\n @param _to              address to receive tokens\n @param _amount          amount of tokens destroyed on another blockchain\n @param _xTransferId     unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been mined)"
            },
            "functionSelector": "6dc6a01b",
            "id": 3281,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3121,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3120,
                  "name": "reporterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2783,
                  "src": "13540:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13540:12:3"
              },
              {
                "arguments": null,
                "id": 3123,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3122,
                  "name": "reportingAllowed",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2818,
                  "src": "13562:16:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13562:16:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3125,
                    "name": "_to",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3114,
                    "src": "13601:3:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3126,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3124,
                  "name": "validAddress",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22618,
                  "src": "13588:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13588:17:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3128,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3116,
                    "src": "13631:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3129,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3127,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "13615:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13615:24:3"
              }
            ],
            "name": "reportTx",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3110,
                  "mutability": "mutable",
                  "name": "_fromBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13381:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3109,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13381:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3112,
                  "mutability": "mutable",
                  "name": "_txId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13415:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13415:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3114,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13439:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3113,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13439:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3116,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13461:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13461:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3118,
                  "mutability": "mutable",
                  "name": "_xTransferId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13487:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3117,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13487:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13370:144:3"
            },
            "returnParameters": {
              "id": 3130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13645:0:3"
            },
            "scope": 3447,
            "src": "13353:2023:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3550
            ],
            "body": {
              "id": 3311,
              "nodeType": "Block",
              "src": "15881:294:3",
              "statements": [
                {
                  "assignments": [
                    3293
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3293,
                      "mutability": "mutable",
                      "name": "transaction",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3311,
                      "src": "15939:30:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$2577_memory_ptr",
                        "typeString": "struct BancorX.Transaction"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3292,
                        "name": "Transaction",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2577,
                        "src": "15939:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3299,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3294,
                      "name": "transactions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2611,
                      "src": "15972:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                        "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                      }
                    },
                    "id": 3298,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3295,
                        "name": "transactionIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2615,
                        "src": "15985:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3297,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3296,
                        "name": "_xTransferId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3284,
                        "src": "16000:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "15985:28:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15972:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                      "typeString": "struct BancorX.Transaction storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15939:75:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3301,
                            "name": "transaction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3293,
                            "src": "16087:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Transaction_$2577_memory_ptr",
                              "typeString": "struct BancorX.Transaction memory"
                            }
                          },
                          "id": 3302,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "to",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2572,
                          "src": "16087:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3303,
                          "name": "_for",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3286,
                          "src": "16105:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "16087:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f54585f4d49534d41544348",
                        "id": 3305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16111:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                          "typeString": "literal_string \"ERR_TX_MISMATCH\""
                        },
                        "value": "ERR_TX_MISMATCH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                          "typeString": "literal_string \"ERR_TX_MISMATCH\""
                        }
                      ],
                      "id": 3300,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "16079:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16079:50:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3307,
                  "nodeType": "ExpressionStatement",
                  "src": "16079:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3308,
                      "name": "transaction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3293,
                      "src": "16149:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$2577_memory_ptr",
                        "typeString": "struct BancorX.Transaction memory"
                      }
                    },
                    "id": 3309,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "amount",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2568,
                    "src": "16149:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3291,
                  "id": 3310,
                  "nodeType": "Return",
                  "src": "16142:25:3"
                }
              ]
            },
            "documentation": {
              "id": 3282,
              "nodeType": "StructuredDocumentation",
              "src": "15384:388:3",
              "text": " @dev gets x transfer amount by xTransferId (not txId)\n @param _xTransferId    unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been broadcasted)\n @param _for            address corresponding to xTransferId\n @return amount that was sent in xTransfer corresponding to _xTransferId"
            },
            "functionSelector": "aafd6b76",
            "id": 3312,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getXTransferAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3288,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15854:8:3"
            },
            "parameters": {
              "id": 3287,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3284,
                  "mutability": "mutable",
                  "name": "_xTransferId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3312,
                  "src": "15806:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15806:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3286,
                  "mutability": "mutable",
                  "name": "_for",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3312,
                  "src": "15828:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3285,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15828:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15805:36:3"
            },
            "returnParameters": {
              "id": 3291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3290,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3312,
                  "src": "15872:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3289,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15872:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15871:9:3"
            },
            "scope": 3447,
            "src": "15778:397:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3342,
              "nodeType": "Block",
              "src": "16399:331:3",
              "statements": [
                {
                  "assignments": [
                    3319
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3319,
                      "mutability": "mutable",
                      "name": "currentLockLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3342,
                      "src": "16499:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3318,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16499:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3333,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3330,
                            "name": "limitIncPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2592,
                            "src": "16590:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3326,
                                    "name": "prevLockBlockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2594,
                                    "src": "16564:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3322,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "16546:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 3323,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "16546:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3324,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16545:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3325,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22293,
                                  "src": "16545:18:3",
                                  "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": 3327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16545:39:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3328,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16544:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22327,
                          "src": "16544:45:3",
                          "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": 3331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16544:63:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3320,
                        "name": "prevLockLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2588,
                        "src": "16526:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22271,
                      "src": "16526:17:3",
                      "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": 3332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16526:82:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16499:109:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3334,
                      "name": "currentLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3319,
                      "src": "16623:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3335,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "16642:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16623:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3339,
                  "nodeType": "IfStatement",
                  "src": "16619:69:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3337,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "16676:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 3317,
                    "id": 3338,
                    "nodeType": "Return",
                    "src": "16669:19:3"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3340,
                    "name": "currentLockLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3319,
                    "src": "16706:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3317,
                  "id": 3341,
                  "nodeType": "Return",
                  "src": "16699:23:3"
                }
              ]
            },
            "documentation": {
              "id": 3313,
              "nodeType": "StructuredDocumentation",
              "src": "16183:149:3",
              "text": " @dev method for calculating current lock limit\n @return the current maximum limit of tokens that can be locked"
            },
            "functionSelector": "19967439",
            "id": 3343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentLockLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3314,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16366:2:3"
            },
            "returnParameters": {
              "id": 3317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3316,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3343,
                  "src": "16390:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3315,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16390:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16389:9:3"
            },
            "scope": 3447,
            "src": "16338:392:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3373,
              "nodeType": "Block",
              "src": "16962:358:3",
              "statements": [
                {
                  "assignments": [
                    3350
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3350,
                      "mutability": "mutable",
                      "name": "currentReleaseLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3373,
                      "src": "17068:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3349,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17068:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3364,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3361,
                            "name": "limitIncPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2592,
                            "src": "17168:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3357,
                                    "name": "prevReleaseBlockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2596,
                                    "src": "17139:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3353,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "17121:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 3354,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "17121:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3355,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17120:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22293,
                                  "src": "17120:18:3",
                                  "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": 3358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17120:42:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3359,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17119:44:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22327,
                          "src": "17119:48:3",
                          "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": 3362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17119:66:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3351,
                        "name": "prevReleaseLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2590,
                        "src": "17098:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3352,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22271,
                      "src": "17098:20:3",
                      "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": 3363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17098:88:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17068:118:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3365,
                      "name": "currentReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3350,
                      "src": "17201:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3366,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "17223:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17201:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3370,
                  "nodeType": "IfStatement",
                  "src": "17197:78:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3368,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "17260:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 3348,
                    "id": 3369,
                    "nodeType": "Return",
                    "src": "17253:22:3"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3371,
                    "name": "currentReleaseLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3350,
                    "src": "17293:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3348,
                  "id": 3372,
                  "nodeType": "Return",
                  "src": "17286:26:3"
                }
              ]
            },
            "documentation": {
              "id": 3344,
              "nodeType": "StructuredDocumentation",
              "src": "16738:154:3",
              "text": " @dev method for calculating current release limit\n @return the current maximum limit of tokens that can be released"
            },
            "functionSelector": "1e04a593",
            "id": 3374,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentReleaseLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3345,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16929:2:3"
            },
            "returnParameters": {
              "id": 3348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3347,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3374,
                  "src": "16953:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16953:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16952:9:3"
            },
            "scope": 3447,
            "src": "16898:422:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3397,
              "nodeType": "Block",
              "src": "17556:125:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3381,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "17584:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3382,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "17591:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "17591:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3386,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "17611:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BancorX_$3447",
                              "typeString": "contract BancorX"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BancorX_$3447",
                              "typeString": "contract BancorX"
                            }
                          ],
                          "id": 3385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "17603:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3384,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17603:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 3387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17603:13:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3388,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3377,
                        "src": "17618:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3380,
                      "name": "safeTransferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22525,
                      "src": "17567:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (contract IERC20Token,address,address,uint256)"
                      }
                    },
                    "id": 3389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17567:59:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3390,
                  "nodeType": "ExpressionStatement",
                  "src": "17567:59:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3392,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "17653:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "17653:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3394,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3377,
                        "src": "17665:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3391,
                      "name": "TokensLock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2632,
                      "src": "17642:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 3395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17642:31:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3396,
                  "nodeType": "EmitStatement",
                  "src": "17637:36:3"
                }
              ]
            },
            "documentation": {
              "id": 3375,
              "nodeType": "StructuredDocumentation",
              "src": "17328:177:3",
              "text": " @dev claims and locks tokens from msg.sender to be converted to tokens on another blockchain\n @param _amount  the amount of tokens to lock"
            },
            "id": 3398,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "lockTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3377,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3398,
                  "src": "17531:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3376,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17531:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17530:17:3"
            },
            "returnParameters": {
              "id": 3379,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17556:0:3"
            },
            "scope": 3447,
            "src": "17511:170:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3445,
              "nodeType": "Block",
              "src": "17960:530:3",
              "statements": [
                {
                  "assignments": [
                    3407
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3407,
                      "mutability": "mutable",
                      "name": "currentReleaseLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "18013:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3406,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18013:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3410,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3408,
                      "name": "getCurrentReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3374,
                      "src": "18043:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18043:24:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18013:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3412,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3403,
                            "src": "18088:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3413,
                            "name": "minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "18099:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18088:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3415,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3403,
                            "src": "18111:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3416,
                            "name": "currentReleaseLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3407,
                            "src": "18122:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18111:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "18088:53:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414d4f554e545f544f4f5f48494748",
                        "id": 3419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18143:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        },
                        "value": "ERR_AMOUNT_TOO_HIGH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        }
                      ],
                      "id": 3411,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18080:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18080:85:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3421,
                  "nodeType": "ExpressionStatement",
                  "src": "18080:85:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3422,
                      "name": "prevReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "18241:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3425,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3403,
                          "src": "18284:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3423,
                          "name": "currentReleaseLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3407,
                          "src": "18260:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22293,
                        "src": "18260:23:3",
                        "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": 3426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18260:32:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18241:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3428,
                  "nodeType": "ExpressionStatement",
                  "src": "18241:51:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3429,
                      "name": "prevReleaseBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2596,
                      "src": "18303:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3430,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "18328:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 3431,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18328:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18303:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3433,
                  "nodeType": "ExpressionStatement",
                  "src": "18303:37:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3435,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "18417:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3436,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3401,
                        "src": "18424:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3437,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3403,
                        "src": "18429:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3434,
                      "name": "safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22475,
                      "src": "18404:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (contract IERC20Token,address,uint256)"
                      }
                    },
                    "id": 3438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18404:33:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3439,
                  "nodeType": "ExpressionStatement",
                  "src": "18404:33:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3441,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3401,
                        "src": "18469:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3442,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3403,
                        "src": "18474:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3440,
                      "name": "TokensRelease",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2639,
                      "src": "18455:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 3443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18455:27:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3444,
                  "nodeType": "EmitStatement",
                  "src": "18450:32:3"
                }
              ]
            },
            "documentation": {
              "id": 3399,
              "nodeType": "StructuredDocumentation",
              "src": "17689:204:3",
              "text": " @dev private method to release tokens held by the contract\n @param _to      the address to release tokens to\n @param _amount  the amount of tokens to release"
            },
            "id": 3446,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "releaseTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3401,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3446,
                  "src": "17922:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3400,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17922:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3403,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3446,
                  "src": "17935:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3402,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17935:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17921:30:3"
            },
            "returnParameters": {
              "id": 3405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17960:0:3"
            },
            "scope": 3447,
            "src": "17899:591:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 3448,
        "src": "900:17593:3"
      }
    ],
    "src": "52:18443:3"
  },
  "legacyAST": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/BancorX.sol",
    "exportedSymbols": {
      "BancorX": [
        3447
      ]
    },
    "id": 3448,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2548,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:3"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/interfaces/IBancorXUpgrader.sol",
        "file": "./interfaces/IBancorXUpgrader.sol",
        "id": 2549,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 3563,
        "src": "77:43:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/interfaces/IBancorX.sol",
        "file": "./interfaces/IBancorX.sol",
        "id": 2550,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 3552,
        "src": "122:35:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "../utility/ContractRegistryClient.sol",
        "id": 2551,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 21720,
        "src": "159:47:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/SafeMath.sol",
        "file": "../utility/SafeMath.sol",
        "id": 2552,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 22355,
        "src": "208:33:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol",
        "file": "../utility/TokenHandler.sol",
        "id": 2553,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 22527,
        "src": "243:37:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol",
        "file": "../utility/TokenHolder.sol",
        "id": 2554,
        "nodeType": "ImportDirective",
        "scope": 3448,
        "sourceUnit": 22576,
        "src": "282:36:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2556,
              "name": "IBancorX",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3551,
              "src": "920:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IBancorX_$3551",
                "typeString": "contract IBancorX"
              }
            },
            "id": 2557,
            "nodeType": "InheritanceSpecifier",
            "src": "920:8:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2558,
              "name": "TokenHandler",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22526,
              "src": "930:12:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TokenHandler_$22526",
                "typeString": "contract TokenHandler"
              }
            },
            "id": 2559,
            "nodeType": "InheritanceSpecifier",
            "src": "930:12:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2560,
              "name": "TokenHolder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22575,
              "src": "944:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TokenHolder_$22575",
                "typeString": "contract TokenHolder"
              }
            },
            "id": 2561,
            "nodeType": "InheritanceSpecifier",
            "src": "944:11:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2562,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "957:22:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 2563,
            "nodeType": "InheritanceSpecifier",
            "src": "957:22:3"
          }
        ],
        "contractDependencies": [
          3551,
          21719,
          21818,
          22526,
          22575,
          22661,
          22847,
          22907
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 2555,
          "nodeType": "StructuredDocumentation",
          "src": "322:576:3",
          "text": " @dev The BancorX contract allows cross chain token transfers.\n There are two processes that take place in the contract -\n - Initiate a cross chain transfer to a target blockchain (locks tokens from the caller account on Ethereum)\n - Report a cross chain transfer initiated on a source blockchain (releases tokens to an account on Ethereum)\n Reporting cross chain transfers works similar to standard multisig contracts, meaning that multiple\n callers are required to report a transfer before tokens are released to the target account."
        },
        "fullyImplemented": true,
        "id": 3447,
        "linearizedBaseContracts": [
          3447,
          21719,
          22575,
          22661,
          21818,
          22526,
          22907,
          22847,
          3551
        ],
        "name": "BancorX",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2566,
            "libraryName": {
              "contractScope": null,
              "id": 2564,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22354,
              "src": "993:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22354",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "987:27:3",
            "typeName": {
              "id": 2565,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1006:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "BancorX.Transaction",
            "id": 2577,
            "members": [
              {
                "constant": false,
                "id": 2568,
                "mutability": "mutable",
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1142:14:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2567,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1142:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2570,
                "mutability": "mutable",
                "name": "fromBlockchain",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1167:22:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2569,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1167:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2572,
                "mutability": "mutable",
                "name": "to",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1200:10:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2571,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1200:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2574,
                "mutability": "mutable",
                "name": "numOfReports",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1221:18:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2573,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1221:5:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2576,
                "mutability": "mutable",
                "name": "completed",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2577,
                "src": "1250:14:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2575,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1250:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Transaction",
            "nodeType": "StructDefinition",
            "scope": 3447,
            "src": "1112:160:3",
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "54fd4d50",
            "id": 2580,
            "mutability": "constant",
            "name": "version",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1280:34:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 2578,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "1280:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 2579,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1313:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a8c36a90",
            "id": 2582,
            "mutability": "mutable",
            "name": "maxLockLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1323:27:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2581,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1323:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "52e94ce3",
            "id": 2584,
            "mutability": "mutable",
            "name": "maxReleaseLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1438:30:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2583,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1438:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "1fd8088d",
            "id": 2586,
            "mutability": "mutable",
            "name": "minLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1555:23:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2585,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1555:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "16c76c27",
            "id": 2588,
            "mutability": "mutable",
            "name": "prevLockLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1675:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2587,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1675:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "f7385f76",
            "id": 2590,
            "mutability": "mutable",
            "name": "prevReleaseLimit",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1767:31:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2589,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1767:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "72f43d19",
            "id": 2592,
            "mutability": "mutable",
            "name": "limitIncPerBlock",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1862:31:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2591,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1862:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "1aff29eb",
            "id": 2594,
            "mutability": "mutable",
            "name": "prevLockBlockNumber",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "1949:34:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2593,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1949:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "4b3e475c",
            "id": 2596,
            "mutability": "mutable",
            "name": "prevReleaseBlockNumber",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2043:37:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2595,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2043:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "ca27e011",
            "id": 2598,
            "mutability": "mutable",
            "name": "minRequiredReports",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2140:31:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2597,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "2140:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3530
            ],
            "constant": false,
            "functionSelector": "fc0c546a",
            "id": 2601,
            "mutability": "mutable",
            "name": "token",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 2600,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2262:8:3"
            },
            "scope": 3447,
            "src": "2243:33:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Token_$21127",
              "typeString": "contract IERC20Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 2599,
              "name": "IERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21127,
              "src": "2243:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "fbb24692",
            "id": 2604,
            "mutability": "mutable",
            "name": "xTransfersEnabled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2305:36:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2602,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2305:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74727565",
              "id": 2603,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2337:4:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "true"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "9390701c",
            "id": 2607,
            "mutability": "mutable",
            "name": "reportingEnabled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2399:35:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2605,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2399:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74727565",
              "id": 2606,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2430:4:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "true"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "9ace38c2",
            "id": 2611,
            "mutability": "mutable",
            "name": "transactions",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2520:52:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
              "typeString": "mapping(uint256 => struct BancorX.Transaction)"
            },
            "typeName": {
              "id": 2610,
              "keyType": {
                "id": 2608,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2529:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2520:32:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                "typeString": "mapping(uint256 => struct BancorX.Transaction)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2609,
                "name": "Transaction",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2577,
                "src": "2540:11:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                  "typeString": "struct BancorX.Transaction"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "e36f8dc5",
            "id": 2615,
            "mutability": "mutable",
            "name": "transactionIds",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2609:50:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2614,
              "keyType": {
                "id": 2612,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2618:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2609:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2613,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2629:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "8544c52d",
            "id": 2621,
            "mutability": "mutable",
            "name": "reportedTxs",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2735:65:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(uint256 => mapping(address => bool))"
            },
            "typeName": {
              "id": 2620,
              "keyType": {
                "id": 2616,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2744:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2735:46:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(uint256 => mapping(address => bool))"
              },
              "valueType": {
                "id": 2619,
                "keyType": {
                  "id": 2617,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2764:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "2755:25:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 2618,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2775:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "2cc1cd9e",
            "id": 2625,
            "mutability": "mutable",
            "name": "reporters",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3447,
            "src": "2856:42:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2624,
              "keyType": {
                "id": 2622,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2865:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2856:25:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2623,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2876:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2626,
              "nodeType": "StructuredDocumentation",
              "src": "2907:196:3",
              "text": " @dev triggered when tokens are locked in smart contract\n @param _from    wallet address that the tokens are locked from\n @param _amount  amount locked"
            },
            "id": 2632,
            "name": "TokensLock",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2628,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2632,
                  "src": "3136:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2627,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3136:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2630,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2632,
                  "src": "3168:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2629,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3125:65:3"
            },
            "src": "3109:82:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2633,
              "nodeType": "StructuredDocumentation",
              "src": "3199:204:3",
              "text": " @dev triggered when tokens are released by the smart contract\n @param _to      wallet address that the tokens are released to\n @param _amount  amount released"
            },
            "id": 2639,
            "name": "TokensRelease",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2638,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2635,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2639,
                  "src": "3439:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2634,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3439:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2637,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2639,
                  "src": "3469:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2636,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3469:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3428:63:3"
            },
            "src": "3409:83:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2640,
              "nodeType": "StructuredDocumentation",
              "src": "3500:352:3",
              "text": " @dev triggered when xTransfer is successfully called\n @param _from            wallet address that initiated the xtransfer\n @param _toBlockchain    target blockchain\n @param _to              target wallet\n @param _amount          transfer amount\n @param _id              xtransfer id"
            },
            "id": 2652,
            "name": "XTransfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2642,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3884:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3884:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2644,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_toBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3916:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2643,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3916:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2646,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3948:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2645,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3948:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2648,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "3978:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2647,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3978:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2650,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2652,
                  "src": "4004:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4004:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3873:149:3"
            },
            "src": "3858:165:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2653,
              "nodeType": "StructuredDocumentation",
              "src": "4031:388:3",
              "text": " @dev triggered when report is successfully submitted\n @param _reporter        reporter wallet\n @param _fromBlockchain  source blockchain\n @param _txId            tx id on the source blockchain\n @param _to              target wallet\n @param _amount          transfer amount\n @param _xTransferId     xtransfer id"
            },
            "id": 2667,
            "name": "TxReport",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2655,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_reporter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4450:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2654,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4450:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2657,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_fromBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4486:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2656,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4486:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2659,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_txId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4520:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4520:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2661,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4544:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2660,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4544:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2663,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4566:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2662,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4566:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2665,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_xTransferId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2667,
                  "src": "4592:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4592:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4439:180:3"
            },
            "src": "4425:195:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2668,
              "nodeType": "StructuredDocumentation",
              "src": "4628:157:3",
              "text": " @dev triggered when final report is successfully submitted\n @param _to  target wallet\n @param _id  xtransfer id"
            },
            "id": 2674,
            "name": "XTransferComplete",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2670,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2674,
                  "src": "4825:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2669,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4825:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2672,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2674,
                  "src": "4847:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4847:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4814:51:3"
            },
            "src": "4791:75:3"
          },
          {
            "body": {
              "id": 2775,
              "nodeType": "Block",
              "src": "6171:729:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2723,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2681,
                            "src": "6217:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2724,
                            "name": "_maxLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2677,
                            "src": "6230:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6217:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2726,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2681,
                            "src": "6247:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2727,
                            "name": "_maxReleaseLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2679,
                            "src": "6260:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6247:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6217:59:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f4d494e5f4c494d4954",
                        "id": 2730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6278:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        },
                        "value": "ERR_INVALID_MIN_LIMIT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        }
                      ],
                      "id": 2722,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6209:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6209:93:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2732,
                  "nodeType": "ExpressionStatement",
                  "src": "6209:93:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2733,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "6391:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2734,
                      "name": "_maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2677,
                      "src": "6406:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6391:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2736,
                  "nodeType": "ExpressionStatement",
                  "src": "6391:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2737,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "6430:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2738,
                      "name": "_maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2679,
                      "src": "6448:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6430:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2740,
                  "nodeType": "ExpressionStatement",
                  "src": "6430:34:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2741,
                      "name": "minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "6475:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2742,
                      "name": "_minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2681,
                      "src": "6486:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6475:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2744,
                  "nodeType": "ExpressionStatement",
                  "src": "6475:20:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2745,
                      "name": "limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2592,
                      "src": "6506:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2746,
                      "name": "_limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2683,
                      "src": "6525:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6506:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2748,
                  "nodeType": "ExpressionStatement",
                  "src": "6506:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2749,
                      "name": "minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2598,
                      "src": "6553:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2750,
                      "name": "_minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2685,
                      "src": "6574:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6553:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2752,
                  "nodeType": "ExpressionStatement",
                  "src": "6553:40:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2753,
                      "name": "prevLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2588,
                      "src": "6697:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2754,
                      "name": "_maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2677,
                      "src": "6713:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6697:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2756,
                  "nodeType": "ExpressionStatement",
                  "src": "6697:29:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2757,
                      "name": "prevReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "6737:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2758,
                      "name": "_maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2679,
                      "src": "6756:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6737:35:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2760,
                  "nodeType": "ExpressionStatement",
                  "src": "6737:35:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2761,
                      "name": "prevLockBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2594,
                      "src": "6783:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2762,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "6805:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2763,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6805:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6783:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2765,
                  "nodeType": "ExpressionStatement",
                  "src": "6783:34:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2766,
                      "name": "prevReleaseBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2596,
                      "src": "6828:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2767,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "6853:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2768,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6853:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6828:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2770,
                  "nodeType": "ExpressionStatement",
                  "src": "6828:37:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2771,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "6878:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2772,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2689,
                      "src": "6886:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "src": "6878:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 2774,
                  "nodeType": "ExpressionStatement",
                  "src": "6878:14:3"
                }
              ]
            },
            "documentation": {
              "id": 2675,
              "nodeType": "StructuredDocumentation",
              "src": "4874:699:3",
              "text": " @dev initializes a new BancorX instance\n @param _maxLockLimit          maximum amount of tokens that can be locked in one transaction\n @param _maxReleaseLimit       maximum amount of tokens that can be released in one transaction\n @param _minLimit              minimum amount of tokens that can be transferred in one transaction\n @param _limitIncPerBlock      how much the limit increases per block\n @param _minRequiredReports    minimum number of reporters to report transaction before tokens can be released\n @param _registry              address of contract registry\n @param _token                 erc20 token"
            },
            "id": 2776,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2692,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2687,
                    "src": "5857:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 2693,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2691,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "5834:22:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5834:33:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2695,
                    "name": "_maxLockLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2677,
                    "src": "5909:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2696,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2694,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "5893:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5893:30:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2698,
                    "name": "_maxReleaseLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2679,
                    "src": "5949:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2699,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2697,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "5933:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5933:33:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2701,
                    "name": "_minLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2681,
                    "src": "5992:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2702,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2700,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "5976:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5976:26:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2704,
                    "name": "_limitIncPerBlock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2683,
                    "src": "6028:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2705,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2703,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "6012:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6012:34:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2707,
                    "name": "_minRequiredReports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2685,
                    "src": "6072:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  }
                ],
                "id": 2708,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2706,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "6056:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6056:36:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2712,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2689,
                        "src": "6123:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 2711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6115:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 2710,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6115:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 2713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6115:15:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 2714,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2709,
                  "name": "validAddress",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22618,
                  "src": "6102:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6102:29:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2718,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2689,
                        "src": "6157:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 2717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6149:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 2716,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6149:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6149:15:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 2720,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2715,
                  "name": "notThis",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22644,
                  "src": "6141:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6141:24:3"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2677,
                  "mutability": "mutable",
                  "name": "_maxLockLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5601:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2676,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5601:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2679,
                  "mutability": "mutable",
                  "name": "_maxReleaseLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5633:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5633:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2681,
                  "mutability": "mutable",
                  "name": "_minLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5668:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2680,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5668:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2683,
                  "mutability": "mutable",
                  "name": "_limitIncPerBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5696:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2682,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5696:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2685,
                  "mutability": "mutable",
                  "name": "_minRequiredReports",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5732:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2684,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5732:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2687,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5768:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2686,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "5768:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2689,
                  "mutability": "mutable",
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2776,
                  "src": "5806:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2688,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "5806:11:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5590:241:3"
            },
            "returnParameters": {
              "id": 2721,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6171:0:3"
            },
            "scope": 3447,
            "src": "5579:1321:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2782,
              "nodeType": "Block",
              "src": "6978:46:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2778,
                      "name": "_reporterOnly",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2795,
                      "src": "6989:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 2779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6989:15:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2780,
                  "nodeType": "ExpressionStatement",
                  "src": "6989:15:3"
                },
                {
                  "id": 2781,
                  "nodeType": "PlaceholderStatement",
                  "src": "7015:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 2783,
            "name": "reporterOnly",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 2777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6978:0:3"
            },
            "src": "6956:68:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2794,
              "nodeType": "Block",
              "src": "7118:70:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2787,
                          "name": "reporters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2625,
                          "src": "7137:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 2790,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2788,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "7147:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7147:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7137:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f4143434553535f44454e494544",
                        "id": 2791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7160:19:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        },
                        "value": "ERR_ACCESS_DENIED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        }
                      ],
                      "id": 2786,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7129:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7129:51:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2793,
                  "nodeType": "ExpressionStatement",
                  "src": "7129:51:3"
                }
              ]
            },
            "documentation": null,
            "id": 2795,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_reporterOnly",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2784,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7101:2:3"
            },
            "returnParameters": {
              "id": 2785,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7118:0:3"
            },
            "scope": 3447,
            "src": "7079:109:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2801,
              "nodeType": "Block",
              "src": "7282:51:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2797,
                      "name": "_xTransfersAllowed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2811,
                      "src": "7293:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 2798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7293:20:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2799,
                  "nodeType": "ExpressionStatement",
                  "src": "7293:20:3"
                },
                {
                  "id": 2800,
                  "nodeType": "PlaceholderStatement",
                  "src": "7324:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 2802,
            "name": "xTransfersAllowed",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 2796,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7282:0:3"
            },
            "src": "7255:78:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2810,
              "nodeType": "Block",
              "src": "7432:61:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2806,
                        "name": "xTransfersEnabled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2604,
                        "src": "7451:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f44495341424c4544",
                        "id": 2807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7470:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        },
                        "value": "ERR_DISABLED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        }
                      ],
                      "id": 2805,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7443:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7443:42:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2809,
                  "nodeType": "ExpressionStatement",
                  "src": "7443:42:3"
                }
              ]
            },
            "documentation": null,
            "id": 2811,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_xTransfersAllowed",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7415:2:3"
            },
            "returnParameters": {
              "id": 2804,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7432:0:3"
            },
            "scope": 3447,
            "src": "7388:105:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2817,
              "nodeType": "Block",
              "src": "7583:50:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2813,
                      "name": "_reportingAllowed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2827,
                      "src": "7594:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 2814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7594:19:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2815,
                  "nodeType": "ExpressionStatement",
                  "src": "7594:19:3"
                },
                {
                  "id": 2816,
                  "nodeType": "PlaceholderStatement",
                  "src": "7624:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 2818,
            "name": "reportingAllowed",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 2812,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7583:0:3"
            },
            "src": "7557:76:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2826,
              "nodeType": "Block",
              "src": "7731:60:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2822,
                        "name": "reportingEnabled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "7750:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f44495341424c4544",
                        "id": 2823,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7768:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        },
                        "value": "ERR_DISABLED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9d3ff080c987bf451b6124b46a2d27535e787d6af81fbc565831013f54fd3a71",
                          "typeString": "literal_string \"ERR_DISABLED\""
                        }
                      ],
                      "id": 2821,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7742:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7742:41:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2825,
                  "nodeType": "ExpressionStatement",
                  "src": "7742:41:3"
                }
              ]
            },
            "documentation": null,
            "id": 2827,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_reportingAllowed",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2819,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7714:2:3"
            },
            "returnParameters": {
              "id": 2820,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7731:0:3"
            },
            "scope": 3447,
            "src": "7688:103:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2842,
              "nodeType": "Block",
              "src": "7993:47:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2838,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "8004:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2839,
                      "name": "_maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2830,
                      "src": "8019:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8004:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2841,
                  "nodeType": "ExpressionStatement",
                  "src": "8004:28:3"
                }
              ]
            },
            "documentation": {
              "id": 2828,
              "nodeType": "StructuredDocumentation",
              "src": "7799:92:3",
              "text": " @dev setter\n @param _maxLockLimit    new maxLockLimit"
            },
            "functionSelector": "af2b9618",
            "id": 2843,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2833,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2832,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "7952:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7952:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2835,
                    "name": "_maxLockLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2830,
                    "src": "7978:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2836,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2834,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "7962:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7962:30:3"
              }
            ],
            "name": "setMaxLockLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2830,
                  "mutability": "mutable",
                  "name": "_maxLockLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2843,
                  "src": "7922:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2829,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7922:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7921:23:3"
            },
            "returnParameters": {
              "id": 2837,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7993:0:3"
            },
            "scope": 3447,
            "src": "7897:143:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2858,
              "nodeType": "Block",
              "src": "8257:53:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2854,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "8268:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2855,
                      "name": "_maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2846,
                      "src": "8286:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8268:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2857,
                  "nodeType": "ExpressionStatement",
                  "src": "8268:34:3"
                }
              ]
            },
            "documentation": {
              "id": 2844,
              "nodeType": "StructuredDocumentation",
              "src": "8048:98:3",
              "text": " @dev setter\n @param _maxReleaseLimit    new maxReleaseLimit"
            },
            "functionSelector": "bf28ece4",
            "id": 2859,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2849,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2848,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "8213:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8213:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2851,
                    "name": "_maxReleaseLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2846,
                    "src": "8239:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2852,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2850,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "8223:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8223:33:3"
              }
            ],
            "name": "setMaxReleaseLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2846,
                  "mutability": "mutable",
                  "name": "_maxReleaseLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2859,
                  "src": "8180:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2845,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8180:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8179:26:3"
            },
            "returnParameters": {
              "id": 2853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8257:0:3"
            },
            "scope": 3447,
            "src": "8152:158:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2885,
              "nodeType": "Block",
              "src": "8492:170:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2871,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2862,
                            "src": "8538:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2872,
                            "name": "maxLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2582,
                            "src": "8551:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8538:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2874,
                            "name": "_minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2862,
                            "src": "8567:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2875,
                            "name": "maxReleaseLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2584,
                            "src": "8580:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8567:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8538:57:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f4d494e5f4c494d4954",
                        "id": 2878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8597:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        },
                        "value": "ERR_INVALID_MIN_LIMIT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e8863683e853f5e973d186a95524b4cc24f1541517387abe8d8f6488ce1e0dc9",
                          "typeString": "literal_string \"ERR_INVALID_MIN_LIMIT\""
                        }
                      ],
                      "id": 2870,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8530:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8530:91:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2880,
                  "nodeType": "ExpressionStatement",
                  "src": "8530:91:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2881,
                      "name": "minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "8634:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2882,
                      "name": "_minLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2862,
                      "src": "8645:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8634:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2884,
                  "nodeType": "ExpressionStatement",
                  "src": "8634:20:3"
                }
              ]
            },
            "documentation": {
              "id": 2860,
              "nodeType": "StructuredDocumentation",
              "src": "8318:84:3",
              "text": " @dev setter\n @param _minLimit    new minLimit"
            },
            "functionSelector": "6ec6d4a6",
            "id": 2886,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2865,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2864,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "8455:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8455:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2867,
                    "name": "_minLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2862,
                    "src": "8481:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2868,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2866,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "8465:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8465:26:3"
              }
            ],
            "name": "setMinLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "mutability": "mutable",
                  "name": "_minLimit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2886,
                  "src": "8429:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8429:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8428:19:3"
            },
            "returnParameters": {
              "id": 2869,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8492:0:3"
            },
            "scope": 3447,
            "src": "8408:254:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2901,
              "nodeType": "Block",
              "src": "8884:55:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2897,
                      "name": "limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2592,
                      "src": "8895:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2898,
                      "name": "_limitIncPerBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2889,
                      "src": "8914:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8895:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2900,
                  "nodeType": "ExpressionStatement",
                  "src": "8895:36:3"
                }
              ]
            },
            "documentation": {
              "id": 2887,
              "nodeType": "StructuredDocumentation",
              "src": "8670:100:3",
              "text": " @dev setter\n @param _limitIncPerBlock    new limitIncPerBlock"
            },
            "functionSelector": "a50c326c",
            "id": 2902,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2892,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2891,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "8839:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8839:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2894,
                    "name": "_limitIncPerBlock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2889,
                    "src": "8865:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2895,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2893,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "8849:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8849:34:3"
              }
            ],
            "name": "setLimitIncPerBlock",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2889,
                  "mutability": "mutable",
                  "name": "_limitIncPerBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2902,
                  "src": "8805:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8805:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8804:27:3"
            },
            "returnParameters": {
              "id": 2896,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8884:0:3"
            },
            "scope": 3447,
            "src": "8776:163:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2917,
              "nodeType": "Block",
              "src": "9169:59:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2913,
                      "name": "minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2598,
                      "src": "9180:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2914,
                      "name": "_minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2905,
                      "src": "9201:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "9180:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2916,
                  "nodeType": "ExpressionStatement",
                  "src": "9180:40:3"
                }
              ]
            },
            "documentation": {
              "id": 2903,
              "nodeType": "StructuredDocumentation",
              "src": "8947:104:3",
              "text": " @dev setter\n @param _minRequiredReports    new minRequiredReports"
            },
            "functionSelector": "7b15879c",
            "id": 2918,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2908,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2907,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "9122:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9122:9:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2910,
                    "name": "_minRequiredReports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2905,
                    "src": "9148:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  }
                ],
                "id": 2911,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2909,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "9132:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9132:36:3"
              }
            ],
            "name": "setMinRequiredReports",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2905,
                  "mutability": "mutable",
                  "name": "_minRequiredReports",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2918,
                  "src": "9088:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2904,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "9088:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9087:27:3"
            },
            "returnParameters": {
              "id": 2912,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9169:0:3"
            },
            "scope": 3447,
            "src": "9057:171:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2934,
              "nodeType": "Block",
              "src": "9531:49:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2928,
                        "name": "reporters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "9542:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2930,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2929,
                        "name": "_reporter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2921,
                        "src": "9552:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9542:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2931,
                      "name": "_active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2923,
                      "src": "9565:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9542:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2933,
                  "nodeType": "ExpressionStatement",
                  "src": "9542:30:3"
                }
              ]
            },
            "documentation": {
              "id": 2919,
              "nodeType": "StructuredDocumentation",
              "src": "9236:218:3",
              "text": " @dev allows the owner to set/remove reporters\n @param _reporter    reporter whos status is to be set\n @param _active      true if the reporter is approved, false otherwise"
            },
            "functionSelector": "e1bb5133",
            "id": 2935,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2926,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2925,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "9521:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9521:9:3"
              }
            ],
            "name": "setReporter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2921,
                  "mutability": "mutable",
                  "name": "_reporter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2935,
                  "src": "9481:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2920,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9481:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2923,
                  "mutability": "mutable",
                  "name": "_active",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2935,
                  "src": "9500:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2922,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9500:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9480:33:3"
            },
            "returnParameters": {
              "id": 2927,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9531:0:3"
            },
            "scope": 3447,
            "src": "9460:120:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2947,
              "nodeType": "Block",
              "src": "9800:46:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2943,
                      "name": "xTransfersEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2604,
                      "src": "9811:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2944,
                      "name": "_enable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2938,
                      "src": "9831:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9811:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2946,
                  "nodeType": "ExpressionStatement",
                  "src": "9811:27:3"
                }
              ]
            },
            "documentation": {
              "id": 2936,
              "nodeType": "StructuredDocumentation",
              "src": "9588:149:3",
              "text": " @dev allows the owner enable/disable the xTransfer method\n @param _enable     true to enable, false to disable"
            },
            "functionSelector": "a5c670ca",
            "id": 2948,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2941,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2940,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "9790:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9790:9:3"
              }
            ],
            "name": "enableXTransfers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2938,
                  "mutability": "mutable",
                  "name": "_enable",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2948,
                  "src": "9769:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2937,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9769:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9768:14:3"
            },
            "returnParameters": {
              "id": 2942,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9800:0:3"
            },
            "scope": 3447,
            "src": "9743:103:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2960,
              "nodeType": "Block",
              "src": "10073:45:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2956,
                      "name": "reportingEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2607,
                      "src": "10084:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2957,
                      "name": "_enable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2951,
                      "src": "10103:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10084:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2959,
                  "nodeType": "ExpressionStatement",
                  "src": "10084:26:3"
                }
              ]
            },
            "documentation": {
              "id": 2949,
              "nodeType": "StructuredDocumentation",
              "src": "9854:157:3",
              "text": " @dev allows the owner enable/disable the reportTransaction method\n @param _enable     true to enable, false to disable"
            },
            "functionSelector": "ed1d73a6",
            "id": 2961,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2954,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2953,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "10063:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10063:9:3"
              }
            ],
            "name": "enableReporting",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "mutability": "mutable",
                  "name": "_enable",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2961,
                  "src": "10042:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10042:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10041:14:3"
            },
            "returnParameters": {
              "id": 2955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10073:0:3"
            },
            "scope": 3447,
            "src": "10017:101:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2995,
              "nodeType": "Block",
              "src": "10463:239:3",
              "statements": [
                {
                  "assignments": [
                    2971
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2971,
                      "mutability": "mutable",
                      "name": "bancorXUpgrader",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2995,
                      "src": "10474:32:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                        "typeString": "contract IBancorXUpgrader"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2970,
                        "name": "IBancorXUpgrader",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3562,
                        "src": "10474:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                          "typeString": "contract IBancorXUpgrader"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2977,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2974,
                            "name": "BANCOR_X_UPGRADER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21557,
                            "src": "10536:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2973,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "10526:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 2975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10526:28:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2972,
                      "name": "IBancorXUpgrader",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3562,
                      "src": "10509:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IBancorXUpgrader_$3562_$",
                        "typeString": "type(contract IBancorXUpgrader)"
                      }
                    },
                    "id": 2976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10509:46:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                      "typeString": "contract IBancorXUpgrader"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10474:81:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2981,
                            "name": "bancorXUpgrader",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2971,
                            "src": "10594:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                              "typeString": "contract IBancorXUpgrader"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                              "typeString": "contract IBancorXUpgrader"
                            }
                          ],
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10586:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2979,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10586:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 2982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10586:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2978,
                      "name": "transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21787,
                      "src": "10568:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 2983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10568:43:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2984,
                  "nodeType": "ExpressionStatement",
                  "src": "10568:43:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2988,
                        "name": "version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2580,
                        "src": "10646:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2989,
                        "name": "_reporters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "10655:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2985,
                        "name": "bancorXUpgrader",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2971,
                        "src": "10622:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBancorXUpgrader_$3562",
                          "typeString": "contract IBancorXUpgrader"
                        }
                      },
                      "id": 2987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "upgrade",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3561,
                      "src": "10622:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (uint16,address[] memory) external"
                      }
                    },
                    "id": 2990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10622:44:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2991,
                  "nodeType": "ExpressionStatement",
                  "src": "10622:44:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2992,
                      "name": "acceptOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21817,
                      "src": "10677:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10677:17:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2994,
                  "nodeType": "ExpressionStatement",
                  "src": "10677:17:3"
                }
              ]
            },
            "documentation": {
              "id": 2962,
              "nodeType": "StructuredDocumentation",
              "src": "10126:268:3",
              "text": " @dev upgrades the contract to the latest version\n can only be called by the owner\n note that the owner needs to call acceptOwnership on the new contract after the upgrade\n @param _reporters    new list of reporters"
            },
            "functionSelector": "0183592b",
            "id": 2996,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2968,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2967,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "10453:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10453:9:3"
              }
            ],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2965,
                  "mutability": "mutable",
                  "name": "_reporters",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2996,
                  "src": "10417:27:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2963,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "10417:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2964,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10417:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10416:29:3"
            },
            "returnParameters": {
              "id": 2969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10463:0:3"
            },
            "scope": 3447,
            "src": "10400:302:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3049,
              "nodeType": "Block",
              "src": "11130:540:3",
              "statements": [
                {
                  "assignments": [
                    3009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3009,
                      "mutability": "mutable",
                      "name": "currentLockLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3049,
                      "src": "11180:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3008,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11180:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3012,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3010,
                      "name": "getCurrentLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3343,
                      "src": "11207:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11207:21:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11180:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3020,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3014,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3003,
                            "src": "11279:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3015,
                            "name": "minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "11290:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11279:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3017,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3003,
                            "src": "11302:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3018,
                            "name": "currentLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3009,
                            "src": "11313:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11302:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "11279:50:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414d4f554e545f544f4f5f48494748",
                        "id": 3021,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11331:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        },
                        "value": "ERR_AMOUNT_TOO_HIGH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        }
                      ],
                      "id": 3013,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11271:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11271:82:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3023,
                  "nodeType": "ExpressionStatement",
                  "src": "11271:82:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3025,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3003,
                        "src": "11377:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3024,
                      "name": "lockTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3398,
                      "src": "11366:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11366:19:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3027,
                  "nodeType": "ExpressionStatement",
                  "src": "11366:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3028,
                      "name": "prevLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2588,
                      "src": "11455:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3031,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3003,
                          "src": "11492:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3029,
                          "name": "currentLockLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3009,
                          "src": "11471:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22293,
                        "src": "11471:20:3",
                        "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": 3032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11471:29:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11455:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3034,
                  "nodeType": "ExpressionStatement",
                  "src": "11455:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3035,
                      "name": "prevLockBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2594,
                      "src": "11511:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3036,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "11533:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 3037,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11533:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11511:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3039,
                  "nodeType": "ExpressionStatement",
                  "src": "11511:34:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3041,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "11619:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11619:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3043,
                        "name": "_toBlockchain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2999,
                        "src": "11631:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3044,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3001,
                        "src": "11646:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3045,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3003,
                        "src": "11651:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11660:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 3040,
                      "name": "XTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "11609:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 3047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11609:53:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3048,
                  "nodeType": "EmitStatement",
                  "src": "11604:58:3"
                }
              ]
            },
            "documentation": {
              "id": 2997,
              "nodeType": "StructuredDocumentation",
              "src": "10710:317:3",
              "text": " @dev claims tokens from msg.sender to be converted to tokens on another blockchain\n @param _toBlockchain    blockchain on which tokens will be issued\n @param _to              address to send the tokens to\n @param _amount          the amount of tokens to transfer"
            },
            "functionSelector": "49282538",
            "id": 3050,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3006,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3005,
                  "name": "xTransfersAllowed",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2802,
                  "src": "11112:17:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11112:17:3"
              }
            ],
            "name": "xTransfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "mutability": "mutable",
                  "name": "_toBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3050,
                  "src": "11052:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11052:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3001,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3050,
                  "src": "11075:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3000,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11075:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3003,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3050,
                  "src": "11088:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3002,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11088:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11051:53:3"
            },
            "returnParameters": {
              "id": 3007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11130:0:3"
            },
            "scope": 3447,
            "src": "11033:637:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3541
            ],
            "body": {
              "id": 3106,
              "nodeType": "Block",
              "src": "12225:565:3",
              "statements": [
                {
                  "assignments": [
                    3066
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3066,
                      "mutability": "mutable",
                      "name": "currentLockLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3106,
                      "src": "12275:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12275:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3069,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3067,
                      "name": "getCurrentLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3343,
                      "src": "12302:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12302:21:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12275:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3071,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3057,
                            "src": "12410:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3072,
                            "name": "minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "12421:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12410:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3074,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3057,
                            "src": "12433:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3075,
                            "name": "currentLockLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3066,
                            "src": "12444:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12433:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12410:50:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414d4f554e545f544f4f5f48494748",
                        "id": 3078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12462:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        },
                        "value": "ERR_AMOUNT_TOO_HIGH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        }
                      ],
                      "id": 3070,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12402:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12402:82:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3080,
                  "nodeType": "ExpressionStatement",
                  "src": "12402:82:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3082,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3057,
                        "src": "12508:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3081,
                      "name": "lockTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3398,
                      "src": "12497:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12497:19:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3084,
                  "nodeType": "ExpressionStatement",
                  "src": "12497:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3085,
                      "name": "prevLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2588,
                      "src": "12586:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3088,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3057,
                          "src": "12623:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3086,
                          "name": "currentLockLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3066,
                          "src": "12602:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3087,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22293,
                        "src": "12602:20:3",
                        "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": 3089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12602:29:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12586:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3091,
                  "nodeType": "ExpressionStatement",
                  "src": "12586:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3092,
                      "name": "prevLockBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2594,
                      "src": "12642:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3093,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "12664:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 3094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12664:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12642:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3096,
                  "nodeType": "ExpressionStatement",
                  "src": "12642:34:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3098,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "12737:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12737:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3100,
                        "name": "_toBlockchain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3053,
                        "src": "12749:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3101,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3055,
                        "src": "12764:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3102,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3057,
                        "src": "12769:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3103,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "12778:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3097,
                      "name": "XTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "12727:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 3104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12727:55:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3105,
                  "nodeType": "EmitStatement",
                  "src": "12722:60:3"
                }
              ]
            },
            "documentation": {
              "id": 3051,
              "nodeType": "StructuredDocumentation",
              "src": "11678:422:3",
              "text": " @dev claims tokens from msg.sender to be converted to tokens on another blockchain\n @param _toBlockchain    blockchain on which tokens will be issued\n @param _to              address to send the tokens to\n @param _amount          the amount of tokens to transfer\n @param _id              pre-determined unique (if non zero) id which refers to this transaction"
            },
            "functionSelector": "427c0374",
            "id": 3107,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3063,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3062,
                  "name": "xTransfersAllowed",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2802,
                  "src": "12207:17:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12207:17:3"
              }
            ],
            "name": "xTransfer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3061,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12198:8:3"
            },
            "parameters": {
              "id": 3060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3053,
                  "mutability": "mutable",
                  "name": "_toBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12125:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3052,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12125:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3055,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12148:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3054,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12148:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3057,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12161:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3056,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12161:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3059,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3107,
                  "src": "12178:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3058,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12178:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12124:66:3"
            },
            "returnParameters": {
              "id": 3064,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12225:0:3"
            },
            "scope": 3447,
            "src": "12106:684:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3280,
              "nodeType": "Block",
              "src": "13645:1731:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "13747:31:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3132,
                              "name": "reportedTxs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2621,
                              "src": "13748:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(uint256 => mapping(address => bool))"
                              }
                            },
                            "id": 3134,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3133,
                              "name": "_txId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "13760:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13748:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3137,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3135,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "13767:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13767:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13748:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414c52454144595f5245504f52544544",
                        "id": 3139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13780:22:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eacdf1b09650a9214fcd03c8cca153c1ef5430f33502fe3fc1e6f73a52233e56",
                          "typeString": "literal_string \"ERR_ALREADY_REPORTED\""
                        },
                        "value": "ERR_ALREADY_REPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eacdf1b09650a9214fcd03c8cca153c1ef5430f33502fe3fc1e6f73a52233e56",
                          "typeString": "literal_string \"ERR_ALREADY_REPORTED\""
                        }
                      ],
                      "id": 3131,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "13739:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13739:64:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3141,
                  "nodeType": "ExpressionStatement",
                  "src": "13739:64:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3142,
                          "name": "reportedTxs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2621,
                          "src": "13849:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
                            "typeString": "mapping(uint256 => mapping(address => bool))"
                          }
                        },
                        "id": 3146,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3143,
                          "name": "_txId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3112,
                          "src": "13861:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13849:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3147,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3144,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "13868:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3145,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13868:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13849:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13882:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "13849:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3150,
                  "nodeType": "ExpressionStatement",
                  "src": "13849:37:3"
                },
                {
                  "assignments": [
                    3152
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3152,
                      "mutability": "mutable",
                      "name": "txn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3280,
                      "src": "13899:23:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                        "typeString": "struct BancorX.Transaction"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3151,
                        "name": "Transaction",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2577,
                        "src": "13899:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3156,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3153,
                      "name": "transactions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2611,
                      "src": "13925:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                        "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                      }
                    },
                    "id": 3155,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3154,
                      "name": "_txId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3112,
                      "src": "13938:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13925:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                      "typeString": "struct BancorX.Transaction storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13899:45:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3157,
                        "name": "txn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3152,
                        "src": "14038:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction storage pointer"
                        }
                      },
                      "id": 3158,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfReports",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2574,
                      "src": "14038:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14058:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "14038:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3231,
                    "nodeType": "Block",
                    "src": "14474:316:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 3204,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3201,
                                      "name": "txn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3152,
                                      "src": "14551:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                        "typeString": "struct BancorX.Transaction storage pointer"
                                      }
                                    },
                                    "id": 3202,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2572,
                                    "src": "14551:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3203,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3114,
                                    "src": "14561:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "14551:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3205,
                                      "name": "txn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3152,
                                      "src": "14568:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                        "typeString": "struct BancorX.Transaction storage pointer"
                                      }
                                    },
                                    "id": 3206,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2568,
                                    "src": "14568:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3207,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3116,
                                    "src": "14582:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14568:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "14551:38:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 3213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3210,
                                    "name": "txn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3152,
                                    "src": "14593:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                      "typeString": "struct BancorX.Transaction storage pointer"
                                    }
                                  },
                                  "id": 3211,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "fromBlockchain",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2570,
                                  "src": "14593:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3212,
                                  "name": "_fromBlockchain",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3110,
                                  "src": "14615:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "14593:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "14551:79:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4552525f54585f4d49534d41544348",
                              "id": 3215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14632:17:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                                "typeString": "literal_string \"ERR_TX_MISMATCH\""
                              },
                              "value": "ERR_TX_MISMATCH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                                "typeString": "literal_string \"ERR_TX_MISMATCH\""
                              }
                            ],
                            "id": 3200,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14543:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14543:107:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3217,
                        "nodeType": "ExpressionStatement",
                        "src": "14543:107:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3218,
                            "name": "_xTransferId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3118,
                            "src": "14671:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14687:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14671:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3230,
                        "nodeType": "IfStatement",
                        "src": "14667:111:3",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3222,
                                    "name": "transactionIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "14715:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3224,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3223,
                                    "name": "_xTransferId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3118,
                                    "src": "14730:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14715:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3225,
                                  "name": "_txId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3112,
                                  "src": "14747:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14715:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "4552525f54585f414c52454144595f455849535453",
                                "id": 3227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14754:23:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                  "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                },
                                "value": "ERR_TX_ALREADY_EXISTS"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                  "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                }
                              ],
                              "id": 3221,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "src": "14707:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (bool,string memory) pure"
                              }
                            },
                            "id": 3228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14707:71:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 3229,
                          "nodeType": "ExpressionStatement",
                          "src": "14707:71:3"
                        }
                      }
                    ]
                  },
                  "id": 3232,
                  "nodeType": "IfStatement",
                  "src": "14034:756:3",
                  "trueBody": {
                    "id": 3199,
                    "nodeType": "Block",
                    "src": "14061:398:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3161,
                              "name": "txn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "14076:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                "typeString": "struct BancorX.Transaction storage pointer"
                              }
                            },
                            "id": 3163,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "to",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2572,
                            "src": "14076:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3164,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3114,
                            "src": "14085:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14076:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3166,
                        "nodeType": "ExpressionStatement",
                        "src": "14076:12:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3167,
                              "name": "txn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "14103:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                "typeString": "struct BancorX.Transaction storage pointer"
                              }
                            },
                            "id": 3169,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2568,
                            "src": "14103:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3170,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3116,
                            "src": "14116:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14103:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3172,
                        "nodeType": "ExpressionStatement",
                        "src": "14103:20:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3173,
                              "name": "txn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "14138:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                                "typeString": "struct BancorX.Transaction storage pointer"
                              }
                            },
                            "id": 3175,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "fromBlockchain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2570,
                            "src": "14138:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3176,
                            "name": "_fromBlockchain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3110,
                            "src": "14159:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "14138:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3178,
                        "nodeType": "ExpressionStatement",
                        "src": "14138:36:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3179,
                            "name": "_xTransferId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3118,
                            "src": "14195:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14211:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14195:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3198,
                        "nodeType": "IfStatement",
                        "src": "14191:257:3",
                        "trueBody": {
                          "id": 3197,
                          "nodeType": "Block",
                          "src": "14214:234:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3183,
                                        "name": "transactionIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2615,
                                        "src": "14318:14:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 3185,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3184,
                                        "name": "_xTransferId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3118,
                                        "src": "14333:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "14318:28:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14350:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "14318:33:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "4552525f54585f414c52454144595f455849535453",
                                    "id": 3188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14353:23:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                      "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                    },
                                    "value": "ERR_TX_ALREADY_EXISTS"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6957b87c54e7d0624ff8a3f0dab58c7c7ceeac939294153268df0f24ee23a0a9",
                                      "typeString": "literal_string \"ERR_TX_ALREADY_EXISTS\""
                                    }
                                  ],
                                  "id": 3182,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "14310:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14310:67:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3190,
                              "nodeType": "ExpressionStatement",
                              "src": "14310:67:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3191,
                                    "name": "transactionIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "14396:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3193,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3192,
                                    "name": "_xTransferId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3118,
                                    "src": "14411:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "14396:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3194,
                                  "name": "_txId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3112,
                                  "src": "14427:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14396:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3196,
                              "nodeType": "ExpressionStatement",
                              "src": "14396:36:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "14846:18:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3233,
                        "name": "txn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3152,
                        "src": "14846:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction storage pointer"
                        }
                      },
                      "id": 3235,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfReports",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2574,
                      "src": "14846:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3237,
                  "nodeType": "ExpressionStatement",
                  "src": "14846:18:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3239,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "14891:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14891:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3241,
                        "name": "_fromBlockchain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3110,
                        "src": "14903:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3242,
                        "name": "_txId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3112,
                        "src": "14920:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3243,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3114,
                        "src": "14927:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3244,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3116,
                        "src": "14932:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3245,
                        "name": "_xTransferId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3118,
                        "src": "14941:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3238,
                      "name": "TxReport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2667,
                      "src": "14882:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256,address,uint256,uint256)"
                      }
                    },
                    "id": 3246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14882:72:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3247,
                  "nodeType": "EmitStatement",
                  "src": "14877:77:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3248,
                        "name": "txn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3152,
                        "src": "15031:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction storage pointer"
                        }
                      },
                      "id": 3249,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfReports",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2574,
                      "src": "15031:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3250,
                      "name": "minRequiredReports",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2598,
                      "src": "15051:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "15031:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3279,
                  "nodeType": "IfStatement",
                  "src": "15027:342:3",
                  "trueBody": {
                    "id": 3278,
                    "nodeType": "Block",
                    "src": "15071:298:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "15094:30:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3253,
                                    "name": "transactions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2611,
                                    "src": "15095:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                                      "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                                    }
                                  },
                                  "id": 3255,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3254,
                                    "name": "_txId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3112,
                                    "src": "15108:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15095:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                                    "typeString": "struct BancorX.Transaction storage ref"
                                  }
                                },
                                "id": 3256,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "completed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2576,
                                "src": "15095:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4552525f54585f414c52454144595f434f4d504c45544544",
                              "id": 3258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15126:26:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8458c6336176452534d737fe1d081580bd6710b63bb64c5c00fe229feb3ce8c8",
                                "typeString": "literal_string \"ERR_TX_ALREADY_COMPLETED\""
                              },
                              "value": "ERR_TX_ALREADY_COMPLETED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8458c6336176452534d737fe1d081580bd6710b63bb64c5c00fe229feb3ce8c8",
                                "typeString": "literal_string \"ERR_TX_ALREADY_COMPLETED\""
                              }
                            ],
                            "id": 3252,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15086:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15086:67:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3260,
                        "nodeType": "ExpressionStatement",
                        "src": "15086:67:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3261,
                                "name": "transactions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2611,
                                "src": "15219:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                                  "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                                }
                              },
                              "id": 3263,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3262,
                                "name": "_txId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3112,
                                "src": "15232:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15219:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                                "typeString": "struct BancorX.Transaction storage ref"
                              }
                            },
                            "id": 3264,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "completed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2576,
                            "src": "15219:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 3265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15251:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15219:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3267,
                        "nodeType": "ExpressionStatement",
                        "src": "15219:36:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3269,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3114,
                              "src": "15295:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3270,
                              "name": "_xTransferId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3118,
                              "src": "15300:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3268,
                            "name": "XTransferComplete",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2674,
                            "src": "15277:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15277:36:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3272,
                        "nodeType": "EmitStatement",
                        "src": "15272:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3274,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3114,
                              "src": "15344:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3275,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3116,
                              "src": "15349:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3273,
                            "name": "releaseTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3446,
                            "src": "15330:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15330:27:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3277,
                        "nodeType": "ExpressionStatement",
                        "src": "15330:27:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3108,
              "nodeType": "StructuredDocumentation",
              "src": "12798:549:3",
              "text": " @dev allows reporter to report transaction which occured on another blockchain\n @param _fromBlockchain  blockchain in which tokens were destroyed\n @param _txId            transactionId of transaction thats being reported\n @param _to              address to receive tokens\n @param _amount          amount of tokens destroyed on another blockchain\n @param _xTransferId     unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been mined)"
            },
            "functionSelector": "6dc6a01b",
            "id": 3281,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3121,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3120,
                  "name": "reporterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2783,
                  "src": "13540:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13540:12:3"
              },
              {
                "arguments": null,
                "id": 3123,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3122,
                  "name": "reportingAllowed",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2818,
                  "src": "13562:16:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13562:16:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3125,
                    "name": "_to",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3114,
                    "src": "13601:3:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3126,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3124,
                  "name": "validAddress",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22618,
                  "src": "13588:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13588:17:3"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3128,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3116,
                    "src": "13631:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3129,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3127,
                  "name": "greaterThanZero",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22595,
                  "src": "13615:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13615:24:3"
              }
            ],
            "name": "reportTx",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3110,
                  "mutability": "mutable",
                  "name": "_fromBlockchain",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13381:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3109,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13381:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3112,
                  "mutability": "mutable",
                  "name": "_txId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13415:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13415:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3114,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13439:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3113,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13439:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3116,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13461:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13461:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3118,
                  "mutability": "mutable",
                  "name": "_xTransferId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3281,
                  "src": "13487:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3117,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13487:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13370:144:3"
            },
            "returnParameters": {
              "id": 3130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13645:0:3"
            },
            "scope": 3447,
            "src": "13353:2023:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3550
            ],
            "body": {
              "id": 3311,
              "nodeType": "Block",
              "src": "15881:294:3",
              "statements": [
                {
                  "assignments": [
                    3293
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3293,
                      "mutability": "mutable",
                      "name": "transaction",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3311,
                      "src": "15939:30:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$2577_memory_ptr",
                        "typeString": "struct BancorX.Transaction"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3292,
                        "name": "Transaction",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2577,
                        "src": "15939:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$2577_storage_ptr",
                          "typeString": "struct BancorX.Transaction"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3299,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3294,
                      "name": "transactions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2611,
                      "src": "15972:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$2577_storage_$",
                        "typeString": "mapping(uint256 => struct BancorX.Transaction storage ref)"
                      }
                    },
                    "id": 3298,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3295,
                        "name": "transactionIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2615,
                        "src": "15985:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3297,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3296,
                        "name": "_xTransferId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3284,
                        "src": "16000:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "15985:28:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15972:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Transaction_$2577_storage",
                      "typeString": "struct BancorX.Transaction storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15939:75:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3301,
                            "name": "transaction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3293,
                            "src": "16087:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Transaction_$2577_memory_ptr",
                              "typeString": "struct BancorX.Transaction memory"
                            }
                          },
                          "id": 3302,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "to",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2572,
                          "src": "16087:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3303,
                          "name": "_for",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3286,
                          "src": "16105:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "16087:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f54585f4d49534d41544348",
                        "id": 3305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16111:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                          "typeString": "literal_string \"ERR_TX_MISMATCH\""
                        },
                        "value": "ERR_TX_MISMATCH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_39731edd6d4c0fd2309c14f2b1a935ba30b8a0693da1b0353a3c6694ebcdb4a7",
                          "typeString": "literal_string \"ERR_TX_MISMATCH\""
                        }
                      ],
                      "id": 3300,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "16079:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16079:50:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3307,
                  "nodeType": "ExpressionStatement",
                  "src": "16079:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3308,
                      "name": "transaction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3293,
                      "src": "16149:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$2577_memory_ptr",
                        "typeString": "struct BancorX.Transaction memory"
                      }
                    },
                    "id": 3309,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "amount",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2568,
                    "src": "16149:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3291,
                  "id": 3310,
                  "nodeType": "Return",
                  "src": "16142:25:3"
                }
              ]
            },
            "documentation": {
              "id": 3282,
              "nodeType": "StructuredDocumentation",
              "src": "15384:388:3",
              "text": " @dev gets x transfer amount by xTransferId (not txId)\n @param _xTransferId    unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been broadcasted)\n @param _for            address corresponding to xTransferId\n @return amount that was sent in xTransfer corresponding to _xTransferId"
            },
            "functionSelector": "aafd6b76",
            "id": 3312,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getXTransferAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3288,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15854:8:3"
            },
            "parameters": {
              "id": 3287,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3284,
                  "mutability": "mutable",
                  "name": "_xTransferId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3312,
                  "src": "15806:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15806:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3286,
                  "mutability": "mutable",
                  "name": "_for",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3312,
                  "src": "15828:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3285,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15828:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15805:36:3"
            },
            "returnParameters": {
              "id": 3291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3290,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3312,
                  "src": "15872:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3289,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15872:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15871:9:3"
            },
            "scope": 3447,
            "src": "15778:397:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3342,
              "nodeType": "Block",
              "src": "16399:331:3",
              "statements": [
                {
                  "assignments": [
                    3319
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3319,
                      "mutability": "mutable",
                      "name": "currentLockLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3342,
                      "src": "16499:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3318,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16499:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3333,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3330,
                            "name": "limitIncPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2592,
                            "src": "16590:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3326,
                                    "name": "prevLockBlockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2594,
                                    "src": "16564:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3322,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "16546:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 3323,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "16546:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3324,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16545:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3325,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22293,
                                  "src": "16545:18:3",
                                  "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": 3327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16545:39:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3328,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16544:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22327,
                          "src": "16544:45:3",
                          "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": 3331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16544:63:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3320,
                        "name": "prevLockLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2588,
                        "src": "16526:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22271,
                      "src": "16526:17:3",
                      "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": 3332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16526:82:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16499:109:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3334,
                      "name": "currentLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3319,
                      "src": "16623:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3335,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "16642:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16623:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3339,
                  "nodeType": "IfStatement",
                  "src": "16619:69:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3337,
                      "name": "maxLockLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "16676:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 3317,
                    "id": 3338,
                    "nodeType": "Return",
                    "src": "16669:19:3"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3340,
                    "name": "currentLockLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3319,
                    "src": "16706:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3317,
                  "id": 3341,
                  "nodeType": "Return",
                  "src": "16699:23:3"
                }
              ]
            },
            "documentation": {
              "id": 3313,
              "nodeType": "StructuredDocumentation",
              "src": "16183:149:3",
              "text": " @dev method for calculating current lock limit\n @return the current maximum limit of tokens that can be locked"
            },
            "functionSelector": "19967439",
            "id": 3343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentLockLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3314,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16366:2:3"
            },
            "returnParameters": {
              "id": 3317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3316,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3343,
                  "src": "16390:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3315,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16390:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16389:9:3"
            },
            "scope": 3447,
            "src": "16338:392:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3373,
              "nodeType": "Block",
              "src": "16962:358:3",
              "statements": [
                {
                  "assignments": [
                    3350
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3350,
                      "mutability": "mutable",
                      "name": "currentReleaseLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3373,
                      "src": "17068:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3349,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17068:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3364,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3361,
                            "name": "limitIncPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2592,
                            "src": "17168:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3357,
                                    "name": "prevReleaseBlockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2596,
                                    "src": "17139:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3353,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "17121:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 3354,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "17121:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3355,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17120:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22293,
                                  "src": "17120:18:3",
                                  "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": 3358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17120:42:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3359,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17119:44:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22327,
                          "src": "17119:48:3",
                          "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": 3362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17119:66:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3351,
                        "name": "prevReleaseLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2590,
                        "src": "17098:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3352,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22271,
                      "src": "17098:20:3",
                      "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": 3363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17098:88:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17068:118:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3365,
                      "name": "currentReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3350,
                      "src": "17201:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3366,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "17223:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17201:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3370,
                  "nodeType": "IfStatement",
                  "src": "17197:78:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3368,
                      "name": "maxReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "17260:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 3348,
                    "id": 3369,
                    "nodeType": "Return",
                    "src": "17253:22:3"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3371,
                    "name": "currentReleaseLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3350,
                    "src": "17293:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3348,
                  "id": 3372,
                  "nodeType": "Return",
                  "src": "17286:26:3"
                }
              ]
            },
            "documentation": {
              "id": 3344,
              "nodeType": "StructuredDocumentation",
              "src": "16738:154:3",
              "text": " @dev method for calculating current release limit\n @return the current maximum limit of tokens that can be released"
            },
            "functionSelector": "1e04a593",
            "id": 3374,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentReleaseLimit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3345,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16929:2:3"
            },
            "returnParameters": {
              "id": 3348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3347,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3374,
                  "src": "16953:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16953:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16952:9:3"
            },
            "scope": 3447,
            "src": "16898:422:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3397,
              "nodeType": "Block",
              "src": "17556:125:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3381,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "17584:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3382,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "17591:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "17591:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3386,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "17611:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BancorX_$3447",
                              "typeString": "contract BancorX"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BancorX_$3447",
                              "typeString": "contract BancorX"
                            }
                          ],
                          "id": 3385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "17603:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3384,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17603:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 3387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17603:13:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3388,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3377,
                        "src": "17618:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3380,
                      "name": "safeTransferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22525,
                      "src": "17567:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (contract IERC20Token,address,address,uint256)"
                      }
                    },
                    "id": 3389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17567:59:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3390,
                  "nodeType": "ExpressionStatement",
                  "src": "17567:59:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3392,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "17653:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "17653:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3394,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3377,
                        "src": "17665:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3391,
                      "name": "TokensLock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2632,
                      "src": "17642:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 3395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17642:31:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3396,
                  "nodeType": "EmitStatement",
                  "src": "17637:36:3"
                }
              ]
            },
            "documentation": {
              "id": 3375,
              "nodeType": "StructuredDocumentation",
              "src": "17328:177:3",
              "text": " @dev claims and locks tokens from msg.sender to be converted to tokens on another blockchain\n @param _amount  the amount of tokens to lock"
            },
            "id": 3398,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "lockTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3377,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3398,
                  "src": "17531:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3376,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17531:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17530:17:3"
            },
            "returnParameters": {
              "id": 3379,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17556:0:3"
            },
            "scope": 3447,
            "src": "17511:170:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3445,
              "nodeType": "Block",
              "src": "17960:530:3",
              "statements": [
                {
                  "assignments": [
                    3407
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3407,
                      "mutability": "mutable",
                      "name": "currentReleaseLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "18013:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3406,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18013:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3410,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3408,
                      "name": "getCurrentReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3374,
                      "src": "18043:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18043:24:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18013:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3412,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3403,
                            "src": "18088:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3413,
                            "name": "minLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "18099:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18088:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3415,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3403,
                            "src": "18111:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3416,
                            "name": "currentReleaseLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3407,
                            "src": "18122:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18111:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "18088:53:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414d4f554e545f544f4f5f48494748",
                        "id": 3419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18143:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        },
                        "value": "ERR_AMOUNT_TOO_HIGH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea546d9a31e2cdf5ff54bd756b604340a9be1b0f1b5565f1667d358efb53a459",
                          "typeString": "literal_string \"ERR_AMOUNT_TOO_HIGH\""
                        }
                      ],
                      "id": 3411,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18080:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18080:85:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3421,
                  "nodeType": "ExpressionStatement",
                  "src": "18080:85:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3422,
                      "name": "prevReleaseLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "18241:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3425,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3403,
                          "src": "18284:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3423,
                          "name": "currentReleaseLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3407,
                          "src": "18260:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22293,
                        "src": "18260:23:3",
                        "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": 3426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18260:32:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18241:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3428,
                  "nodeType": "ExpressionStatement",
                  "src": "18241:51:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3429,
                      "name": "prevReleaseBlockNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2596,
                      "src": "18303:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3430,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "18328:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 3431,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18328:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18303:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3433,
                  "nodeType": "ExpressionStatement",
                  "src": "18303:37:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3435,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "18417:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3436,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3401,
                        "src": "18424:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3437,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3403,
                        "src": "18429:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3434,
                      "name": "safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22475,
                      "src": "18404:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (contract IERC20Token,address,uint256)"
                      }
                    },
                    "id": 3438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18404:33:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3439,
                  "nodeType": "ExpressionStatement",
                  "src": "18404:33:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3441,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3401,
                        "src": "18469:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3442,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3403,
                        "src": "18474:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3440,
                      "name": "TokensRelease",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2639,
                      "src": "18455:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 3443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18455:27:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3444,
                  "nodeType": "EmitStatement",
                  "src": "18450:32:3"
                }
              ]
            },
            "documentation": {
              "id": 3399,
              "nodeType": "StructuredDocumentation",
              "src": "17689:204:3",
              "text": " @dev private method to release tokens held by the contract\n @param _to      the address to release tokens to\n @param _amount  the amount of tokens to release"
            },
            "id": 3446,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "releaseTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3401,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3446,
                  "src": "17922:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3400,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17922:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3403,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3446,
                  "src": "17935:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3402,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17935:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17921:30:3"
            },
            "returnParameters": {
              "id": 3405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17960:0:3"
            },
            "scope": 3447,
            "src": "17899:591:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 3448,
        "src": "900:17593:3"
      }
    ],
    "src": "52:18443:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.3",
  "updatedAt": "2020-10-20T08:24:47.662Z",
  "devdoc": {
    "details": "The BancorX contract allows cross chain token transfers. There are two processes that take place in the contract - - Initiate a cross chain transfer to a target blockchain (locks tokens from the caller account on Ethereum) - Report a cross chain transfer initiated on a source blockchain (releases tokens to an account on Ethereum) Reporting cross chain transfers works similar to standard multisig contracts, meaning that multiple callers are required to report a transfer before tokens are released to the target account.",
    "events": {
      "TokensLock(address,uint256)": {
        "details": "triggered when tokens are locked in smart contract",
        "params": {
          "_amount": "amount locked",
          "_from": "wallet address that the tokens are locked from"
        }
      },
      "TokensRelease(address,uint256)": {
        "details": "triggered when tokens are released by the smart contract",
        "params": {
          "_amount": "amount released",
          "_to": "wallet address that the tokens are released to"
        }
      },
      "TxReport(address,bytes32,uint256,address,uint256,uint256)": {
        "details": "triggered when report is successfully submitted",
        "params": {
          "_amount": "transfer amount",
          "_fromBlockchain": "source blockchain",
          "_reporter": "reporter wallet",
          "_to": "target wallet",
          "_txId": "tx id on the source blockchain",
          "_xTransferId": "xtransfer id"
        }
      },
      "XTransfer(address,bytes32,bytes32,uint256,uint256)": {
        "details": "triggered when xTransfer is successfully called",
        "params": {
          "_amount": "transfer amount",
          "_from": "wallet address that initiated the xtransfer",
          "_id": "xtransfer id",
          "_to": "target wallet",
          "_toBlockchain": "target blockchain"
        }
      },
      "XTransferComplete(address,uint256)": {
        "details": "triggered when final report is successfully submitted",
        "params": {
          "_id": "xtransfer id",
          "_to": "target wallet"
        }
      }
    },
    "kind": "dev",
    "methods": {
      "acceptOwnership()": {
        "details": "used by a new owner to accept an ownership transfer"
      },
      "constructor": {
        "details": "initializes a new BancorX instance",
        "params": {
          "_limitIncPerBlock": "how much the limit increases per block",
          "_maxLockLimit": "maximum amount of tokens that can be locked in one transaction",
          "_maxReleaseLimit": "maximum amount of tokens that can be released in one transaction",
          "_minLimit": "minimum amount of tokens that can be transferred in one transaction",
          "_minRequiredReports": "minimum number of reporters to report transaction before tokens can be released",
          "_registry": "address of contract registry",
          "_token": "erc20 token"
        }
      },
      "enableReporting(bool)": {
        "details": "allows the owner enable/disable the reportTransaction method",
        "params": {
          "_enable": "true to enable, false to disable"
        }
      },
      "enableXTransfers(bool)": {
        "details": "allows the owner enable/disable the xTransfer method",
        "params": {
          "_enable": "true to enable, false to disable"
        }
      },
      "getCurrentLockLimit()": {
        "details": "method for calculating current lock limit",
        "returns": {
          "_0": "the current maximum limit of tokens that can be locked"
        }
      },
      "getCurrentReleaseLimit()": {
        "details": "method for calculating current release limit",
        "returns": {
          "_0": "the current maximum limit of tokens that can be released"
        }
      },
      "getXTransferAmount(uint256,address)": {
        "details": "gets x transfer amount by xTransferId (not txId)",
        "params": {
          "_for": "address corresponding to xTransferId",
          "_xTransferId": "unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been broadcasted)"
        },
        "returns": {
          "_0": "amount that was sent in xTransfer corresponding to _xTransferId"
        }
      },
      "reportTx(bytes32,uint256,address,uint256,uint256)": {
        "details": "allows reporter to report transaction which occured on another blockchain",
        "params": {
          "_amount": "amount of tokens destroyed on another blockchain",
          "_fromBlockchain": "blockchain in which tokens were destroyed",
          "_to": "address to receive tokens",
          "_txId": "transactionId of transaction thats being reported",
          "_xTransferId": "unique (if non zero) pre-determined id (unlike _txId which is determined after the transactions been mined)"
        }
      },
      "restoreRegistry()": {
        "details": "restores the previous contract-registry"
      },
      "restrictRegistryUpdate(bool)": {
        "details": "restricts the permission to update the contract-registry",
        "params": {
          "_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only"
        }
      },
      "setLimitIncPerBlock(uint256)": {
        "details": "setter",
        "params": {
          "_limitIncPerBlock": "new limitIncPerBlock"
        }
      },
      "setMaxLockLimit(uint256)": {
        "details": "setter",
        "params": {
          "_maxLockLimit": "new maxLockLimit"
        }
      },
      "setMaxReleaseLimit(uint256)": {
        "details": "setter",
        "params": {
          "_maxReleaseLimit": "new maxReleaseLimit"
        }
      },
      "setMinLimit(uint256)": {
        "details": "setter",
        "params": {
          "_minLimit": "new minLimit"
        }
      },
      "setMinRequiredReports(uint8)": {
        "details": "setter",
        "params": {
          "_minRequiredReports": "new minRequiredReports"
        }
      },
      "setReporter(address,bool)": {
        "details": "allows the owner to set/remove reporters",
        "params": {
          "_active": "true if the reporter is approved, false otherwise",
          "_reporter": "reporter whos status is to be set"
        }
      },
      "transferOwnership(address)": {
        "details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner",
        "params": {
          "_newOwner": "new contract owner"
        }
      },
      "updateRegistry()": {
        "details": "updates to the new contract-registry"
      },
      "upgrade(address[])": {
        "details": "upgrades the contract to the latest version can only be called by the owner note that the owner needs to call acceptOwnership on the new contract after the upgrade",
        "params": {
          "_reporters": "new list of reporters"
        }
      },
      "withdrawTokens(address,address,uint256)": {
        "details": "withdraws tokens held by the contract and sends them to an account can only be called by the owner",
        "params": {
          "_amount": "amount to withdraw",
          "_to": "account to receive the new amount",
          "_token": "ERC20 token contract address"
        }
      },
      "xTransfer(bytes32,bytes32,uint256)": {
        "details": "claims tokens from msg.sender to be converted to tokens on another blockchain",
        "params": {
          "_amount": "the amount of tokens to transfer",
          "_to": "address to send the tokens to",
          "_toBlockchain": "blockchain on which tokens will be issued"
        }
      },
      "xTransfer(bytes32,bytes32,uint256,uint256)": {
        "details": "claims tokens from msg.sender to be converted to tokens on another blockchain",
        "params": {
          "_amount": "the amount of tokens to transfer",
          "_id": "pre-determined unique (if non zero) id which refers to this transaction",
          "_to": "address to send the tokens to",
          "_toBlockchain": "blockchain on which tokens will be issued"
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}