{
  "contractName": "SubChain",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fundingBranch",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "challenger",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "bond",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "arbitrator",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isChallenged",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "challengeTime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fSystem",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "collateral",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "collateral_",
          "type": "address"
        },
        {
          "name": "fSystem_",
          "type": "address"
        },
        {
          "name": "fundingBranch_",
          "type": "bytes32"
        },
        {
          "name": "arbitrator_",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "bond_",
          "type": "uint256"
        }
      ],
      "name": "providInitialBond",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "challengeArbitrator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "amount",
          "type": "uint256"
        },
        {
          "name": "branch",
          "type": "bytes32"
        }
      ],
      "name": "withdrawAfterChallenge",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "branch",
          "type": "bytes32"
        }
      ],
      "name": "withdrawalForArbitrator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "branch",
          "type": "bytes32"
        }
      ],
      "name": "withdrawalForChallenger",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526003805460ff1916905534801561001a57600080fd5b50604051608080611a33833981016040908152815160208301519183015160609093015160048054600160a060020a03938416600160a060020a031991821617909155600380549484166101000261010060a860020a031990951694909417909355600593909355600680549190931691161790556119958061009e6000396000f3006080604052600436106101245763ffffffff60e060020a600035041663095ea7b3811461012957806318160ddd1461016157806323b872dd146101885780632e1a7d4d146101b25780633e33559f146101cc57806342135cb5146101e157806342df9383146101fc578063534db0e2146102115780635f58307d1461024257806364c9ec6f1461025a578063661884631461026f5780636cc6cde11461029357806370a08231146102a85780638da5cb5b146102c95780639df4d0fe146102de578063a4727272146102f3578063a9059cbb14610308578063b6b55f251461032c578063bcca80dd14610344578063d1996f4a1461035c578063d440796e14610374578063d73dd62314610389578063d8dfeb45146103ad578063dd62ed3e146103c2575b600080fd5b34801561013557600080fd5b5061014d600160a060020a03600435166024356103e9565b604080519115158252519081900360200190f35b34801561016d57600080fd5b5061017661044f565b60408051918252519081900360200190f35b34801561019457600080fd5b5061014d600160a060020a0360043581169060243516604435610455565b3480156101be57600080fd5b506101ca6004356105ca565b005b3480156101d857600080fd5b506101ca6106f1565b3480156101ed57600080fd5b506101ca60043560243561082a565b34801561020857600080fd5b50610176610a87565b34801561021d57600080fd5b50610226610a8d565b60408051600160a060020a039092168252519081900360200190f35b34801561024e57600080fd5b506101ca600435610a9c565b34801561026657600080fd5b50610176610eb2565b34801561027b57600080fd5b5061014d600160a060020a0360043516602435610eb8565b34801561029f57600080fd5b50610226610fa7565b3480156102b457600080fd5b50610176600160a060020a0360043516610fb6565b3480156102d557600080fd5b50610226610fd1565b3480156102ea57600080fd5b5061014d610fe0565b3480156102ff57600080fd5b50610176610fe9565b34801561031457600080fd5b5061014d600160a060020a0360043516602435610fef565b34801561033857600080fd5b506101ca6004356110ce565b34801561035057600080fd5b506101ca600435611212565b34801561036857600080fd5b506101ca60043561129a565b34801561038057600080fd5b5061022661185d565b34801561039557600080fd5b5061014d600160a060020a0360043516602435611871565b3480156103b957600080fd5b5061022661190a565b3480156103ce57600080fd5b50610176600160a060020a0360043581169060243516611919565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b600160a060020a03831660009081526020819052604081205482111561047a57600080fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156104aa57600080fd5b600160a060020a03831615156104bf57600080fd5b600160a060020a0384166000908152602081905260409020546104e8908363ffffffff61194416565b600160a060020a03808616600090815260208190526040808220939093559085168152205461051d908363ffffffff61195616565b600160a060020a0380851660009081526020818152604080832094909455918716815260028252828120338252909152205461055f908363ffffffff61194416565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b60035460ff1615610625576040805160e560020a62461bcd02815260206004820152601d60248201527f537562636861696e20697320616c7265616479206368616c656e676564000000604482015290519081900360640190fd5b33600090815260208190526040902054610645908263ffffffff61194416565b336000818152602081815260408083209490945560048054600554865160e160020a632be7f777028152928301959095526024820187905260448201949094529351600160a060020a03909316936357cfeeee9360648083019491928390030190829087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b505050506040513d60208110156106e157600080fd5b505115156106ee57600080fd5b50565b6003805460ff191660011790556008805473ffffffffffffffffffffffffffffffffffffffff1916339081179091554260095560048054600a54600554604080517f401e336700000000000000000000000000000000000000000000000000000000815294850195909552306024850152604484019190915260648301529151600160a060020a03929092169163401e3367916084808201926020929091908290030181600087803b1580156107a657600080fd5b505af11580156107ba573d6000803e3d6000fd5b505050506040513d60208110156107d057600080fd5b50511515610828576040805160e560020a62461bcd02815260206004820152601d60248201527f7472616e7366657246726f6d20776173206e6f7420706f737369626c65000000604482015290519081900360640190fd5b565b60035460ff161515610886576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7420796574206368616c6c656e6765640000000000000000000000000000604482015290519081900360640190fd5b60048054600554604080517fcf54a3d3000000000000000000000000000000000000000000000000000000008152339481019490945260006024850181905260448501869052606485019290925251600160a060020a039092169263cf54a3d39260848083019360209383900390910190829087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b505050506040513d602081101561093257600080fd5b5051151561093f57600080fd5b600480546040805160e160020a632be7f7770281523393810193909352602483018590526044830184905251600160a060020a03909116916357cfeeee9160648083019260209291908290030181600087803b15801561099e57600080fd5b505af11580156109b2573d6000803e3d6000fd5b505050506040513d60208110156109c857600080fd5b505115156109d557600080fd5b60048054604080517fa53171a4000000000000000000000000000000000000000000000000000000008152600093810184905260248101869052604481018590529051600160a060020a039092169263a53171a4926064808401936020939083900390910190829087803b158015610a4c57600080fd5b505af1158015610a60573d6000803e3d6000fd5b505050506040513d6020811015610a7657600080fd5b50511515610a8357600080fd5b5050565b60055481565b600854600160a060020a031681565b60035460ff161515610af8576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7420796574206368616c6c656e6765640000000000000000000000000000604482015290519081900360640190fd5b600954600360019054906101000a9004600160a060020a0316600160a060020a031663530230716040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b4e57600080fd5b505af1158015610b62573d6000803e3d6000fd5b505050506040513d6020811015610b7857600080fd5b5051600354604080517f0236b81700000000000000000000000000000000000000000000000000000000815260048101869052905163ffffffff90931692610100909204600160a060020a031691630236b817916024808201926020929091908290030181600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b50510111610c2557600080fd5b600354600654604080517f49469146000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051610100909304909116916349469146916044808201926020929091908290030181600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b505050506040513d6020811015610cc757600080fd5b50511515610cd457600080fd5b60048054600654600554604080517fcf54a3d3000000000000000000000000000000000000000000000000000000008152600160a060020a039384169581019590955260006024860181905260448601879052606486019290925251919092169263cf54a3d39260848083019360209390929083900390910190829087803b158015610d5f57600080fd5b505af1158015610d73573d6000803e3d6000fd5b505050506040513d6020811015610d8957600080fd5b50511515610d9657600080fd5b60048054600654600a546040805160e160020a632be7f777028152600160a060020a03938416958101959095526002909102602485015260448401859052519116916357cfeeee9160648083019260209291908290030181600087803b158015610dff57600080fd5b505af1158015610e13573d6000803e3d6000fd5b505050506040513d6020811015610e2957600080fd5b50511515610e3657600080fd5b60048054600a54604080517fa53171a40000000000000000000000000000000000000000000000000000000081526000948101859052600290920260248301526044820185905251600160a060020a039092169263a53171a4926064808401936020939083900390910190829087803b1580156106b757600080fd5b600a5481565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610f0c57336000908152600260209081526040808320600160a060020a0388168452909152812055610f41565b610f1c818463ffffffff61194416565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600654600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600754600160a060020a031681565b60035460ff1681565b60095481565b3360009081526020819052604081205482111561100b57600080fd5b600160a060020a038316151561102057600080fd5b33600090815260208190526040902054611040908363ffffffff61194416565b3360009081526020819052604080822092909255600160a060020a03851681522054611072908363ffffffff61195616565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b60035460ff1615611129576040805160e560020a62461bcd02815260206004820152601d60248201527f537562636861696e20697320616c7265616479206368616c656e676564000000604482015290519081900360640190fd5b60048054600554604080517f401e3367000000000000000000000000000000000000000000000000000000008152339481019490945230602485015260448401859052606484019190915251600160a060020a039091169163401e33679160848083019260209291908290030181600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050506040513d60208110156111d257600080fd5b505115156111df57600080fd5b336000908152602081905260409020546111ff908263ffffffff61195616565b3360009081526020819052604090205550565b600a81905560048054600654600554604080517f401e3367000000000000000000000000000000000000000000000000000000008152600160a060020a03938416958101959095523060248601526044850186905260648501919091525191169163401e33679160848083019260209291908290030181600087803b1580156106b757600080fd5b60035460ff1615156112f6576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7420796574206368616c6c656e6765640000000000000000000000000000604482015290519081900360640190fd5b600954600360019054906101000a9004600160a060020a0316600160a060020a031663530230716040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561134c57600080fd5b505af1158015611360573d6000803e3d6000fd5b505050506040513d602081101561137657600080fd5b5051600354604080517f0236b81700000000000000000000000000000000000000000000000000000000815260048101869052905163ffffffff90931692610100909204600160a060020a031691630236b817916024808201926020929091908290030181600087803b1580156113ec57600080fd5b505af1158015611400573d6000803e3d6000fd5b505050506040513d602081101561141657600080fd5b5051011161146e576040805160e560020a62461bcd02815260206004820152601960248201527f6368616c6c656e67696e6754696d6520746f6f206561726c7900000000000000604482015290519081900360640190fd5b600354600654604080517f49469146000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051610100909304909116916349469146916044808201926020929091908290030181600087803b1580156114e657600080fd5b505af11580156114fa573d6000803e3d6000fd5b505050506040513d602081101561151057600080fd5b505115611567576040805160e560020a62461bcd02815260206004820152601e60248201527f61726269747261746f72206973206e6f742077686974652d6c69737465640000604482015290519081900360640190fd5b60048054600854600554604080517fcf54a3d3000000000000000000000000000000000000000000000000000000008152600160a060020a039384169581019590955260006024860181905260448601879052606486019290925251919092169263cf54a3d39260848083019360209390929083900390910190829087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d602081101561161c57600080fd5b50511515611674576040805160e560020a62461bcd02815260206004820152601860248201527f686173426f785769746864726177616c203d3d66616c73650000000000000000604482015290519081900360640190fd5b60048054600854600a546040805160e160020a632be7f777028152600160a060020a03938416958101959095526002909102602485015260448401859052519116916357cfeeee9160648083019260209291908290030181600087803b1580156116dd57600080fd5b505af11580156116f1573d6000803e3d6000fd5b505050506040513d602081101561170757600080fd5b5051151561175f576040805160e560020a62461bcd02815260206004820152600f60248201527f7472616e73666572206661696c65640000000000000000000000000000000000604482015290519081900360640190fd5b60048054600a54604080517fa53171a40000000000000000000000000000000000000000000000000000000081526000948101859052600290920260248301526044820185905251600160a060020a039092169263a53171a4926064808401936020939083900390910190829087803b1580156117db57600080fd5b505af11580156117ef573d6000803e3d6000fd5b505050506040513d602081101561180557600080fd5b505115156106ee576040805160e560020a62461bcd02815260206004820152601b60248201527f207265636f7264426f785769746864726177616c206661696c65640000000000604482015290519081900360640190fd5b6003546101009004600160a060020a031681565b336000908152600260209081526040808320600160a060020a03861684529091528120546118a5908363ffffffff61195616565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600454600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60008282111561195057fe5b50900390565b8181018281101561196357fe5b929150505600a165627a7a72305820090be7ae5cc364060c44919dcb30af82fbd8c8fea7f42f5b93c2ce5d94fff7530029",
  "deployedBytecode": "0x6080604052600436106101245763ffffffff60e060020a600035041663095ea7b3811461012957806318160ddd1461016157806323b872dd146101885780632e1a7d4d146101b25780633e33559f146101cc57806342135cb5146101e157806342df9383146101fc578063534db0e2146102115780635f58307d1461024257806364c9ec6f1461025a578063661884631461026f5780636cc6cde11461029357806370a08231146102a85780638da5cb5b146102c95780639df4d0fe146102de578063a4727272146102f3578063a9059cbb14610308578063b6b55f251461032c578063bcca80dd14610344578063d1996f4a1461035c578063d440796e14610374578063d73dd62314610389578063d8dfeb45146103ad578063dd62ed3e146103c2575b600080fd5b34801561013557600080fd5b5061014d600160a060020a03600435166024356103e9565b604080519115158252519081900360200190f35b34801561016d57600080fd5b5061017661044f565b60408051918252519081900360200190f35b34801561019457600080fd5b5061014d600160a060020a0360043581169060243516604435610455565b3480156101be57600080fd5b506101ca6004356105ca565b005b3480156101d857600080fd5b506101ca6106f1565b3480156101ed57600080fd5b506101ca60043560243561082a565b34801561020857600080fd5b50610176610a87565b34801561021d57600080fd5b50610226610a8d565b60408051600160a060020a039092168252519081900360200190f35b34801561024e57600080fd5b506101ca600435610a9c565b34801561026657600080fd5b50610176610eb2565b34801561027b57600080fd5b5061014d600160a060020a0360043516602435610eb8565b34801561029f57600080fd5b50610226610fa7565b3480156102b457600080fd5b50610176600160a060020a0360043516610fb6565b3480156102d557600080fd5b50610226610fd1565b3480156102ea57600080fd5b5061014d610fe0565b3480156102ff57600080fd5b50610176610fe9565b34801561031457600080fd5b5061014d600160a060020a0360043516602435610fef565b34801561033857600080fd5b506101ca6004356110ce565b34801561035057600080fd5b506101ca600435611212565b34801561036857600080fd5b506101ca60043561129a565b34801561038057600080fd5b5061022661185d565b34801561039557600080fd5b5061014d600160a060020a0360043516602435611871565b3480156103b957600080fd5b5061022661190a565b3480156103ce57600080fd5b50610176600160a060020a0360043581169060243516611919565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b600160a060020a03831660009081526020819052604081205482111561047a57600080fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156104aa57600080fd5b600160a060020a03831615156104bf57600080fd5b600160a060020a0384166000908152602081905260409020546104e8908363ffffffff61194416565b600160a060020a03808616600090815260208190526040808220939093559085168152205461051d908363ffffffff61195616565b600160a060020a0380851660009081526020818152604080832094909455918716815260028252828120338252909152205461055f908363ffffffff61194416565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b60035460ff1615610625576040805160e560020a62461bcd02815260206004820152601d60248201527f537562636861696e20697320616c7265616479206368616c656e676564000000604482015290519081900360640190fd5b33600090815260208190526040902054610645908263ffffffff61194416565b336000818152602081815260408083209490945560048054600554865160e160020a632be7f777028152928301959095526024820187905260448201949094529351600160a060020a03909316936357cfeeee9360648083019491928390030190829087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b505050506040513d60208110156106e157600080fd5b505115156106ee57600080fd5b50565b6003805460ff191660011790556008805473ffffffffffffffffffffffffffffffffffffffff1916339081179091554260095560048054600a54600554604080517f401e336700000000000000000000000000000000000000000000000000000000815294850195909552306024850152604484019190915260648301529151600160a060020a03929092169163401e3367916084808201926020929091908290030181600087803b1580156107a657600080fd5b505af11580156107ba573d6000803e3d6000fd5b505050506040513d60208110156107d057600080fd5b50511515610828576040805160e560020a62461bcd02815260206004820152601d60248201527f7472616e7366657246726f6d20776173206e6f7420706f737369626c65000000604482015290519081900360640190fd5b565b60035460ff161515610886576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7420796574206368616c6c656e6765640000000000000000000000000000604482015290519081900360640190fd5b60048054600554604080517fcf54a3d3000000000000000000000000000000000000000000000000000000008152339481019490945260006024850181905260448501869052606485019290925251600160a060020a039092169263cf54a3d39260848083019360209383900390910190829087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b505050506040513d602081101561093257600080fd5b5051151561093f57600080fd5b600480546040805160e160020a632be7f7770281523393810193909352602483018590526044830184905251600160a060020a03909116916357cfeeee9160648083019260209291908290030181600087803b15801561099e57600080fd5b505af11580156109b2573d6000803e3d6000fd5b505050506040513d60208110156109c857600080fd5b505115156109d557600080fd5b60048054604080517fa53171a4000000000000000000000000000000000000000000000000000000008152600093810184905260248101869052604481018590529051600160a060020a039092169263a53171a4926064808401936020939083900390910190829087803b158015610a4c57600080fd5b505af1158015610a60573d6000803e3d6000fd5b505050506040513d6020811015610a7657600080fd5b50511515610a8357600080fd5b5050565b60055481565b600854600160a060020a031681565b60035460ff161515610af8576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7420796574206368616c6c656e6765640000000000000000000000000000604482015290519081900360640190fd5b600954600360019054906101000a9004600160a060020a0316600160a060020a031663530230716040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b4e57600080fd5b505af1158015610b62573d6000803e3d6000fd5b505050506040513d6020811015610b7857600080fd5b5051600354604080517f0236b81700000000000000000000000000000000000000000000000000000000815260048101869052905163ffffffff90931692610100909204600160a060020a031691630236b817916024808201926020929091908290030181600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b50510111610c2557600080fd5b600354600654604080517f49469146000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051610100909304909116916349469146916044808201926020929091908290030181600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b505050506040513d6020811015610cc757600080fd5b50511515610cd457600080fd5b60048054600654600554604080517fcf54a3d3000000000000000000000000000000000000000000000000000000008152600160a060020a039384169581019590955260006024860181905260448601879052606486019290925251919092169263cf54a3d39260848083019360209390929083900390910190829087803b158015610d5f57600080fd5b505af1158015610d73573d6000803e3d6000fd5b505050506040513d6020811015610d8957600080fd5b50511515610d9657600080fd5b60048054600654600a546040805160e160020a632be7f777028152600160a060020a03938416958101959095526002909102602485015260448401859052519116916357cfeeee9160648083019260209291908290030181600087803b158015610dff57600080fd5b505af1158015610e13573d6000803e3d6000fd5b505050506040513d6020811015610e2957600080fd5b50511515610e3657600080fd5b60048054600a54604080517fa53171a40000000000000000000000000000000000000000000000000000000081526000948101859052600290920260248301526044820185905251600160a060020a039092169263a53171a4926064808401936020939083900390910190829087803b1580156106b757600080fd5b600a5481565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610f0c57336000908152600260209081526040808320600160a060020a0388168452909152812055610f41565b610f1c818463ffffffff61194416565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600654600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600754600160a060020a031681565b60035460ff1681565b60095481565b3360009081526020819052604081205482111561100b57600080fd5b600160a060020a038316151561102057600080fd5b33600090815260208190526040902054611040908363ffffffff61194416565b3360009081526020819052604080822092909255600160a060020a03851681522054611072908363ffffffff61195616565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b60035460ff1615611129576040805160e560020a62461bcd02815260206004820152601d60248201527f537562636861696e20697320616c7265616479206368616c656e676564000000604482015290519081900360640190fd5b60048054600554604080517f401e3367000000000000000000000000000000000000000000000000000000008152339481019490945230602485015260448401859052606484019190915251600160a060020a039091169163401e33679160848083019260209291908290030181600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050506040513d60208110156111d257600080fd5b505115156111df57600080fd5b336000908152602081905260409020546111ff908263ffffffff61195616565b3360009081526020819052604090205550565b600a81905560048054600654600554604080517f401e3367000000000000000000000000000000000000000000000000000000008152600160a060020a03938416958101959095523060248601526044850186905260648501919091525191169163401e33679160848083019260209291908290030181600087803b1580156106b757600080fd5b60035460ff1615156112f6576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7420796574206368616c6c656e6765640000000000000000000000000000604482015290519081900360640190fd5b600954600360019054906101000a9004600160a060020a0316600160a060020a031663530230716040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561134c57600080fd5b505af1158015611360573d6000803e3d6000fd5b505050506040513d602081101561137657600080fd5b5051600354604080517f0236b81700000000000000000000000000000000000000000000000000000000815260048101869052905163ffffffff90931692610100909204600160a060020a031691630236b817916024808201926020929091908290030181600087803b1580156113ec57600080fd5b505af1158015611400573d6000803e3d6000fd5b505050506040513d602081101561141657600080fd5b5051011161146e576040805160e560020a62461bcd02815260206004820152601960248201527f6368616c6c656e67696e6754696d6520746f6f206561726c7900000000000000604482015290519081900360640190fd5b600354600654604080517f49469146000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051610100909304909116916349469146916044808201926020929091908290030181600087803b1580156114e657600080fd5b505af11580156114fa573d6000803e3d6000fd5b505050506040513d602081101561151057600080fd5b505115611567576040805160e560020a62461bcd02815260206004820152601e60248201527f61726269747261746f72206973206e6f742077686974652d6c69737465640000604482015290519081900360640190fd5b60048054600854600554604080517fcf54a3d3000000000000000000000000000000000000000000000000000000008152600160a060020a039384169581019590955260006024860181905260448601879052606486019290925251919092169263cf54a3d39260848083019360209390929083900390910190829087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d602081101561161c57600080fd5b50511515611674576040805160e560020a62461bcd02815260206004820152601860248201527f686173426f785769746864726177616c203d3d66616c73650000000000000000604482015290519081900360640190fd5b60048054600854600a546040805160e160020a632be7f777028152600160a060020a03938416958101959095526002909102602485015260448401859052519116916357cfeeee9160648083019260209291908290030181600087803b1580156116dd57600080fd5b505af11580156116f1573d6000803e3d6000fd5b505050506040513d602081101561170757600080fd5b5051151561175f576040805160e560020a62461bcd02815260206004820152600f60248201527f7472616e73666572206661696c65640000000000000000000000000000000000604482015290519081900360640190fd5b60048054600a54604080517fa53171a40000000000000000000000000000000000000000000000000000000081526000948101859052600290920260248301526044820185905251600160a060020a039092169263a53171a4926064808401936020939083900390910190829087803b1580156117db57600080fd5b505af11580156117ef573d6000803e3d6000fd5b505050506040513d602081101561180557600080fd5b505115156106ee576040805160e560020a62461bcd02815260206004820152601b60248201527f207265636f7264426f785769746864726177616c206661696c65640000000000604482015290519081900360640190fd5b6003546101009004600160a060020a031681565b336000908152600260209081526040808320600160a060020a03861684529091528120546118a5908363ffffffff61195616565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600454600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60008282111561195057fe5b50900390565b8181018281101561196357fe5b929150505600a165627a7a72305820090be7ae5cc364060c44919dcb30af82fbd8c8fea7f42f5b93c2ce5d94fff7530029",
  "sourceMap": "809:3431:5:-;;;921:32;;;-1:-1:-1;;921:32:5;;;1217:272;5:2:-1;;;;30:1;27;20:12;5:2;1217:272:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1356:10;:24;;-1:-1:-1;;;;;1356:24:5;;;-1:-1:-1;;;;;;1356:24:5;;;;;;;1390:7;:18;;;;;1356:24;1390:18;-1:-1:-1;;;;;;1390:18:5;;;;;;;;;;1418:13;:30;;;;1458:10;:24;;;;;;;;;;;809:3431;;;;;;",
  "deployedSourceMap": "809:3431:5:-;;;;;;;;;-1:-1:-1;;;809:3431:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1814:188:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1814:188:14;-1:-1:-1;;;;;1814:188:14;;;;;;;;;;;;;;;;;;;;;;;;;389:83:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;389:83:11;;;;;;;;;;;;;;;;;;;;726:470:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;726:470:14;-1:-1:-1;;;;;726:470:14;;;;;;;;;;;;1930:249:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1930:249:5;;;;;;;2185:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2185:251:5;;;;2447:363;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2447:363:5;;;;;;;1035:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1035:28:5;;;;1126:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1126:25:5;;;;;;;;-1:-1:-1;;;;;1126:25:5;;;;;;;;;;;;;;2930:513;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2930:513:5;;;;;1191:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1191:19:5;;;;3679:432:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3679:432:14;-1:-1:-1;;;;;3679:432:14;;;;;;;1069:25:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1069:25:5;;;;1149:99:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1149:99:11;-1:-1:-1;;;;;1149:99:11;;;;;1100:20:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1100:20:5;;;;921:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;921:32:5;;;;1157:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1157:28:5;;;;626:321:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;626:321:11;-1:-1:-1;;;;;626:321:11;;;;;;;1662:258:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1662:258:5;;;;;1495:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1495:157:5;;;;;3583:655;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3583:655:5;;;;;959:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;959:31:5;;;;2926:296:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2926:296:14;-1:-1:-1;;;;;2926:296:14;;;;;;;996:33:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;996:33:5;;;;2321:153:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2321:153:14;-1:-1:-1;;;;;2321:153:14;;;;;;;;;;1814:188;1901:10;1881:4;1893:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1893:29:14;;;;;;;;;;;:38;;;1942;;;;;;;1881:4;;1893:29;;1901:10;;1942:38;;;;;;;;-1:-1:-1;1993:4:14;1814:188;;;;:::o;389:83:11:-;455:12;;389:83;:::o;726:470:14:-;-1:-1:-1;;;;;864:15:14;;832:4;864:15;;;;;;;;;;;854:25;;;846:34;;;;;;-1:-1:-1;;;;;904:14:14;;;;;;:7;:14;;;;;;;;919:10;904:26;;;;;;;;894:36;;;886:45;;;;;;-1:-1:-1;;;;;945:17:14;;;;937:26;;;;;;-1:-1:-1;;;;;988:15:14;;:8;:15;;;;;;;;;;;:27;;1008:6;988:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;970:15:14;;;:8;:15;;;;;;;;;;;:45;;;;1037:13;;;;;;;:25;;1055:6;1037:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1021:13:14;;;:8;:13;;;;;;;;;;;:41;;;;1097:14;;;;;:7;:14;;;;;1112:10;1097:26;;;;;;;:38;;1128:6;1097:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;1068:14:14;;;;;;;:7;:14;;;;;;;;1083:10;1068:26;;;;;;;;:67;;;;1146:28;;;;;;;;;;;1068:14;;1146:28;;;;;;;;;;;-1:-1:-1;1187:4:14;726:470;;;;;:::o;1930:249:5:-;1988:12;;;;1987:13;1979:55;;;;;-1:-1:-1;;;;;1979:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;2076:10;2067:8;:20;;;;;;;;;;;:32;;2092:6;2067:32;:24;:32;:::i;:::-;2053:10;2044:8;:20;;;;;;;;;;;:55;;;;2117:10;;;2157:13;;2117:54;;-1:-1:-1;;;;;2117:54:5;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2117:10:5;;;;:19;;:54;;;;;;;;;;;;;;:10;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;2117:54:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2117:54:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2117:54:5;2109:63;;;;;;;;1930:249;:::o;2185:251::-;2234:12;:19;;-1:-1:-1;;2234:19:5;2249:4;2234:19;;;2263:10;:23;;-1:-1:-1;;2263:23:5;2276:10;2263:23;;;;;;2312:3;2296:13;:19;2333:10;;;2375:4;;2381:13;;2333:62;;;;;;;;;;;;;2369:4;2333:62;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2333:10:5;;;;;:23;;:62;;;;;;;;;;;;;;;2234:12;2333:10;:62;;;5:2:-1;;;;30:1;27;20:12;5:2;2333:62:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2333:62:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2333:62:5;2325:104;;;;;;;-1:-1:-1;;;;;2325:104:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:251::o;2447:363::-;2534:12;;;;2526:43;;;;;;;-1:-1:-1;;;;;2526:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;2587:10;;;2646:13;;2587:73;;;;;;2615:10;2587:73;;;;;;;:10;:73;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2587:10:5;;;;:27;;:73;;;;;;;;;;;;;;;;:10;:73;;;5:2:-1;;;;30:1;27;20:12;5:2;2587:73:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2587:73:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2587:73:5;2579:82;;;;;;;;2679:10;;;:47;;;-1:-1:-1;;;;;2679:47:5;;2699:10;2679:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2679:10:5;;;;:19;;:47;;;;;;;;;;;;;;:10;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;2679:47:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2679:47:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2679:47:5;2671:56;;;;;;;;2745:10;;;:57;;;;;;:10;:57;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2745:10:5;;;;:30;;:57;;;;;;;;;;;;;;;;;:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;2745:57:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2745:57:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2745:57:5;2737:66;;;;;;;;2447:363;;:::o;1035:28::-;;;;:::o;1126:25::-;;;-1:-1:-1;;;;;1126:25:5;;:::o;2930:513::-;3004:12;;;;2996:43;;;;;;;-1:-1:-1;;;;;2996:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3118:13;;3091:7;;;;;;;;;-1:-1:-1;;;;;3091:7:5;-1:-1:-1;;;;;3091:22:5;;:24;;;;;-1:-1:-1;;;3091:24:5;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3091:24:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3091:24:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3091:24:5;3057:7;;:31;;;;;;;;;;;;;;:58;;;;;:7;;;;-1:-1:-1;;;;;3057:7:5;;:23;;:31;;;;;3091:24;;3057:31;;;;;;;;-1:-1:-1;3057:7:5;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;3057:31:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3057:31:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3057:31:5;:58;:74;3049:83;;;;;;3150:7;;3182:10;;3150:51;;;;;;-1:-1:-1;;;;;3182:10:5;;;3150:51;;;;;;;;;;;;:7;;;;;;;;:31;;:51;;;;;;;;;;;;;;;-1:-1:-1;3150:7:5;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;3150:51:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3150:51:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3150:51:5;3142:60;;;;;;;;3220:10;;;3248;;3279:13;;3220:73;;;;;;-1:-1:-1;;;;;3248:10:5;;;3220:73;;;;;;;:10;:73;;;;;;;;;;;;;;;;;;;;:10;;;;;:27;;:73;;;;;;;;;;;;;;;;;;;:10;:73;;;5:2:-1;;;;30:1;27;20:12;5:2;3220:73:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3220:73:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3220:73:5;3212:82;;;;;;;;3312:10;;;3332;;3346:4;;3312:47;;;-1:-1:-1;;;;;3312:47:5;;-1:-1:-1;;;;;3332:10:5;;;3312:47;;;;;;;3344:1;:6;;;3312:47;;;;;;;;;;;:10;;;:19;;:47;;;;;;;;;;;;;;:10;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;3312:47:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3312:47:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3312:47:5;3304:56;;;;;;;;3378:10;;;3422:4;;3378:57;;;;;;:10;:57;;;;;;3420:1;:6;;;3378:57;;;;;;;;;;;-1:-1:-1;;;;;3378:10:5;;;;:30;;:57;;;;;;;;;;;;;;;;;:10;:57;;;5:2:-1;;;;30:1;27;20:12;1191:19:5;;;;:::o;3679:432:14:-;3826:10;3785:4;3818:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3818:29:14;;;;;;;;;;3857:28;;;3853:165;;3903:10;3927:1;3895:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3895:29:14;;;;;;;;;:33;3853:165;;;3981:30;:8;3994:16;3981:30;:12;:30;:::i;:::-;3957:10;3949:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3949:29:14;;;;;;;;;:62;3853:165;4037:10;4059:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;4028:61:14;;4059:29;;;;;;;;;;;4028:61;;;;;;;;;4037:10;4028:61;;;;;;;;;;;-1:-1:-1;4102:4:14;;3679:432;-1:-1:-1;;;3679:432:14:o;1069:25:5:-;;;-1:-1:-1;;;;;1069:25:5;;:::o;1149:99:11:-;-1:-1:-1;;;;;1227:16:11;1205:7;1227:16;;;;;;;;;;;;1149:99::o;1100:20:5:-;;;-1:-1:-1;;;;;1100:20:5;;:::o;921:32::-;;;;;;:::o;1157:28::-;;;;:::o;626:321:11:-;728:10;689:4;719:20;;;;;;;;;;;709:30;;;701:39;;;;;;-1:-1:-1;;;;;754:17:11;;;;746:26;;;;;;811:10;802:8;:20;;;;;;;;;;;:32;;827:6;802:32;:24;:32;:::i;:::-;788:10;779:8;:20;;;;;;;;;;;:55;;;;-1:-1:-1;;;;;856:13:11;;;;;;:25;;874:6;856:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;840:13:11;;:8;:13;;;;;;;;;;;;:41;;;;892:33;;;;;;;840:13;;901:10;;892:33;;;;;;;;;;-1:-1:-1;938:4:11;626:321;;;;:::o;1662:258:5:-;1719:12;;;;1718:13;1710:55;;;;;-1:-1:-1;;;;;1710:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1783:10;;;1833:13;;1783:64;;;;;;1807:10;1783:64;;;;;;;1819:4;1783:64;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1783:10:5;;;;:23;;:64;;;;;;;;;;;;;;:10;;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;1783:64:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1783:64:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1783:64:5;1775:73;;;;;;;;1890:10;1881:8;:20;;;;;;;;;;;:32;;1906:6;1881:32;:24;:32;:::i;:::-;1867:10;1858:8;:20;;;;;;;;;;:55;-1:-1:-1;1662:258:5:o;1495:157::-;1552:4;:12;;;1582:10;;;1606;;1630:13;;1582:62;;;;;;-1:-1:-1;;;;;1606:10:5;;;1582:62;;;;;;;1618:4;1582:62;;;;;;;;;;;;;;;;;;:10;;;:23;;:62;;;;;;;;;;;;;;:10;;:62;;;5:2:-1;;;;30:1;27;20:12;3583:655:5;3657:12;;;;3649:43;;;;;;;-1:-1:-1;;;;;3649:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3771:13;;3744:7;;;;;;;;;-1:-1:-1;;;;;3744:7:5;-1:-1:-1;;;;;3744:22:5;;:24;;;;;-1:-1:-1;;;3744:24:5;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3744:24:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3744:24:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3744:24:5;3710:7;;:31;;;;;;;;;;;;;;:58;;;;;:7;;;;-1:-1:-1;;;;;3710:7:5;;:23;;:31;;;;;3744:24;;3710:31;;;;;;;;-1:-1:-1;3710:7:5;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;3710:31:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3710:31:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3710:31:5;:58;:74;3702:112;;;;;-1:-1:-1;;;;;3702:112:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3833:7;;3865:10;;3833:51;;;;;;-1:-1:-1;;;;;3865:10:5;;;3833:51;;;;;;;;;;;;:7;;;;;;;;:31;;:51;;;;;;;;;;;;;;;-1:-1:-1;3833:7:5;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;3833:51:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3833:51:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3833:51:5;3832:52;3824:95;;;;;-1:-1:-1;;;;;3824:95:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3937:10;;;3965;;3996:13;;3937:73;;;;;;-1:-1:-1;;;;;3965:10:5;;;3937:73;;;;;;;:10;:73;;;;;;;;;;;;;;;;;;;;:10;;;;;:27;;:73;;;;;;;;;;;;;;;;;;;:10;:73;;;5:2:-1;;;;30:1;27;20:12;5:2;3937:73:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3937:73:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3937:73:5;3929:110;;;;;;;-1:-1:-1;;;;;3929:110:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4057:10;;;4077;;4091:4;;4057:47;;;-1:-1:-1;;;;;4057:47:5;;-1:-1:-1;;;;;4077:10:5;;;4057:47;;;;;;;4089:1;:6;;;4057:47;;;;;;;;;;;:10;;;:19;;:47;;;;;;;;;;;;;;:10;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;4057:47:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4057:47:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4057:47:5;4049:75;;;;;;;-1:-1:-1;;;;;4049:75:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4142:10;;;4186:4;;4142:57;;;;;;:10;:57;;;;;;4184:1;:6;;;4142:57;;;;;;;;;;;-1:-1:-1;;;;;4142:10:5;;;;:30;;:57;;;;;;;;;;;;;;;;;:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;4142:57:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4142:57:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4142:57:5;4134:97;;;;;;;-1:-1:-1;;;;;4134:97:5;;;;;;;;;;;;;;;;;;;;;;;;;;;959:31;;;;;;-1:-1:-1;;;;;959:31:5;;:::o;2926:296:14:-;3089:10;3027:4;3081:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3081:29:14;;;;;;;;;;:46;;3115:11;3081:46;:33;:46;:::i;:::-;3049:10;3041:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3041:29:14;;;;;;;;;;;;:87;;;3139:61;;;;;;3041:29;;3139:61;;;;;;;;;;;-1:-1:-1;3213:4:14;2926:296;;;;:::o;996:33:5:-;;;-1:-1:-1;;;;;996:33:5;;:::o;2321:153:14:-;-1:-1:-1;;;;;2444:15:14;;;2420:7;2444:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2321:153::o;1060:116:10:-;1120:7;1142:8;;;;1135:16;;;;-1:-1:-1;1164:7:10;;;1060:116::o;1238:128::-;1319:7;;;1339;;;;1332:15;;;;1238:128;;;;:::o",
  "source": "pragma solidity ^0.4.22;\n\nimport \"./ForkonomicToken.sol\";\nimport \"./ForkonomicSystem.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol\";\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n/* THis contract allows people to use the ERC20 standard for their forkonomicTokens. \nThe ERC20 stnadard can be used and all answers from the abritrator are processedvery quickly,\nuntil he is getting malicious. Then this needs to be reported by challengeing the arbitrator\nin this contracts.\n\nOnce the arbitrator is challenged, eveyone needs to withdraw their funds using the forkonomic \nprotocoll. Smart contracts using this token as collateral should aksi process the tokens\n with the usual forkonomic protcoll and can no longer reley on this quick process.\"\n*/\n\n// bondedWorldView\n\ncontract SubChain is StandardToken {\n    using SafeMath for uint256;\n\n    bytes32 constant NULL_HASH = \"\";\n\n    bool public isChallenged = false;\n    ForkonomicSystem public fSystem;\n    ForkonomicToken public collateral;\n    bytes32 public fundingBranch;\n    address public arbitrator;\n    address public owner;\n    address public challenger;\n    uint256 public challengeTime;\n    uint256 public bond;\n\n    constructor( ForkonomicToken collateral_, ForkonomicSystem fSystem_,\n        bytes32 fundingBranch_, address arbitrator_) public {\n        collateral = collateral_;\n        fSystem = fSystem_;\n        fundingBranch = fundingBranch_;\n        arbitrator = arbitrator_;\n    }\n\n    function providInitialBond (uint bond_) public {\n        bond = bond_;\n        require(collateral.transferFrom(arbitrator, this, bond, fundingBranch));\n    }\n    \n    function deposit (uint amount) public {\n        require(!isChallenged, \"Subchain is already chalenged\");\n        require(collateral.transferFrom(msg.sender, this, amount, fundingBranch));\n        balances[msg.sender] = balances[msg.sender].add(amount);\n    }\n    \n    function withdraw (uint amount) public {\n        require(!isChallenged, \"Subchain is already chalenged\");\n        balances[msg.sender] = balances[msg.sender].sub(amount);\n        require(collateral.transfer(msg.sender, amount, fundingBranch));\n    }\n\n    function challengeArbitrator () public {\n        isChallenged = true;\n        challenger = msg.sender;\n        challengeTime = now;\n        require(collateral.transferFrom(msg.sender, this, bond, fundingBranch), \"transferFrom was not possible\");\n    }\n     \n    function withdrawAfterChallenge (uint amount, bytes32 branch) public {\n        require(isChallenged, \"not yet challenged\");\n        require(collateral.hasBoxWithdrawal(msg.sender, NULL_HASH, branch, fundingBranch));\n        require(collateral.transfer(msg.sender, amount, branch));\n        require(collateral.recordBoxWithdrawal(NULL_HASH, amount, branch));\n    }   \n\n    //arbitrator can withdraw his bond + challenger funds on all branches, where he is still a valid arbitrato\n    function withdrawalForArbitrator(bytes32 branch) public {\n        require(isChallenged, \"not yet challenged\");\n        require(fSystem.branchTimestamp(branch) + fSystem.WINDOWTIMESPAN() > challengeTime);\n        require(fSystem.isArbitratorWhitelisted(arbitrator, branch));\n        require(collateral.hasBoxWithdrawal(arbitrator, NULL_HASH, branch, fundingBranch));\n        require(collateral.transfer(arbitrator, 2*bond, branch));\n        require(collateral.recordBoxWithdrawal(NULL_HASH, 2*bond, branch));\n    }\n\n    //challenger can withdraw his bond + arbitrator funds on all branches,\n    // where the arbitrator is no longer a valid arbitrato\n    function withdrawalForChallenger(bytes32 branch) public {\n        require(isChallenged, \"not yet challenged\");\n        require(fSystem.branchTimestamp(branch) + fSystem.WINDOWTIMESPAN() > challengeTime, \"challengingTime too early\");\n        require(!fSystem.isArbitratorWhitelisted(arbitrator, branch), \"arbitrator is not white-listed\");\n        require(collateral.hasBoxWithdrawal(challenger, NULL_HASH, branch, fundingBranch), \"hasBoxWithdrawal ==false\");\n        require(collateral.transfer(challenger, 2*bond, branch), \"transfer failed\");\n        require(collateral.recordBoxWithdrawal(NULL_HASH, 2*bond, branch), \" recordBoxWithdrawal failed\");\n    }\n}",
  "sourcePath": "/home/josojo/reality/subjectivocracy/contracts/Subchain.sol",
  "ast": {
    "absolutePath": "/home/josojo/reality/subjectivocracy/contracts/Subchain.sol",
    "exportedSymbols": {
      "SubChain": [
        2678
      ]
    },
    "id": 2679,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2321,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".22"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:5"
      },
      {
        "absolutePath": "/home/josojo/reality/subjectivocracy/contracts/ForkonomicToken.sol",
        "file": "./ForkonomicToken.sol",
        "id": 2322,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 2263,
        "src": "26:31:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/josojo/reality/subjectivocracy/contracts/ForkonomicSystem.sol",
        "file": "./ForkonomicSystem.sol",
        "id": 2323,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 1314,
        "src": "58:32:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "id": 2324,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 5379,
        "src": "91:71:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 2325,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 4961,
        "src": "164:59:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2326,
              "name": "StandardToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5378,
              "src": "830:13:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardToken_$5378",
                "typeString": "contract StandardToken"
              }
            },
            "id": 2327,
            "nodeType": "InheritanceSpecifier",
            "src": "830:13:5"
          }
        ],
        "contractDependencies": [
          5056,
          5099,
          5131,
          5378
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2678,
        "linearizedBaseContracts": [
          2678,
          5378,
          5056,
          5099,
          5131
        ],
        "name": "SubChain",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2330,
            "libraryName": {
              "contractScope": null,
              "id": 2328,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4960,
              "src": "856:8:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4960",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "850:27:5",
            "typeName": {
              "id": 2329,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "869:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2333,
            "name": "NULL_HASH",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "883:31:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2331,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "883:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "",
              "id": 2332,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "912:2:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                "typeString": "literal_string \"\""
              },
              "value": ""
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2336,
            "name": "isChallenged",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "921:32:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2334,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "921:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 2335,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "948:5:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2338,
            "name": "fSystem",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "959:31:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
              "typeString": "contract ForkonomicSystem"
            },
            "typeName": {
              "contractScope": null,
              "id": 2337,
              "name": "ForkonomicSystem",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1313,
              "src": "959:16:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                "typeString": "contract ForkonomicSystem"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2340,
            "name": "collateral",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "996:33:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
              "typeString": "contract ForkonomicToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 2339,
              "name": "ForkonomicToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2262,
              "src": "996:15:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                "typeString": "contract ForkonomicToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2342,
            "name": "fundingBranch",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1035:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2341,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1035:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2344,
            "name": "arbitrator",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1069:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2343,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1069:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2346,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1100:20:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2345,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1100:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2348,
            "name": "challenger",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1126:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2347,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1126:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2350,
            "name": "challengeTime",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1157:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2349,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1157:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2352,
            "name": "bond",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1191:19:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2351,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1191:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2379,
              "nodeType": "Block",
              "src": "1346:143:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2363,
                      "name": "collateral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2340,
                      "src": "1356:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                        "typeString": "contract ForkonomicToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2364,
                      "name": "collateral_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2354,
                      "src": "1369:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                        "typeString": "contract ForkonomicToken"
                      }
                    },
                    "src": "1356:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                      "typeString": "contract ForkonomicToken"
                    }
                  },
                  "id": 2366,
                  "nodeType": "ExpressionStatement",
                  "src": "1356:24:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2367,
                      "name": "fSystem",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2338,
                      "src": "1390:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                        "typeString": "contract ForkonomicSystem"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2368,
                      "name": "fSystem_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2356,
                      "src": "1400:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                        "typeString": "contract ForkonomicSystem"
                      }
                    },
                    "src": "1390:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                      "typeString": "contract ForkonomicSystem"
                    }
                  },
                  "id": 2370,
                  "nodeType": "ExpressionStatement",
                  "src": "1390:18:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2371,
                      "name": "fundingBranch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2342,
                      "src": "1418:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2372,
                      "name": "fundingBranch_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2358,
                      "src": "1434:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1418:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2374,
                  "nodeType": "ExpressionStatement",
                  "src": "1418:30:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2375,
                      "name": "arbitrator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2344,
                      "src": "1458:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2376,
                      "name": "arbitrator_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2360,
                      "src": "1471:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1458:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2378,
                  "nodeType": "ExpressionStatement",
                  "src": "1458:24:5"
                }
              ]
            },
            "documentation": null,
            "id": 2380,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2354,
                  "name": "collateral_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1230:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                    "typeString": "contract ForkonomicToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2353,
                    "name": "ForkonomicToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2262,
                    "src": "1230:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                      "typeString": "contract ForkonomicToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2356,
                  "name": "fSystem_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1259:25:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                    "typeString": "contract ForkonomicSystem"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2355,
                    "name": "ForkonomicSystem",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1313,
                    "src": "1259:16:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                      "typeString": "contract ForkonomicSystem"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2358,
                  "name": "fundingBranch_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1294:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2357,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1294:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2360,
                  "name": "arbitrator_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1318:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2359,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1318:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1228:110:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2362,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1346:0:5"
            },
            "scope": 2678,
            "src": "1217:272:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2399,
              "nodeType": "Block",
              "src": "1542:110:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2385,
                      "name": "bond",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2352,
                      "src": "1552:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2386,
                      "name": "bond_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2382,
                      "src": "1559:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1552:12:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2388,
                  "nodeType": "ExpressionStatement",
                  "src": "1552:12:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2392,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "1606:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2393,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5434,
                            "src": "1618:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2394,
                            "name": "bond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2352,
                            "src": "1624:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2395,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "1630:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2390,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "1582:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1865,
                          "src": "1582:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1582:62:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2389,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "1574:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1574:71:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2398,
                  "nodeType": "ExpressionStatement",
                  "src": "1574:71:5"
                }
              ]
            },
            "documentation": null,
            "id": 2400,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "providInitialBond",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2383,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2382,
                  "name": "bond_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2400,
                  "src": "1523:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2381,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1523:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1522:12:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2384,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1542:0:5"
            },
            "scope": 2678,
            "src": "1495:157:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2435,
              "nodeType": "Block",
              "src": "1700:220:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1718:13:5",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 2406,
                          "name": "isChallenged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2336,
                          "src": "1719:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537562636861696e20697320616c7265616479206368616c656e676564",
                        "id": 2408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1733:31:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        },
                        "value": "Subchain is already chalenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        }
                      ],
                      "id": 2405,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "1710:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1710:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2410,
                  "nodeType": "ExpressionStatement",
                  "src": "1710:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2414,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "1807:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1807:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2416,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5434,
                            "src": "1819:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2417,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2402,
                            "src": "1825:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2418,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "1833:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2412,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "1783:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1865,
                          "src": "1783:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1783:64:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2411,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "1775:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1775:73:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2421,
                  "nodeType": "ExpressionStatement",
                  "src": "1775:73:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2422,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4973,
                        "src": "1858:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2425,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2423,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "1867:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1867:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1858:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2431,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2402,
                          "src": "1906:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2426,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4973,
                            "src": "1881:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2429,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2427,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "1890:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1890:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1881:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4959,
                        "src": "1881:24:5",
                        "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": 2432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1881:32:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1858:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2434,
                  "nodeType": "ExpressionStatement",
                  "src": "1858:55:5"
                }
              ]
            },
            "documentation": null,
            "id": 2436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2403,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2402,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2436,
                  "src": "1680:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2401,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1680:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1679:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2404,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1700:0:5"
            },
            "scope": 2678,
            "src": "1662:258:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2470,
              "nodeType": "Block",
              "src": "1969:210:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1987:13:5",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 2442,
                          "name": "isChallenged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2336,
                          "src": "1988:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537562636861696e20697320616c7265616479206368616c656e676564",
                        "id": 2444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2002:31:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        },
                        "value": "Subchain is already chalenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        }
                      ],
                      "id": 2441,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "1979:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1979:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2446,
                  "nodeType": "ExpressionStatement",
                  "src": "1979:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2447,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4973,
                        "src": "2044:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2450,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2448,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "2053:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2053:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2044:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2456,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2438,
                          "src": "2092:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2451,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4973,
                            "src": "2067:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2454,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2452,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2076:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2076:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2067:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4935,
                        "src": "2067:24:5",
                        "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": 2457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2067:32:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2044:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2459,
                  "nodeType": "ExpressionStatement",
                  "src": "2044:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2463,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2137:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2137:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2465,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2438,
                            "src": "2149:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2466,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "2157:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2461,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2117:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "2117:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2117:54:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2460,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2109:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2109:63:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2469,
                  "nodeType": "ExpressionStatement",
                  "src": "2109:63:5"
                }
              ]
            },
            "documentation": null,
            "id": 2471,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdraw",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2438,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2471,
                  "src": "1949:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2437,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1948:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1969:0:5"
            },
            "scope": 2678,
            "src": "1930:249:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2499,
              "nodeType": "Block",
              "src": "2224:212:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2474,
                      "name": "isChallenged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2336,
                      "src": "2234:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2249:4:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2234:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2477,
                  "nodeType": "ExpressionStatement",
                  "src": "2234:19:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2478,
                      "name": "challenger",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2348,
                      "src": "2263:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2479,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5393,
                        "src": "2276:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2276:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2263:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2482,
                  "nodeType": "ExpressionStatement",
                  "src": "2263:23:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2483,
                      "name": "challengeTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2350,
                      "src": "2296:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2484,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5395,
                      "src": "2312:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2296:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2486,
                  "nodeType": "ExpressionStatement",
                  "src": "2296:19:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2490,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2357:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2357:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2492,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5434,
                            "src": "2369:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2493,
                            "name": "bond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2352,
                            "src": "2375:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2494,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "2381:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2488,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2333:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1865,
                          "src": "2333:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2333:62:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e7366657246726f6d20776173206e6f7420706f737369626c65",
                        "id": 2496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2397:31:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e620e1eed456973fee16075a43afd413286dee27336c1a0283e31c3e90ae4939",
                          "typeString": "literal_string \"transferFrom was not possible\""
                        },
                        "value": "transferFrom was not possible"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e620e1eed456973fee16075a43afd413286dee27336c1a0283e31c3e90ae4939",
                          "typeString": "literal_string \"transferFrom was not possible\""
                        }
                      ],
                      "id": 2487,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "2325:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2325:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2498,
                  "nodeType": "ExpressionStatement",
                  "src": "2325:104:5"
                }
              ]
            },
            "documentation": null,
            "id": 2500,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "challengeArbitrator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2214:2:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2224:0:5"
            },
            "scope": 2678,
            "src": "2185:251:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2542,
              "nodeType": "Block",
              "src": "2516:294:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2508,
                        "name": "isChallenged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2336,
                        "src": "2534:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420796574206368616c6c656e676564",
                        "id": 2509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2548:20:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        },
                        "value": "not yet challenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        }
                      ],
                      "id": 2507,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "2526:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2526:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2511,
                  "nodeType": "ExpressionStatement",
                  "src": "2526:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2515,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2615:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2615:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2517,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "2627:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2518,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "2638:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2519,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "2646:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2513,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2587:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2141,
                          "src": "2587:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2587:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2512,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2579:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2579:82:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2522,
                  "nodeType": "ExpressionStatement",
                  "src": "2579:82:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2526,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2699:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2699:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2528,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2502,
                            "src": "2711:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2529,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "2719:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2524,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2679:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "2679:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2679:47:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2523,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2671:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2671:56:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2532,
                  "nodeType": "ExpressionStatement",
                  "src": "2671:56:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2536,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "2776:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2537,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2502,
                            "src": "2787:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2538,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "2795:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2534,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2745:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "recordBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2088,
                          "src": "2745:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2745:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2533,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2737:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2737:66:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2541,
                  "nodeType": "ExpressionStatement",
                  "src": "2737:66:5"
                }
              ]
            },
            "documentation": null,
            "id": 2543,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdrawAfterChallenge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2502,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2543,
                  "src": "2480:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2501,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2480:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2504,
                  "name": "branch",
                  "nodeType": "VariableDeclaration",
                  "scope": 2543,
                  "src": "2493:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2503,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2493:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2479:29:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2506,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2516:0:5"
            },
            "scope": 2678,
            "src": "2447:363:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2606,
              "nodeType": "Block",
              "src": "2986:457:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2549,
                        "name": "isChallenged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2336,
                        "src": "3004:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420796574206368616c6c656e676564",
                        "id": 2550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3018:20:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        },
                        "value": "not yet challenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        }
                      ],
                      "id": 2548,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "2996:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2996:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2552,
                  "nodeType": "ExpressionStatement",
                  "src": "2996:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2556,
                                "name": "branch",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2545,
                                "src": "3081:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2554,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3057:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "branchTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 924,
                              "src": "3057:23:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 2557,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3057:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2558,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3091:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "WINDOWTIMESPAN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 910,
                              "src": "3091:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                                "typeString": "function () view external returns (uint32)"
                              }
                            },
                            "id": 2560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3091:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3057:58:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2562,
                          "name": "challengeTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2350,
                          "src": "3118:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3057:74:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2553,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3049:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3049:83:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2565,
                  "nodeType": "ExpressionStatement",
                  "src": "3049:83:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2569,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "3182:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2570,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3194:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2567,
                            "name": "fSystem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2338,
                            "src": "3150:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                              "typeString": "contract ForkonomicSystem"
                            }
                          },
                          "id": 2568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isArbitratorWhitelisted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1195,
                          "src": "3150:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3150:51:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2566,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3142:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3142:60:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2573,
                  "nodeType": "ExpressionStatement",
                  "src": "3142:60:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2577,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "3248:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2578,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "3260:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2579,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3271:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2580,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "3279:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2575,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3220:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2141,
                          "src": "3220:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3220:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2574,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3212:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3212:82:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2583,
                  "nodeType": "ExpressionStatement",
                  "src": "3212:82:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2587,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "3332:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3344:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2589,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3346:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3344:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2591,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3352:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2585,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3312:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "3312:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3312:47:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2584,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3304:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3304:56:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2594,
                  "nodeType": "ExpressionStatement",
                  "src": "3304:56:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2598,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "3409:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3420:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2600,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3422:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3420:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2602,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3428:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2596,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3378:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "recordBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2088,
                          "src": "3378:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3378:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2595,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3370:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3370:66:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2605,
                  "nodeType": "ExpressionStatement",
                  "src": "3370:66:5"
                }
              ]
            },
            "documentation": null,
            "id": 2607,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdrawalForArbitrator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2545,
                  "name": "branch",
                  "nodeType": "VariableDeclaration",
                  "scope": 2607,
                  "src": "2963:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2544,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2963:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2962:16:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2986:0:5"
            },
            "scope": 2678,
            "src": "2930:513:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2676,
              "nodeType": "Block",
              "src": "3639:599:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2613,
                        "name": "isChallenged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2336,
                        "src": "3657:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420796574206368616c6c656e676564",
                        "id": 2614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3671:20:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        },
                        "value": "not yet challenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        }
                      ],
                      "id": 2612,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3649:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3649:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2616,
                  "nodeType": "ExpressionStatement",
                  "src": "3649:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2620,
                                "name": "branch",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2609,
                                "src": "3734:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2618,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3710:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "branchTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 924,
                              "src": "3710:23:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 2621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3710:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2622,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3744:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "WINDOWTIMESPAN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 910,
                              "src": "3744:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                                "typeString": "function () view external returns (uint32)"
                              }
                            },
                            "id": 2624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3744:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3710:58:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2626,
                          "name": "challengeTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2350,
                          "src": "3771:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3710:74:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6368616c6c656e67696e6754696d6520746f6f206561726c79",
                        "id": 2628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3786:27:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dd4f5b9e5deacba13c4bc6fee03728d2a7e830ca08e91bc05c97a2ef95f2ae5f",
                          "typeString": "literal_string \"challengingTime too early\""
                        },
                        "value": "challengingTime too early"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dd4f5b9e5deacba13c4bc6fee03728d2a7e830ca08e91bc05c97a2ef95f2ae5f",
                          "typeString": "literal_string \"challengingTime too early\""
                        }
                      ],
                      "id": 2617,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3702:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3702:112:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2630,
                  "nodeType": "ExpressionStatement",
                  "src": "3702:112:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2637,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3832:52:5",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2634,
                              "name": "arbitrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2344,
                              "src": "3865:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2635,
                              "name": "branch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2609,
                              "src": "3877:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2632,
                              "name": "fSystem",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2338,
                              "src": "3833:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                "typeString": "contract ForkonomicSystem"
                              }
                            },
                            "id": 2633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isArbitratorWhitelisted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1195,
                            "src": "3833:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (address,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 2636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3833:51:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "61726269747261746f72206973206e6f742077686974652d6c6973746564",
                        "id": 2638,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3886:32:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f84fd87c92ae620f7831938d14e18b2a487699f26b9d25a68929007d7cb502c6",
                          "typeString": "literal_string \"arbitrator is not white-listed\""
                        },
                        "value": "arbitrator is not white-listed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f84fd87c92ae620f7831938d14e18b2a487699f26b9d25a68929007d7cb502c6",
                          "typeString": "literal_string \"arbitrator is not white-listed\""
                        }
                      ],
                      "id": 2631,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3824:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3824:95:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2640,
                  "nodeType": "ExpressionStatement",
                  "src": "3824:95:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2644,
                            "name": "challenger",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2348,
                            "src": "3965:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2645,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "3977:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2646,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2609,
                            "src": "3988:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2647,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "3996:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2642,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3937:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2141,
                          "src": "3937:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3937:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "686173426f785769746864726177616c203d3d66616c7365",
                        "id": 2649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4012:26:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_973d80fd58fa8579489c29d6891889cfa7dcb3da712e4056c477f9f3162d5565",
                          "typeString": "literal_string \"hasBoxWithdrawal ==false\""
                        },
                        "value": "hasBoxWithdrawal ==false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_973d80fd58fa8579489c29d6891889cfa7dcb3da712e4056c477f9f3162d5565",
                          "typeString": "literal_string \"hasBoxWithdrawal ==false\""
                        }
                      ],
                      "id": 2641,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3929:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3929:110:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2651,
                  "nodeType": "ExpressionStatement",
                  "src": "3929:110:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2655,
                            "name": "challenger",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2348,
                            "src": "4077:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4089:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2657,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "4091:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4089:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2659,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2609,
                            "src": "4097:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2653,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "4057:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "4057:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4057:47:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e73666572206661696c6564",
                        "id": 2661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4106:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                          "typeString": "literal_string \"transfer failed\""
                        },
                        "value": "transfer failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                          "typeString": "literal_string \"transfer failed\""
                        }
                      ],
                      "id": 2652,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "4049:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4049:75:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2663,
                  "nodeType": "ExpressionStatement",
                  "src": "4049:75:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2667,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "4173:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4184:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2669,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "4186:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4184:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2671,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2609,
                            "src": "4192:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2665,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "4142:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "recordBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2088,
                          "src": "4142:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4142:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "207265636f7264426f785769746864726177616c206661696c6564",
                        "id": 2673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4201:29:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6c196b1b5d7cbe55b40d13040867d52a528fc881673039841d83d2635b347fa0",
                          "typeString": "literal_string \" recordBoxWithdrawal failed\""
                        },
                        "value": " recordBoxWithdrawal failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6c196b1b5d7cbe55b40d13040867d52a528fc881673039841d83d2635b347fa0",
                          "typeString": "literal_string \" recordBoxWithdrawal failed\""
                        }
                      ],
                      "id": 2664,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "4134:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4134:97:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2675,
                  "nodeType": "ExpressionStatement",
                  "src": "4134:97:5"
                }
              ]
            },
            "documentation": null,
            "id": 2677,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdrawalForChallenger",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2609,
                  "name": "branch",
                  "nodeType": "VariableDeclaration",
                  "scope": 2677,
                  "src": "3616:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2608,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3616:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3615:16:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2611,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3639:0:5"
            },
            "scope": 2678,
            "src": "3583:655:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2679,
        "src": "809:3431:5"
      }
    ],
    "src": "0:4240:5"
  },
  "legacyAST": {
    "absolutePath": "/home/josojo/reality/subjectivocracy/contracts/Subchain.sol",
    "exportedSymbols": {
      "SubChain": [
        2678
      ]
    },
    "id": 2679,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2321,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".22"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:5"
      },
      {
        "absolutePath": "/home/josojo/reality/subjectivocracy/contracts/ForkonomicToken.sol",
        "file": "./ForkonomicToken.sol",
        "id": 2322,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 2263,
        "src": "26:31:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/josojo/reality/subjectivocracy/contracts/ForkonomicSystem.sol",
        "file": "./ForkonomicSystem.sol",
        "id": 2323,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 1314,
        "src": "58:32:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "id": 2324,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 5379,
        "src": "91:71:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 2325,
        "nodeType": "ImportDirective",
        "scope": 2679,
        "sourceUnit": 4961,
        "src": "164:59:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2326,
              "name": "StandardToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5378,
              "src": "830:13:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardToken_$5378",
                "typeString": "contract StandardToken"
              }
            },
            "id": 2327,
            "nodeType": "InheritanceSpecifier",
            "src": "830:13:5"
          }
        ],
        "contractDependencies": [
          5056,
          5099,
          5131,
          5378
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2678,
        "linearizedBaseContracts": [
          2678,
          5378,
          5056,
          5099,
          5131
        ],
        "name": "SubChain",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2330,
            "libraryName": {
              "contractScope": null,
              "id": 2328,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4960,
              "src": "856:8:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4960",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "850:27:5",
            "typeName": {
              "id": 2329,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "869:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2333,
            "name": "NULL_HASH",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "883:31:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2331,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "883:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "",
              "id": 2332,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "912:2:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                "typeString": "literal_string \"\""
              },
              "value": ""
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2336,
            "name": "isChallenged",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "921:32:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2334,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "921:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 2335,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "948:5:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2338,
            "name": "fSystem",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "959:31:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
              "typeString": "contract ForkonomicSystem"
            },
            "typeName": {
              "contractScope": null,
              "id": 2337,
              "name": "ForkonomicSystem",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1313,
              "src": "959:16:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                "typeString": "contract ForkonomicSystem"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2340,
            "name": "collateral",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "996:33:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
              "typeString": "contract ForkonomicToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 2339,
              "name": "ForkonomicToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2262,
              "src": "996:15:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                "typeString": "contract ForkonomicToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2342,
            "name": "fundingBranch",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1035:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2341,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1035:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2344,
            "name": "arbitrator",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1069:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2343,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1069:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2346,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1100:20:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2345,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1100:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2348,
            "name": "challenger",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1126:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2347,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1126:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2350,
            "name": "challengeTime",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1157:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2349,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1157:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2352,
            "name": "bond",
            "nodeType": "VariableDeclaration",
            "scope": 2678,
            "src": "1191:19:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2351,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1191:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2379,
              "nodeType": "Block",
              "src": "1346:143:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2363,
                      "name": "collateral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2340,
                      "src": "1356:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                        "typeString": "contract ForkonomicToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2364,
                      "name": "collateral_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2354,
                      "src": "1369:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                        "typeString": "contract ForkonomicToken"
                      }
                    },
                    "src": "1356:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                      "typeString": "contract ForkonomicToken"
                    }
                  },
                  "id": 2366,
                  "nodeType": "ExpressionStatement",
                  "src": "1356:24:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2367,
                      "name": "fSystem",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2338,
                      "src": "1390:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                        "typeString": "contract ForkonomicSystem"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2368,
                      "name": "fSystem_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2356,
                      "src": "1400:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                        "typeString": "contract ForkonomicSystem"
                      }
                    },
                    "src": "1390:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                      "typeString": "contract ForkonomicSystem"
                    }
                  },
                  "id": 2370,
                  "nodeType": "ExpressionStatement",
                  "src": "1390:18:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2371,
                      "name": "fundingBranch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2342,
                      "src": "1418:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2372,
                      "name": "fundingBranch_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2358,
                      "src": "1434:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1418:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2374,
                  "nodeType": "ExpressionStatement",
                  "src": "1418:30:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2375,
                      "name": "arbitrator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2344,
                      "src": "1458:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2376,
                      "name": "arbitrator_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2360,
                      "src": "1471:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1458:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2378,
                  "nodeType": "ExpressionStatement",
                  "src": "1458:24:5"
                }
              ]
            },
            "documentation": null,
            "id": 2380,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2354,
                  "name": "collateral_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1230:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                    "typeString": "contract ForkonomicToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2353,
                    "name": "ForkonomicToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2262,
                    "src": "1230:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                      "typeString": "contract ForkonomicToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2356,
                  "name": "fSystem_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1259:25:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                    "typeString": "contract ForkonomicSystem"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2355,
                    "name": "ForkonomicSystem",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1313,
                    "src": "1259:16:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                      "typeString": "contract ForkonomicSystem"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2358,
                  "name": "fundingBranch_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1294:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2357,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1294:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2360,
                  "name": "arbitrator_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2380,
                  "src": "1318:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2359,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1318:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1228:110:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2362,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1346:0:5"
            },
            "scope": 2678,
            "src": "1217:272:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2399,
              "nodeType": "Block",
              "src": "1542:110:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2385,
                      "name": "bond",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2352,
                      "src": "1552:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2386,
                      "name": "bond_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2382,
                      "src": "1559:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1552:12:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2388,
                  "nodeType": "ExpressionStatement",
                  "src": "1552:12:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2392,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "1606:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2393,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5434,
                            "src": "1618:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2394,
                            "name": "bond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2352,
                            "src": "1624:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2395,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "1630:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2390,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "1582:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1865,
                          "src": "1582:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1582:62:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2389,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "1574:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1574:71:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2398,
                  "nodeType": "ExpressionStatement",
                  "src": "1574:71:5"
                }
              ]
            },
            "documentation": null,
            "id": 2400,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "providInitialBond",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2383,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2382,
                  "name": "bond_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2400,
                  "src": "1523:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2381,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1523:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1522:12:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2384,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1542:0:5"
            },
            "scope": 2678,
            "src": "1495:157:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2435,
              "nodeType": "Block",
              "src": "1700:220:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1718:13:5",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 2406,
                          "name": "isChallenged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2336,
                          "src": "1719:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537562636861696e20697320616c7265616479206368616c656e676564",
                        "id": 2408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1733:31:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        },
                        "value": "Subchain is already chalenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        }
                      ],
                      "id": 2405,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "1710:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1710:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2410,
                  "nodeType": "ExpressionStatement",
                  "src": "1710:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2414,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "1807:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1807:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2416,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5434,
                            "src": "1819:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2417,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2402,
                            "src": "1825:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2418,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "1833:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2412,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "1783:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1865,
                          "src": "1783:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1783:64:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2411,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "1775:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1775:73:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2421,
                  "nodeType": "ExpressionStatement",
                  "src": "1775:73:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2422,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4973,
                        "src": "1858:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2425,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2423,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "1867:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1867:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1858:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2431,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2402,
                          "src": "1906:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2426,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4973,
                            "src": "1881:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2429,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2427,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "1890:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1890:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1881:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4959,
                        "src": "1881:24:5",
                        "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": 2432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1881:32:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1858:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2434,
                  "nodeType": "ExpressionStatement",
                  "src": "1858:55:5"
                }
              ]
            },
            "documentation": null,
            "id": 2436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2403,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2402,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2436,
                  "src": "1680:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2401,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1680:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1679:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2404,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1700:0:5"
            },
            "scope": 2678,
            "src": "1662:258:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2470,
              "nodeType": "Block",
              "src": "1969:210:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1987:13:5",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 2442,
                          "name": "isChallenged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2336,
                          "src": "1988:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537562636861696e20697320616c7265616479206368616c656e676564",
                        "id": 2444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2002:31:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        },
                        "value": "Subchain is already chalenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1a6a772df6024a3c4c86b120ea5127157e07435fe3ca733d2178c15d2c6fddd9",
                          "typeString": "literal_string \"Subchain is already chalenged\""
                        }
                      ],
                      "id": 2441,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "1979:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1979:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2446,
                  "nodeType": "ExpressionStatement",
                  "src": "1979:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2447,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4973,
                        "src": "2044:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2450,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2448,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "2053:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2053:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2044:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2456,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2438,
                          "src": "2092:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2451,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4973,
                            "src": "2067:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2454,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2452,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2076:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2076:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2067:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4935,
                        "src": "2067:24:5",
                        "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": 2457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2067:32:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2044:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2459,
                  "nodeType": "ExpressionStatement",
                  "src": "2044:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2463,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2137:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2137:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2465,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2438,
                            "src": "2149:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2466,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "2157:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2461,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2117:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "2117:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2117:54:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2460,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2109:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2109:63:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2469,
                  "nodeType": "ExpressionStatement",
                  "src": "2109:63:5"
                }
              ]
            },
            "documentation": null,
            "id": 2471,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdraw",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2438,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2471,
                  "src": "1949:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2437,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1948:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1969:0:5"
            },
            "scope": 2678,
            "src": "1930:249:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2499,
              "nodeType": "Block",
              "src": "2224:212:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2474,
                      "name": "isChallenged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2336,
                      "src": "2234:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2249:4:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2234:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2477,
                  "nodeType": "ExpressionStatement",
                  "src": "2234:19:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2478,
                      "name": "challenger",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2348,
                      "src": "2263:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2479,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5393,
                        "src": "2276:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2276:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2263:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2482,
                  "nodeType": "ExpressionStatement",
                  "src": "2263:23:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2483,
                      "name": "challengeTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2350,
                      "src": "2296:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2484,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5395,
                      "src": "2312:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2296:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2486,
                  "nodeType": "ExpressionStatement",
                  "src": "2296:19:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2490,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2357:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2357:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2492,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5434,
                            "src": "2369:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2493,
                            "name": "bond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2352,
                            "src": "2375:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2494,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "2381:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_SubChain_$2678",
                              "typeString": "contract SubChain"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2488,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2333:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1865,
                          "src": "2333:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2333:62:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e7366657246726f6d20776173206e6f7420706f737369626c65",
                        "id": 2496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2397:31:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e620e1eed456973fee16075a43afd413286dee27336c1a0283e31c3e90ae4939",
                          "typeString": "literal_string \"transferFrom was not possible\""
                        },
                        "value": "transferFrom was not possible"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e620e1eed456973fee16075a43afd413286dee27336c1a0283e31c3e90ae4939",
                          "typeString": "literal_string \"transferFrom was not possible\""
                        }
                      ],
                      "id": 2487,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "2325:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2325:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2498,
                  "nodeType": "ExpressionStatement",
                  "src": "2325:104:5"
                }
              ]
            },
            "documentation": null,
            "id": 2500,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "challengeArbitrator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2214:2:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2224:0:5"
            },
            "scope": 2678,
            "src": "2185:251:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2542,
              "nodeType": "Block",
              "src": "2516:294:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2508,
                        "name": "isChallenged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2336,
                        "src": "2534:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420796574206368616c6c656e676564",
                        "id": 2509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2548:20:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        },
                        "value": "not yet challenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        }
                      ],
                      "id": 2507,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "2526:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2526:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2511,
                  "nodeType": "ExpressionStatement",
                  "src": "2526:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2515,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2615:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2615:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2517,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "2627:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2518,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "2638:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2519,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "2646:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2513,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2587:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2141,
                          "src": "2587:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2587:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2512,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2579:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2579:82:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2522,
                  "nodeType": "ExpressionStatement",
                  "src": "2579:82:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2526,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5393,
                              "src": "2699:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2699:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2528,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2502,
                            "src": "2711:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2529,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "2719:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2524,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2679:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "2679:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2679:47:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2523,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2671:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2671:56:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2532,
                  "nodeType": "ExpressionStatement",
                  "src": "2671:56:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2536,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "2776:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2537,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2502,
                            "src": "2787:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2538,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "2795:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2534,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "2745:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "recordBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2088,
                          "src": "2745:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2745:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2533,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "2737:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2737:66:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2541,
                  "nodeType": "ExpressionStatement",
                  "src": "2737:66:5"
                }
              ]
            },
            "documentation": null,
            "id": 2543,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdrawAfterChallenge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2502,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2543,
                  "src": "2480:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2501,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2480:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2504,
                  "name": "branch",
                  "nodeType": "VariableDeclaration",
                  "scope": 2543,
                  "src": "2493:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2503,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2493:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2479:29:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2506,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2516:0:5"
            },
            "scope": 2678,
            "src": "2447:363:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2606,
              "nodeType": "Block",
              "src": "2986:457:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2549,
                        "name": "isChallenged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2336,
                        "src": "3004:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420796574206368616c6c656e676564",
                        "id": 2550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3018:20:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        },
                        "value": "not yet challenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        }
                      ],
                      "id": 2548,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "2996:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2996:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2552,
                  "nodeType": "ExpressionStatement",
                  "src": "2996:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2556,
                                "name": "branch",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2545,
                                "src": "3081:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2554,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3057:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "branchTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 924,
                              "src": "3057:23:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 2557,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3057:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2558,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3091:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "WINDOWTIMESPAN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 910,
                              "src": "3091:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                                "typeString": "function () view external returns (uint32)"
                              }
                            },
                            "id": 2560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3091:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3057:58:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2562,
                          "name": "challengeTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2350,
                          "src": "3118:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3057:74:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2553,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3049:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3049:83:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2565,
                  "nodeType": "ExpressionStatement",
                  "src": "3049:83:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2569,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "3182:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2570,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3194:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2567,
                            "name": "fSystem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2338,
                            "src": "3150:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                              "typeString": "contract ForkonomicSystem"
                            }
                          },
                          "id": 2568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isArbitratorWhitelisted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1195,
                          "src": "3150:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3150:51:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2566,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3142:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3142:60:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2573,
                  "nodeType": "ExpressionStatement",
                  "src": "3142:60:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2577,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "3248:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2578,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "3260:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2579,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3271:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2580,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "3279:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2575,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3220:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2141,
                          "src": "3220:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3220:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2574,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3212:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3212:82:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2583,
                  "nodeType": "ExpressionStatement",
                  "src": "3212:82:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2587,
                            "name": "arbitrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "3332:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3344:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2589,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3346:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3344:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2591,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3352:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2585,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3312:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "3312:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3312:47:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2584,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3304:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3304:56:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2594,
                  "nodeType": "ExpressionStatement",
                  "src": "3304:56:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2598,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "3409:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3420:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2600,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3422:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3420:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2602,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2545,
                            "src": "3428:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2596,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3378:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "recordBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2088,
                          "src": "3378:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3378:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2595,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5396,
                      "src": "3370:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3370:66:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2605,
                  "nodeType": "ExpressionStatement",
                  "src": "3370:66:5"
                }
              ]
            },
            "documentation": null,
            "id": 2607,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdrawalForArbitrator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2545,
                  "name": "branch",
                  "nodeType": "VariableDeclaration",
                  "scope": 2607,
                  "src": "2963:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2544,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2963:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2962:16:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2986:0:5"
            },
            "scope": 2678,
            "src": "2930:513:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2676,
              "nodeType": "Block",
              "src": "3639:599:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2613,
                        "name": "isChallenged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2336,
                        "src": "3657:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420796574206368616c6c656e676564",
                        "id": 2614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3671:20:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        },
                        "value": "not yet challenged"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a328d85d0afa93e893aae86cc726704a157468446d3d1ade392a4d1cd001d070",
                          "typeString": "literal_string \"not yet challenged\""
                        }
                      ],
                      "id": 2612,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3649:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3649:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2616,
                  "nodeType": "ExpressionStatement",
                  "src": "3649:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2620,
                                "name": "branch",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2609,
                                "src": "3734:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2618,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3710:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "branchTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 924,
                              "src": "3710:23:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 2621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3710:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2622,
                                "name": "fSystem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "3744:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                  "typeString": "contract ForkonomicSystem"
                                }
                              },
                              "id": 2623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "WINDOWTIMESPAN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 910,
                              "src": "3744:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                                "typeString": "function () view external returns (uint32)"
                              }
                            },
                            "id": 2624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3744:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3710:58:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2626,
                          "name": "challengeTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2350,
                          "src": "3771:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3710:74:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6368616c6c656e67696e6754696d6520746f6f206561726c79",
                        "id": 2628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3786:27:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dd4f5b9e5deacba13c4bc6fee03728d2a7e830ca08e91bc05c97a2ef95f2ae5f",
                          "typeString": "literal_string \"challengingTime too early\""
                        },
                        "value": "challengingTime too early"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dd4f5b9e5deacba13c4bc6fee03728d2a7e830ca08e91bc05c97a2ef95f2ae5f",
                          "typeString": "literal_string \"challengingTime too early\""
                        }
                      ],
                      "id": 2617,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3702:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3702:112:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2630,
                  "nodeType": "ExpressionStatement",
                  "src": "3702:112:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2637,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3832:52:5",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2634,
                              "name": "arbitrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2344,
                              "src": "3865:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2635,
                              "name": "branch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2609,
                              "src": "3877:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2632,
                              "name": "fSystem",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2338,
                              "src": "3833:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ForkonomicSystem_$1313",
                                "typeString": "contract ForkonomicSystem"
                              }
                            },
                            "id": 2633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isArbitratorWhitelisted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1195,
                            "src": "3833:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (address,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 2636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3833:51:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "61726269747261746f72206973206e6f742077686974652d6c6973746564",
                        "id": 2638,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3886:32:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f84fd87c92ae620f7831938d14e18b2a487699f26b9d25a68929007d7cb502c6",
                          "typeString": "literal_string \"arbitrator is not white-listed\""
                        },
                        "value": "arbitrator is not white-listed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f84fd87c92ae620f7831938d14e18b2a487699f26b9d25a68929007d7cb502c6",
                          "typeString": "literal_string \"arbitrator is not white-listed\""
                        }
                      ],
                      "id": 2631,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3824:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3824:95:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2640,
                  "nodeType": "ExpressionStatement",
                  "src": "3824:95:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2644,
                            "name": "challenger",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2348,
                            "src": "3965:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2645,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "3977:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2646,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2609,
                            "src": "3988:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2647,
                            "name": "fundingBranch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "3996:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2642,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "3937:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2141,
                          "src": "3937:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 2648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3937:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "686173426f785769746864726177616c203d3d66616c7365",
                        "id": 2649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4012:26:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_973d80fd58fa8579489c29d6891889cfa7dcb3da712e4056c477f9f3162d5565",
                          "typeString": "literal_string \"hasBoxWithdrawal ==false\""
                        },
                        "value": "hasBoxWithdrawal ==false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_973d80fd58fa8579489c29d6891889cfa7dcb3da712e4056c477f9f3162d5565",
                          "typeString": "literal_string \"hasBoxWithdrawal ==false\""
                        }
                      ],
                      "id": 2641,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "3929:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3929:110:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2651,
                  "nodeType": "ExpressionStatement",
                  "src": "3929:110:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2655,
                            "name": "challenger",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2348,
                            "src": "4077:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4089:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2657,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "4091:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4089:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2659,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2609,
                            "src": "4097:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2653,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "4057:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1730,
                          "src": "4057:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4057:47:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e73666572206661696c6564",
                        "id": 2661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4106:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                          "typeString": "literal_string \"transfer failed\""
                        },
                        "value": "transfer failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                          "typeString": "literal_string \"transfer failed\""
                        }
                      ],
                      "id": 2652,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "4049:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4049:75:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2663,
                  "nodeType": "ExpressionStatement",
                  "src": "4049:75:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2667,
                            "name": "NULL_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2333,
                            "src": "4173:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4184:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2669,
                              "name": "bond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "4186:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4184:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2671,
                            "name": "branch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2609,
                            "src": "4192:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2665,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "4142:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ForkonomicToken_$2262",
                              "typeString": "contract ForkonomicToken"
                            }
                          },
                          "id": 2666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "recordBoxWithdrawal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2088,
                          "src": "4142:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32,uint256,bytes32) external returns (bool)"
                          }
                        },
                        "id": 2672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4142:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "207265636f7264426f785769746864726177616c206661696c6564",
                        "id": 2673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4201:29:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6c196b1b5d7cbe55b40d13040867d52a528fc881673039841d83d2635b347fa0",
                          "typeString": "literal_string \" recordBoxWithdrawal failed\""
                        },
                        "value": " recordBoxWithdrawal failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6c196b1b5d7cbe55b40d13040867d52a528fc881673039841d83d2635b347fa0",
                          "typeString": "literal_string \" recordBoxWithdrawal failed\""
                        }
                      ],
                      "id": 2664,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5396,
                        5397
                      ],
                      "referencedDeclaration": 5397,
                      "src": "4134:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4134:97:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2675,
                  "nodeType": "ExpressionStatement",
                  "src": "4134:97:5"
                }
              ]
            },
            "documentation": null,
            "id": 2677,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "withdrawalForChallenger",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2609,
                  "name": "branch",
                  "nodeType": "VariableDeclaration",
                  "scope": 2677,
                  "src": "3616:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2608,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3616:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3615:16:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2611,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3639:0:5"
            },
            "scope": 2678,
            "src": "3583:655:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2679,
        "src": "809:3431:5"
      }
    ],
    "src": "0:4240:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.0-beta.1",
  "updatedAt": "2018-10-27T11:24:32.607Z"
}