{
  "abi": [
    {
      "name": "TokenPurchase",
      "inputs": [
        { "type": "address", "name": "buyer", "indexed": true },
        { "type": "uint256", "name": "eth_sold", "indexed": true },
        { "type": "uint256", "name": "tokens_bought", "indexed": true }
      ],
      "anonymous": false,
      "type": "event"
    },
    {
      "name": "EthPurchase",
      "inputs": [
        { "type": "address", "name": "buyer", "indexed": true },
        { "type": "uint256", "name": "tokens_sold", "indexed": true },
        { "type": "uint256", "name": "eth_bought", "indexed": true }
      ],
      "anonymous": false,
      "type": "event"
    },
    {
      "name": "AddLiquidity",
      "inputs": [
        { "type": "address", "name": "provider", "indexed": true },
        { "type": "uint256", "name": "eth_amount", "indexed": true },
        { "type": "uint256", "name": "token_amount", "indexed": true }
      ],
      "anonymous": false,
      "type": "event"
    },
    {
      "name": "RemoveLiquidity",
      "inputs": [
        { "type": "address", "name": "provider", "indexed": true },
        { "type": "uint256", "name": "eth_amount", "indexed": true },
        { "type": "uint256", "name": "token_amount", "indexed": true }
      ],
      "anonymous": false,
      "type": "event"
    },
    {
      "name": "Transfer",
      "inputs": [
        { "type": "address", "name": "_from", "indexed": true },
        { "type": "address", "name": "_to", "indexed": true },
        { "type": "uint256", "name": "_value", "indexed": false }
      ],
      "anonymous": false,
      "type": "event"
    },
    {
      "name": "Approval",
      "inputs": [
        { "type": "address", "name": "_owner", "indexed": true },
        { "type": "address", "name": "_spender", "indexed": true },
        { "type": "uint256", "name": "_value", "indexed": false }
      ],
      "anonymous": false,
      "type": "event"
    },
    {
      "name": "setup",
      "outputs": [],
      "inputs": [{ "type": "address", "name": "token_addr" }],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 175875
    },
    {
      "name": "addLiquidity",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "min_liquidity" },
        { "type": "uint256", "name": "max_tokens" },
        { "type": "uint256", "name": "deadline" }
      ],
      "constant": false,
      "payable": true,
      "type": "function",
      "gas": 82605
    },
    {
      "name": "removeLiquidity",
      "outputs": [
        { "type": "uint256", "name": "out" },
        { "type": "uint256", "name": "out" }
      ],
      "inputs": [
        { "type": "uint256", "name": "amount" },
        { "type": "uint256", "name": "min_eth" },
        { "type": "uint256", "name": "min_tokens" },
        { "type": "uint256", "name": "deadline" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 116814
    },
    { "name": "__default__", "outputs": [], "inputs": [], "constant": false, "payable": true, "type": "function" },
    {
      "name": "ethToTokenSwapInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "min_tokens" },
        { "type": "uint256", "name": "deadline" }
      ],
      "constant": false,
      "payable": true,
      "type": "function",
      "gas": 12757
    },
    {
      "name": "ethToTokenTransferInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "min_tokens" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" }
      ],
      "constant": false,
      "payable": true,
      "type": "function",
      "gas": 12965
    },
    {
      "name": "ethToTokenSwapOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_bought" },
        { "type": "uint256", "name": "deadline" }
      ],
      "constant": false,
      "payable": true,
      "type": "function",
      "gas": 50455
    },
    {
      "name": "ethToTokenTransferOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_bought" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" }
      ],
      "constant": false,
      "payable": true,
      "type": "function",
      "gas": 50663
    },
    {
      "name": "tokenToEthSwapInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_sold" },
        { "type": "uint256", "name": "min_eth" },
        { "type": "uint256", "name": "deadline" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 47503
    },
    {
      "name": "tokenToEthTransferInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_sold" },
        { "type": "uint256", "name": "min_eth" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 47712
    },
    {
      "name": "tokenToEthSwapOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "eth_bought" },
        { "type": "uint256", "name": "max_tokens" },
        { "type": "uint256", "name": "deadline" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 50175
    },
    {
      "name": "tokenToEthTransferOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "eth_bought" },
        { "type": "uint256", "name": "max_tokens" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 50384
    },
    {
      "name": "tokenToTokenSwapInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_sold" },
        { "type": "uint256", "name": "min_tokens_bought" },
        { "type": "uint256", "name": "min_eth_bought" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "token_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 51007
    },
    {
      "name": "tokenToTokenTransferInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_sold" },
        { "type": "uint256", "name": "min_tokens_bought" },
        { "type": "uint256", "name": "min_eth_bought" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" },
        { "type": "address", "name": "token_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 51098
    },
    {
      "name": "tokenToTokenSwapOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_bought" },
        { "type": "uint256", "name": "max_tokens_sold" },
        { "type": "uint256", "name": "max_eth_sold" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "token_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 54928
    },
    {
      "name": "tokenToTokenTransferOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_bought" },
        { "type": "uint256", "name": "max_tokens_sold" },
        { "type": "uint256", "name": "max_eth_sold" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" },
        { "type": "address", "name": "token_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 55019
    },
    {
      "name": "tokenToExchangeSwapInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_sold" },
        { "type": "uint256", "name": "min_tokens_bought" },
        { "type": "uint256", "name": "min_eth_bought" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "exchange_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 49342
    },
    {
      "name": "tokenToExchangeTransferInput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_sold" },
        { "type": "uint256", "name": "min_tokens_bought" },
        { "type": "uint256", "name": "min_eth_bought" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" },
        { "type": "address", "name": "exchange_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 49532
    },
    {
      "name": "tokenToExchangeSwapOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_bought" },
        { "type": "uint256", "name": "max_tokens_sold" },
        { "type": "uint256", "name": "max_eth_sold" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "exchange_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 53233
    },
    {
      "name": "tokenToExchangeTransferOutput",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "uint256", "name": "tokens_bought" },
        { "type": "uint256", "name": "max_tokens_sold" },
        { "type": "uint256", "name": "max_eth_sold" },
        { "type": "uint256", "name": "deadline" },
        { "type": "address", "name": "recipient" },
        { "type": "address", "name": "exchange_addr" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 53423
    },
    {
      "name": "getEthToTokenInputPrice",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [{ "type": "uint256", "name": "eth_sold" }],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 5542
    },
    {
      "name": "getEthToTokenOutputPrice",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [{ "type": "uint256", "name": "tokens_bought" }],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 6872
    },
    {
      "name": "getTokenToEthInputPrice",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [{ "type": "uint256", "name": "tokens_sold" }],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 5637
    },
    {
      "name": "getTokenToEthOutputPrice",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [{ "type": "uint256", "name": "eth_bought" }],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 6897
    },
    {
      "name": "tokenAddress",
      "outputs": [{ "type": "address", "name": "out" }],
      "inputs": [],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1413
    },
    {
      "name": "factoryAddress",
      "outputs": [{ "type": "address", "name": "out" }],
      "inputs": [],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1443
    },
    {
      "name": "balanceOf",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [{ "type": "address", "name": "_owner" }],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1645
    },
    {
      "name": "transfer",
      "outputs": [{ "type": "bool", "name": "out" }],
      "inputs": [
        { "type": "address", "name": "_to" },
        { "type": "uint256", "name": "_value" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 75034
    },
    {
      "name": "transferFrom",
      "outputs": [{ "type": "bool", "name": "out" }],
      "inputs": [
        { "type": "address", "name": "_from" },
        { "type": "address", "name": "_to" },
        { "type": "uint256", "name": "_value" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 110907
    },
    {
      "name": "approve",
      "outputs": [{ "type": "bool", "name": "out" }],
      "inputs": [
        { "type": "address", "name": "_spender" },
        { "type": "uint256", "name": "_value" }
      ],
      "constant": false,
      "payable": false,
      "type": "function",
      "gas": 38769
    },
    {
      "name": "allowance",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [
        { "type": "address", "name": "_owner" },
        { "type": "address", "name": "_spender" }
      ],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1925
    },
    {
      "name": "name",
      "outputs": [{ "type": "bytes32", "name": "out" }],
      "inputs": [],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1623
    },
    {
      "name": "symbol",
      "outputs": [{ "type": "bytes32", "name": "out" }],
      "inputs": [],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1653
    },
    {
      "name": "decimals",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1683
    },
    {
      "name": "totalSupply",
      "outputs": [{ "type": "uint256", "name": "out" }],
      "inputs": [],
      "constant": true,
      "payable": false,
      "type": "function",
      "gas": 1713
    }
  ],
  "evm": {
    "bytecode": {
      "object": "[encoded data, 24936 characters]"
    }
  }
}
