{
  "contractName": "RenderableERC20Token",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "mintingFinished",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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": "_operator",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "checkRole",
      "outputs": [],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "activate",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_Token",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "activated",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC165",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxMintable",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "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": false,
      "inputs": [
        {
          "name": "_maxMintable",
          "type": "uint256"
        }
      ],
      "name": "setMaxMintable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "removeMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pausable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "initialSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "mintable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseApproval",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "template",
      "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": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finishMinting",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "renderer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC20Token",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "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": "ROLE_MINTER",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "addMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "burnable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "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": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseApproval",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "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"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_symbol",
          "type": "string"
        },
        {
          "name": "_decimals",
          "type": "uint8"
        },
        {
          "name": "_initialSupply",
          "type": "uint256"
        },
        {
          "name": "_mintable",
          "type": "bool"
        },
        {
          "name": "_burnable",
          "type": "bool"
        },
        {
          "name": "_pausable",
          "type": "bool"
        }
      ],
      "name": "update",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_Contract",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_symbol",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "burner",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "role",
          "type": "string"
        }
      ],
      "name": "RoleAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "role",
          "type": "string"
        }
      ],
      "name": "RoleRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "MintFinished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "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": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "adminWidgets",
      "outputs": [
        {
          "name": "jsonObject",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "userWidgets",
      "outputs": [
        {
          "name": "jsonObject",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "inputs",
      "outputs": [
        {
          "name": "jsonArray",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526008805460ff19169055600a805461ffff19166112001790553480156200002a57600080fd5b50604051620021f9380380620021f9833981016040908152815160208301519183015160038054600160a060020a031916331790559092918201910182828282828282620000a17f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001a4810204565b6005805433600160a060020a03199182161790915560038054909116600160a060020a038316179055620000fe7f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001a4810204565b5081516200011490600690602085019062000211565b5080516200012a90600790602084019062000211565b506200015f7ffd155c6700000000000000000000000000000000000000000000000000000000640100000000620001a4810204565b506200019891507f98b0f321000000000000000000000000000000000000000000000000000000009050640100000000620001a4810204565b505050505050620002b6565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001d457600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600460205260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025457805160ff191683800117855562000284565b8280016001018555821562000284579182015b828111156200028457825182559160200191906001019062000267565b506200029292915062000296565b5090565b620002b391905b808211156200029257600081556001016200029d565b90565b611f3380620002c66000396000f3006080604052600436106102245763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301bd3411811461022957806301ffc9a7146102f757806305d2035b1461034257806306fdde0314610357578063095ea7b31461036c5780630988ca8c146103905780630f15f4c0146103f9578063172d02bd1461040e57806318160ddd14610455578063186601ca1461047c57806319fa8f50146104915780632154dc39146104a6578063217fe6c6146104bb57806323b872dd1461052257806325d387b51461054c5780633092afd514610564578063313ce5671461058557806336775847146105b0578063378dc3dc146105c55780633f4ba83a146105da57806340c10f19146105ef57806342966c68146106135780634bf365df1461062b5780635c975abb1461064057806366188463146106555780636f2ddd931461067957806370a08231146106aa578063715018a6146106cb5780637d64bcb4146106e05780638456cb59146106f55780638ada6b0f1461070a5780638d4da4681461071f5780638da5cb5b14610734578063908ba6481461074957806392afc33a146107a257806395d89b41146107b7578063983b2d56146107cc578063a07c7ce4146107ed578063a3a8fd2c14610802578063a9059cbb1461085b578063d73dd6231461087f578063dd62ed3e146108a3578063f2226de6146108ca578063f2fde38b14610981578063fbf964eb146109a2575b600080fd5b34801561023557600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102829436949293602493928401919081908401838280828437509497506109b79650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102bc5781810151838201526020016102a4565b50505050905090810190601f1680156102e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030357600080fd5b5061032e7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610b20565b604080519115158252519081900360200190f35b34801561034e57600080fd5b5061032e610b54565b34801561036357600080fd5b50610282610b5d565b34801561037857600080fd5b5061032e600160a060020a0360043516602435610beb565b34801561039c57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103f7958335600160a060020a0316953695604494919390910191908190840183828082843750949750610c179650505050505050565b005b34801561040557600080fd5b5061032e610c85565b34801561041a57600080fd5b50610423610cd0565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561046157600080fd5b5061046a610cf4565b60408051918252519081900360200190f35b34801561048857600080fd5b5061032e610cfa565b34801561049d57600080fd5b50610423610d0a565b3480156104b257600080fd5b5061046a610d2e565b3480156104c757600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261032e958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d349650505050505050565b34801561052e57600080fd5b5061032e600160a060020a0360043581169060243516604435610da0565b34801561055857600080fd5b506103f7600435610dce565b34801561057057600080fd5b506103f7600160a060020a0360043516610e01565b34801561059157600080fd5b5061059a610e48565b6040805160ff9092168252519081900360200190f35b3480156105bc57600080fd5b5061032e610e56565b3480156105d157600080fd5b5061046a610e64565b3480156105e657600080fd5b506103f7610e6a565b3480156105fb57600080fd5b5061032e600160a060020a0360043516602435610ec7565b34801561061f57600080fd5b506103f7600435610f18565b34801561063757600080fd5b5061032e610f39565b34801561064c57600080fd5b5061032e610f42565b34801561066157600080fd5b5061032e600160a060020a0360043516602435610f4b565b34801561068557600080fd5b5061068e610f68565b60408051600160a060020a039092168252519081900360200190f35b3480156106b657600080fd5b5061046a600160a060020a0360043516610f77565b3480156106d757600080fd5b506103f7610f92565b3480156106ec57600080fd5b5061032e611000565b34801561070157600080fd5b506103f7611066565b34801561071657600080fd5b5061068e611086565b34801561072b57600080fd5b5061042361109e565b34801561074057600080fd5b5061068e6110c2565b34801561075557600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102829436949293602493928401919081908401838280828437509497506110d19650505050505050565b3480156107ae57600080fd5b5061028261115e565b3480156107c357600080fd5b50610282611183565b3480156107d857600080fd5b506103f7600160a060020a03600435166111de565b3480156107f957600080fd5b5061032e611222565b34801561080e57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261028294369492936024939284019190819084018382808284375094975061122b9650505050505050565b34801561086757600080fd5b5061032e600160a060020a03600435166024356112b8565b34801561088b57600080fd5b5061032e600160a060020a03600435166024356112dd565b3480156108af57600080fd5b5061046a600160a060020a03600435811690602435166112fa565b3480156108d657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103f794369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff85351695505050602083013592604081013515159250606081013515159150608001351515611325565b34801561098d57600080fd5b506103f7600160a060020a03600435166113cb565b3480156109ae57600080fd5b506104236113eb565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f4552433230546f6b656e52656e64657265729363bf3bed549387939092918291606490910190602086019080838360005b83811015610a45578181015183820152602001610a2d565b50505050905090810190601f168015610a725780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610acf57600080fd5b810190808051640100000000811115610ae757600080fd5b82016020810184811115610afa57600080fd5b8151640100000000811182820187101715610b1457600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b60085460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610c0657600080fd5b610c10838361140f565b9392505050565b610c81826009836040518082805190602001908083835b60208310610c4d5780518252601f199092019160209182019101610c2e565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061142c565b5050565b60055460009060a060020a900460ff1615610c9f57600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610cca611441565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610c10836009846040518082805190602001908083835b60208310610d6c5780518252601f199092019160209182019101610d4d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611463565b60055460009060a060020a900460ff161515610dbb57600080fd5b610dc6848484611482565b949350505050565b600354600160a060020a03163314610de557600080fd5b60055460a060020a900460ff1615610dfc57600080fd5b600d55565b600354600160a060020a03163314610e1857600080fd5b610e4581604080519081016040528060068152602001600080516020611ec88339815191528152506114a0565b50565b600a54610100900460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610e8157600080fd5b600a5460ff161515610e9257600080fd5b600a805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60055460009060a060020a900460ff161515610ee257600080fd5b6000600d541115610f0e57600d54600154610f03908463ffffffff6115b116565b1115610f0e57600080fd5b610c1083836115c4565b60055460a060020a900460ff161515610f3057600080fd5b610e45816116ca565b600c5460ff1681565b600a5460ff1681565b600a5460009060ff1615610f5e57600080fd5b610c1083836116d4565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610fa957600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a0316331461101a57600080fd5b60085460ff161561102a57600080fd5b6008805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff16151561107c57600080fd5b6110846117c3565b565b735f5f4552433230546f6b656e52656e646572657281565b7f98b0f3210000000000000000000000000000000000000000000000000000000081565b600354600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f4552433230546f6b656e52656e64657265729363e77cee3d93879390929182916064909101906020860190808383600083811015610a45578181015183820152602001610a2d565b6040805180820190915260068152600080516020611ec8833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b600354600160a060020a031633146111f557600080fd5b610e4581604080519081016040528060068152602001600080516020611ec8833981519152815250611822565b600e5460ff1681565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f4552433230546f6b656e52656e64657265729363e949955593879390929182916064909101906020860190808383600083811015610a45578181015183820152602001610a2d565b60055460009060a060020a900460ff1615156112d357600080fd5b610c1083836118f4565b600a5460009060ff16156112f057600080fd5b610c108383611911565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a0316331461133c57600080fd5b60055460a060020a900460ff161561135357600080fd5b86516113669060069060208a0190611e2f565b50855161137a906007906020890190611e2f565b50600a805460ff90961661010090810261ff001997881617909155600b94909455600c805493151560ff19948516179055600e80549115159094029115159216919091179092169190911790555050565b600354600160a060020a031633146113e257600080fd5b610e45816119aa565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b600a5460009060ff161561142257600080fd5b610c108383611a28565b6114368282611463565b1515610c8157600080fd5b600354600090600160a060020a0316331461145b57600080fd5b610cca611a8e565b600160a060020a03166000908152602091909152604090205460ff1690565b600a5460009060ff161561149557600080fd5b610dc6848484611ab7565b61150a826009836040518082805190602001908083835b602083106114d65780518252601f1990920191602091820191016114b7565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611c1a565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561157357818101518382015260200161155b565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b818101828110156115be57fe5b92915050565b60006115f333604080519081016040528060068152602001600080516020611ec8833981519152815250610c17565b60085460ff161561160357600080fd5b600154611616908363ffffffff6115b116565b600155600160a060020a038316600090815260208190526040902054611642908363ffffffff6115b116565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03851691600091600080516020611ee88339815191529181900360200190a350600192915050565b610e453382611c3c565b336000908152600260209081526040808320600160a060020a038616845290915281205480831061172857336000908152600260209081526040808320600160a060020a038816845290915281205561175d565b611738818463ffffffff611d2b16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600354600160a060020a031633146117da57600080fd5b600a5460ff16156117ea57600080fd5b600a805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b61188c826009836040518082805190602001908083835b602083106118585780518252601f199092019160209182019101611839565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611d3d565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360008381101561157357818101518382015260200161155b565b600a5460009060ff161561190757600080fd5b610c108383611d62565b336000908152600260209081526040808320600160a060020a0386168452909152812054611945908363ffffffff6115b116565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03811615156119bf57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a038316600090815260208190526040812054821115611adc57600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611b0c57600080fd5b600160a060020a0383161515611b2157600080fd5b600160a060020a038416600090815260208190526040902054611b4a908363ffffffff611d2b16565b600160a060020a038086166000908152602081905260408082209390935590851681522054611b7f908363ffffffff6115b116565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054611bc1908363ffffffff611d2b16565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611ee8833981519152929181900390910190a35060019392505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038216600090815260208190526040902054811115611c6157600080fd5b600160a060020a038216600090815260208190526040902054611c8a908263ffffffff611d2b16565b600160a060020a038316600090815260208190526040902055600154611cb6908263ffffffff611d2b16565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611ee88339815191529181900360200190a35050565b600082821115611d3757fe5b50900390565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b33600090815260208190526040812054821115611d7e57600080fd5b600160a060020a0383161515611d9357600080fd5b33600090815260208190526040902054611db3908363ffffffff611d2b16565b3360009081526020819052604080822092909255600160a060020a03851681522054611de5908363ffffffff6115b116565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611ee88339815191529281900390910190a350600192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e7057805160ff1916838001178555611e9d565b82800160010185558215611e9d579182015b82811115611e9d578251825591602001919060010190611e82565b50611ea9929150611ead565b5090565b610ccd91905b80821115611ea95760008155600101611eb356006d696e7465720000000000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820705023ebbcb6b971bad60f219d2c04de548dd5f04ad7a8397d9f86ccd667731c0029",
  "deployedBytecode": "0x6080604052600436106102245763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301bd3411811461022957806301ffc9a7146102f757806305d2035b1461034257806306fdde0314610357578063095ea7b31461036c5780630988ca8c146103905780630f15f4c0146103f9578063172d02bd1461040e57806318160ddd14610455578063186601ca1461047c57806319fa8f50146104915780632154dc39146104a6578063217fe6c6146104bb57806323b872dd1461052257806325d387b51461054c5780633092afd514610564578063313ce5671461058557806336775847146105b0578063378dc3dc146105c55780633f4ba83a146105da57806340c10f19146105ef57806342966c68146106135780634bf365df1461062b5780635c975abb1461064057806366188463146106555780636f2ddd931461067957806370a08231146106aa578063715018a6146106cb5780637d64bcb4146106e05780638456cb59146106f55780638ada6b0f1461070a5780638d4da4681461071f5780638da5cb5b14610734578063908ba6481461074957806392afc33a146107a257806395d89b41146107b7578063983b2d56146107cc578063a07c7ce4146107ed578063a3a8fd2c14610802578063a9059cbb1461085b578063d73dd6231461087f578063dd62ed3e146108a3578063f2226de6146108ca578063f2fde38b14610981578063fbf964eb146109a2575b600080fd5b34801561023557600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102829436949293602493928401919081908401838280828437509497506109b79650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102bc5781810151838201526020016102a4565b50505050905090810190601f1680156102e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030357600080fd5b5061032e7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610b20565b604080519115158252519081900360200190f35b34801561034e57600080fd5b5061032e610b54565b34801561036357600080fd5b50610282610b5d565b34801561037857600080fd5b5061032e600160a060020a0360043516602435610beb565b34801561039c57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103f7958335600160a060020a0316953695604494919390910191908190840183828082843750949750610c179650505050505050565b005b34801561040557600080fd5b5061032e610c85565b34801561041a57600080fd5b50610423610cd0565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561046157600080fd5b5061046a610cf4565b60408051918252519081900360200190f35b34801561048857600080fd5b5061032e610cfa565b34801561049d57600080fd5b50610423610d0a565b3480156104b257600080fd5b5061046a610d2e565b3480156104c757600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261032e958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d349650505050505050565b34801561052e57600080fd5b5061032e600160a060020a0360043581169060243516604435610da0565b34801561055857600080fd5b506103f7600435610dce565b34801561057057600080fd5b506103f7600160a060020a0360043516610e01565b34801561059157600080fd5b5061059a610e48565b6040805160ff9092168252519081900360200190f35b3480156105bc57600080fd5b5061032e610e56565b3480156105d157600080fd5b5061046a610e64565b3480156105e657600080fd5b506103f7610e6a565b3480156105fb57600080fd5b5061032e600160a060020a0360043516602435610ec7565b34801561061f57600080fd5b506103f7600435610f18565b34801561063757600080fd5b5061032e610f39565b34801561064c57600080fd5b5061032e610f42565b34801561066157600080fd5b5061032e600160a060020a0360043516602435610f4b565b34801561068557600080fd5b5061068e610f68565b60408051600160a060020a039092168252519081900360200190f35b3480156106b657600080fd5b5061046a600160a060020a0360043516610f77565b3480156106d757600080fd5b506103f7610f92565b3480156106ec57600080fd5b5061032e611000565b34801561070157600080fd5b506103f7611066565b34801561071657600080fd5b5061068e611086565b34801561072b57600080fd5b5061042361109e565b34801561074057600080fd5b5061068e6110c2565b34801561075557600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102829436949293602493928401919081908401838280828437509497506110d19650505050505050565b3480156107ae57600080fd5b5061028261115e565b3480156107c357600080fd5b50610282611183565b3480156107d857600080fd5b506103f7600160a060020a03600435166111de565b3480156107f957600080fd5b5061032e611222565b34801561080e57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261028294369492936024939284019190819084018382808284375094975061122b9650505050505050565b34801561086757600080fd5b5061032e600160a060020a03600435166024356112b8565b34801561088b57600080fd5b5061032e600160a060020a03600435166024356112dd565b3480156108af57600080fd5b5061046a600160a060020a03600435811690602435166112fa565b3480156108d657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103f794369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff85351695505050602083013592604081013515159250606081013515159150608001351515611325565b34801561098d57600080fd5b506103f7600160a060020a03600435166113cb565b3480156109ae57600080fd5b506104236113eb565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f4552433230546f6b656e52656e64657265729363bf3bed549387939092918291606490910190602086019080838360005b83811015610a45578181015183820152602001610a2d565b50505050905090810190601f168015610a725780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610acf57600080fd5b810190808051640100000000811115610ae757600080fd5b82016020810184811115610afa57600080fd5b8151640100000000811182820187101715610b1457600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b60085460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610c0657600080fd5b610c10838361140f565b9392505050565b610c81826009836040518082805190602001908083835b60208310610c4d5780518252601f199092019160209182019101610c2e565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061142c565b5050565b60055460009060a060020a900460ff1615610c9f57600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610cca611441565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610c10836009846040518082805190602001908083835b60208310610d6c5780518252601f199092019160209182019101610d4d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611463565b60055460009060a060020a900460ff161515610dbb57600080fd5b610dc6848484611482565b949350505050565b600354600160a060020a03163314610de557600080fd5b60055460a060020a900460ff1615610dfc57600080fd5b600d55565b600354600160a060020a03163314610e1857600080fd5b610e4581604080519081016040528060068152602001600080516020611ec88339815191528152506114a0565b50565b600a54610100900460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610e8157600080fd5b600a5460ff161515610e9257600080fd5b600a805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60055460009060a060020a900460ff161515610ee257600080fd5b6000600d541115610f0e57600d54600154610f03908463ffffffff6115b116565b1115610f0e57600080fd5b610c1083836115c4565b60055460a060020a900460ff161515610f3057600080fd5b610e45816116ca565b600c5460ff1681565b600a5460ff1681565b600a5460009060ff1615610f5e57600080fd5b610c1083836116d4565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610fa957600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a0316331461101a57600080fd5b60085460ff161561102a57600080fd5b6008805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff16151561107c57600080fd5b6110846117c3565b565b735f5f4552433230546f6b656e52656e646572657281565b7f98b0f3210000000000000000000000000000000000000000000000000000000081565b600354600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f4552433230546f6b656e52656e64657265729363e77cee3d93879390929182916064909101906020860190808383600083811015610a45578181015183820152602001610a2d565b6040805180820190915260068152600080516020611ec8833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b600354600160a060020a031633146111f557600080fd5b610e4581604080519081016040528060068152602001600080516020611ec8833981519152815250611822565b600e5460ff1681565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f4552433230546f6b656e52656e64657265729363e949955593879390929182916064909101906020860190808383600083811015610a45578181015183820152602001610a2d565b60055460009060a060020a900460ff1615156112d357600080fd5b610c1083836118f4565b600a5460009060ff16156112f057600080fd5b610c108383611911565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a0316331461133c57600080fd5b60055460a060020a900460ff161561135357600080fd5b86516113669060069060208a0190611e2f565b50855161137a906007906020890190611e2f565b50600a805460ff90961661010090810261ff001997881617909155600b94909455600c805493151560ff19948516179055600e80549115159094029115159216919091179092169190911790555050565b600354600160a060020a031633146113e257600080fd5b610e45816119aa565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b600a5460009060ff161561142257600080fd5b610c108383611a28565b6114368282611463565b1515610c8157600080fd5b600354600090600160a060020a0316331461145b57600080fd5b610cca611a8e565b600160a060020a03166000908152602091909152604090205460ff1690565b600a5460009060ff161561149557600080fd5b610dc6848484611ab7565b61150a826009836040518082805190602001908083835b602083106114d65780518252601f1990920191602091820191016114b7565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611c1a565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561157357818101518382015260200161155b565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b818101828110156115be57fe5b92915050565b60006115f333604080519081016040528060068152602001600080516020611ec8833981519152815250610c17565b60085460ff161561160357600080fd5b600154611616908363ffffffff6115b116565b600155600160a060020a038316600090815260208190526040902054611642908363ffffffff6115b116565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03851691600091600080516020611ee88339815191529181900360200190a350600192915050565b610e453382611c3c565b336000908152600260209081526040808320600160a060020a038616845290915281205480831061172857336000908152600260209081526040808320600160a060020a038816845290915281205561175d565b611738818463ffffffff611d2b16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600354600160a060020a031633146117da57600080fd5b600a5460ff16156117ea57600080fd5b600a805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b61188c826009836040518082805190602001908083835b602083106118585780518252601f199092019160209182019101611839565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611d3d565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360008381101561157357818101518382015260200161155b565b600a5460009060ff161561190757600080fd5b610c108383611d62565b336000908152600260209081526040808320600160a060020a0386168452909152812054611945908363ffffffff6115b116565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03811615156119bf57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a038316600090815260208190526040812054821115611adc57600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611b0c57600080fd5b600160a060020a0383161515611b2157600080fd5b600160a060020a038416600090815260208190526040902054611b4a908363ffffffff611d2b16565b600160a060020a038086166000908152602081905260408082209390935590851681522054611b7f908363ffffffff6115b116565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054611bc1908363ffffffff611d2b16565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611ee8833981519152929181900390910190a35060019392505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038216600090815260208190526040902054811115611c6157600080fd5b600160a060020a038216600090815260208190526040902054611c8a908263ffffffff611d2b16565b600160a060020a038316600090815260208190526040902055600154611cb6908263ffffffff611d2b16565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611ee88339815191529181900360200190a35050565b600082821115611d3757fe5b50900390565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b33600090815260208190526040812054821115611d7e57600080fd5b600160a060020a0383161515611d9357600080fd5b33600090815260208190526040902054611db3908363ffffffff611d2b16565b3360009081526020819052604080822092909255600160a060020a03851681522054611de5908363ffffffff6115b116565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611ee88339815191529281900390910190a350600192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e7057805160ff1916838001178555611e9d565b82800160010185558215611e9d579182015b82811115611e9d578251825591602001919060010190611e82565b50611ea9929150611ead565b5090565b610ccd91905b80821115611ea95760008155600101611eb356006d696e7465720000000000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820705023ebbcb6b971bad60f219d2c04de548dd5f04ad7a8397d9f86ccd667731c0029",
  "sourceMap": "158:731:2:-;;;436:35:33;;;-1:-1:-1;;436:35:33;;;247:26:25;;;-1:-1:-1;;1470:26:1;;;;;333:137:2;5:2:-1;;;;30:1;27;20:12;5:2;333:137:2;;;;;;;;;;;;;;;;;;;;;;;;;;567:5:27;:18;;-1:-1:-1;;;;;;567:18:27;575:10;567:18;;;333:137:2;;;;;;;;;;;;;;649:38:24;668:18;649;;;;:38;:::i;:::-;560:8:7;:31;;580:10;-1:-1:-1;;;;;;560:31:7;;;;;;;601:5;:14;;;;;-1:-1:-1;;;;;601:14:7;;;;;626:40;645:20;626:18;;;;:40;:::i;:::-;-1:-1:-1;591:12:10;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;613:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;640:37:10;659:17;640:18;;;;:37;:::i;:::-;-1:-1:-1;2008:42:1;;-1:-1:-1;2027:22:1;;-1:-1:-1;2008:18:1;;;;:42;:::i;:::-;1872:185;;;333:137:2;;;158:731;;987:156:24;1065:26;;;;;;1057:35;;;;;;1098:33;;;;;;:19;:33;;;;;:40;;-1:-1:-1;;1098:40:24;1134:4;1098:40;;;987:156::o;158:731:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;158:731:2;;;-1:-1:-1;158:731:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "158:731:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;762:125:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;762:125:2;;-1:-1:-1;762:125:2;;-1:-1:-1;;;;;;;762:125:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;762:125:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:142:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;775:142:24;-1:-1:-1;;775:142:24;;;;;;;;;;;;;;;;;;;;;;;436:35:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;436:35:33;;;;418:18:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;418:18:10;;;;3164:138:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3164:138:1;-1:-1:-1;;;;;3164:138:1;;;;;;;837:114:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;837:114:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;837:114:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;837:114:21;;-1:-1:-1;837:114:21;;-1:-1:-1;;;;;;;837:114:21;;;2641:177:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:177:1;;;;358:53:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;358:53:10;;;;;;;;-1:-1:-1;;358:53:10;;;;;;;;;;;;;;389:83:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;389:83:28;;;;;;;;;;;;;;;;;;;;53:21:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53:21:6;;;;230:54:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:54:24;;;;1562:26:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1562:26:1;;;;1091:136:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1091:136:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:136:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1091:136:21;;-1:-1:-1;1091:136:21;;-1:-1:-1;;;;;;;1091:136:21;2964:194:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2964:194:1;-1:-1:-1;;;;;2964:194:1;;;;;;;;;;;;2515:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2515:120:1;;;;;830:99:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;830:99:35;-1:-1:-1;;;;;830:99:35;;;;;1470:26:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:26:1;;;;;;;;;;;;;;;;;;;;;;;1620:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1620:20:1;;;;1502:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1502:28:1;;;;838:92:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:92:25;;;;3308:232:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3308:232:1;-1:-1:-1;;;;;3308:232:1;;;;;;;3546:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3546:86:1;;;;;1536:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1536:20:1;;;;247:26:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:26:25;;;;957:205:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;957:205:34;-1:-1:-1;;;;;957:205:34;;;;;;;484:24:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;484:24:7;;;;;;;;-1:-1:-1;;;;;484:24:7;;;;;;;;;;;;;;1149:99:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1149:99:28;-1:-1:-1;;;;;1149:99:28;;;;;1001:111:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:27;;;;1280:140:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1280:140:33;;;;3638:67:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3638:67:1;;;;220:106:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;220:106:2;;;;1405:58:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1405:58:1;;;;238:20:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:27;;;;620:136:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;620:136:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;620:136:2;;-1:-1:-1;620:136:2;;-1:-1:-1;;;;;;;620:136:2;346:45:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;346:45:35;;;;442:20:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;442:20:10;;;;646:93:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;646:93:35;-1:-1:-1;;;;;646:93:35;;;;;1594:20:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1594:20:1;;;;476:138:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;476:138:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;476:138:2;;-1:-1:-1;476:138:2;;-1:-1:-1;;;;;;;476:138:2;2824:134:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2824:134:1;-1:-1:-1;;;;;2824:134:1;;;;;;;758:195:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;758:195:34;-1:-1:-1;;;;;758:195:34;;;;;;;2321:153:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2321:153:36;-1:-1:-1;;;;;2321:153:36;;;;;;;;;;2063:446:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2063:446:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2063:446:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2063:446:1;;;;-1:-1:-1;2063:446:1;-1:-1:-1;2063:446:1;;-1:-1:-1;2063:446:1;;;;;;;;-1:-1:-1;2063:446:1;;-1:-1:-1;;2063:446:1;;;;;-1:-1:-1;;;2063:446:1;;;;;;;;;;;;-1:-1:-1;2063:446:1;;;;;;;-1:-1:-1;2063:446:1;;;;;;;1274:103:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:27;-1:-1:-1;;;;;1274:103:27;;;;;421:56:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;421:56:7;;;;762:125:2;850:30;;;;;;875:4;850:30;;;;;;;;;;;;;;;;;;;;815:16;;285:40;;850:15;;866:7;;875:4;;850:30;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;850:30:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;850:30:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;850:30:2;;;;;;39:16:-1;36:1;17:17;2:54;101:4;850:30:2;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;850:30:2;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;-1:-1;850:30:2;;762:125;-1:-1:-1;;;;;;762:125:2:o;775:142:24:-;-1:-1:-1;;879:33:24;858:4;879:33;;;:19;:33;;;;;;;;;775:142::o;436:35:33:-;;;;;;:::o;418:18:10:-;;;;;;;;;;;;;;;-1:-1:-1;;418:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3164:138:1:-;122:9:6;;3243:4:1;;-1:-1:-1;;;122:9:6;;;;114:18;;;;;;;;3266:29:1;3280:7;3289:5;3266:13;:29::i;:::-;3259:36;3164:138;-1:-1:-1;;;3164:138:1:o;837:114:21:-;917:29;936:9;917:5;923;917:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;917:12:21;;;;;-1:-1:-1;917:12:21;;;;;;;;;;;;-1:-1:-1;;917:18:21;:29::i;:::-;837:114;;:::o;2641:177:1:-;201:9:6;;2694:4:1;;-1:-1:-1;;;201:9:6;;;;200:10;192:19;;;;;;2725:13:1;;2710:12;:28;;;2757:5;;-1:-1:-1;;;;;2757:5:1;-1:-1:-1;2748:15:1;;;;;;;;;;:30;2795:16;:14;:16::i;:::-;2788:23;;221:1:6;2641:177:1;:::o;358:53:10:-;;;:::o;389:83:28:-;455:12;;389:83;:::o;53:21:6:-;;;-1:-1:-1;;;53:21:6;;;;;:::o;230:54:24:-;;;:::o;1562:26:1:-;;;;:::o;1091:136:21:-;1174:4;1195:27;1212:9;1195:5;1201;1195:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1195:12:21;;;;;-1:-1:-1;1195:12:21;;;;;;;;;;;;-1:-1:-1;;1195:16:21;:27::i;2964:194:1:-;122:9:6;;3090:4:1;;-1:-1:-1;;;122:9:6;;;;114:18;;;;;;;;3113:38:1;3132:5;3139:3;3144:6;3113:18;:38::i;:::-;3106:45;2964:194;-1:-1:-1;;;;2964:194:1:o;2515:120::-;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;201:9:6;;-1:-1:-1;;;201:9:6;;;;200:10;192:19;;;;;;2602:11:1;:26;2515:120::o;830:99:35:-;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;892:32:35;903:7;912:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;912:11:35;;;892:10;:32::i;:::-;830:99;:::o;1470:26:1:-;;;;;;;;;:::o;1620:20::-;;;;;;;;;:::o;1502:28::-;;;;:::o;838:92:25:-;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;568:6:25;;;;560:15;;;;;;;;891:6;:14;;-1:-1:-1;;891:14:25;;;916:9;;;;900:5;;916:9;838:92::o;3308:232:1:-;122:9:6;;3382:4:1;;-1:-1:-1;;;122:9:6;;;;114:18;;;;;;;;3416:1:1;3402:11;;:15;3398:95;;;3470:11;;3441:12;;:25;;3458:7;3441:25;:16;:25;:::i;:::-;:40;;3433:49;;;;;;3509:24;3520:3;3525:7;3509:10;:24::i;3546:86::-;122:9:6;;-1:-1:-1;;;122:9:6;;;;114:18;;;;;;;;3607::1;3618:6;3607:10;:18::i;1536:20::-;;;;;;:::o;247:26:25:-;;;;;;:::o;957:205:34:-;416:6:25;;1078:12:34;;416:6:25;;415:7;407:16;;;;;;1107:50:34;1130:8;1140:16;1107:22;:50::i;484:24:7:-;;;-1:-1:-1;;;;;484:24:7;;:::o;1149:99:28:-;-1:-1:-1;;;;;1227:16:28;1205:7;1227:16;;;;;;;;;;;;1149:99::o;1001:111:27:-;719:5;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;1077:5;;1058:25;;-1:-1:-1;;;;;1077:5:27;;;;1058:25;;1077:5;;1058:25;1089:5;:18;;-1:-1:-1;;1089:18:27;;;1001:111::o;1280:140:33:-;719:5:27;;1339:4:33;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;511:15:33;;;;510:16;502:25;;;;;;1351:15;:22;;-1:-1:-1;;1351:22:33;1369:4;1351:22;;;1384:14;;;;1351:15;;1384:14;-1:-1:-1;1411:4:33;1280:140;:::o;3638:67:1:-;1839:8;;;;;;;1831:17;;;;;;;;3685:13;:11;:13::i;:::-;3638:67::o;220:106:2:-;285:40;220:106;:::o;1405:58:1:-;;;:::o;238:20:27:-;;;-1:-1:-1;;;;;238:20:27;;:::o;620:136:2:-;714:35;;;;;;744:4;714:35;;;;;;;;;;;;;;;;;;;;678:17;;285:40;;714:20;;735:7;;744:4;;714:35;;;;;;;;;;;;;;;-1:-1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;346:45:35;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;346:45:35;;;;;:::o;442:20:10:-;;;;;;;;;;;;;;;-1:-1:-1;;442:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;646:93:35;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;705:29:35;713:7;722:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;722:11:35;;;705:7;:29::i;1594:20:1:-;;;;;;:::o;476:138:2:-;571:36;;;;;;602:4;571:36;;;;;;;;;;;;;;;;;;;;535:17;;285:40;;571:21;;593:7;;602:4;;571:36;;;;;;;;;;;;;;;-1:-1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2824:134:1;122:9:6;;2901:4:1;;-1:-1:-1;;;122:9:6;;;;114:18;;;;;;;;2924:27:1;2939:3;2944:6;2924:14;:27::i;758:195:34:-;416:6:25;;874:12:34;;416:6:25;;415:7;407:16;;;;;;903:45:34;926:8;936:11;903:22;:45::i;2321:153:36:-;-1:-1:-1;;;;;2444:15:36;;;2420:7;2444:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2321:153::o;2063:446:1:-;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;201:9:6;;-1:-1:-1;;;201:9:6;;;;200:10;192:19;;;;;;2304:12:1;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2326:16:1;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2352:8:1;:20;;;;;;;;;;-1:-1:-1;;2352:20:1;;;;;;;2382:13;:30;;;;2422:8;:20;;;;;-1:-1:-1;;2422:20:1;;;;;;2452:8;:20;;2482;;;;;;2452;;;;;;;;;2482;;;;;;;;;-1:-1:-1;;2063:446:1:o;1274:103:27:-;719:5;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;421:56:7:-;;;:::o;592:162:34:-;416:6:25;;697:4:34;;416:6:25;;415:7;407:16;;;;;;718:31:34;732:8;742:6;718:13;:31::i;666:111:22:-;754:17;758:5;765;754:3;:17::i;:::-;746:26;;;;;;;690:92:10;719:5:27;;736:4:10;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;759:16:10;:14;:16::i;855:128:22:-;-1:-1:-1;;;;;959:19:22;938:4;959:19;;;;;;;;;;;;;;;855:128::o;400:188:34:-;416:6:25;;524:4:34;;416:6:25;;415:7;407:16;;;;;;545:38:34;564:5;571:3;576:6;545:18;:38::i;1613:149:21:-;1687:30;1707:9;1687:5;1693;1687:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1687:12:21;;;;;-1:-1:-1;1687:12:21;;;;;;;;;;;;-1:-1:-1;;1687:19:21;:30::i;:::-;1740:9;-1:-1:-1;;;;;1728:29:21;;1751:5;1728:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1728:29:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:149;;:::o;1238:128:26:-;1319:7;;;1339;;;;1332:15;;;;1238:128;;;;:::o;854:312:33:-;968:4;514:34:35;524:10;536:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;536:11:35;;;514:9;:34::i;:::-;511:15:33;;;;510:16;502:25;;;;;;997:12;;:25;;1014:7;997:25;:16;:25;:::i;:::-;982:12;:40;-1:-1:-1;;;;;1044:13:33;;:8;:13;;;;;;;;;;;:26;;1062:7;1044:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;1028:13:33;;:8;:13;;;;;;;;;;;;:42;;;;1081:18;;;;;;;1028:13;;1081:18;;;;;;;;;1110:34;;;;;;;;-1:-1:-1;;;;;1110:34:33;;;1127:1;;-1:-1:-1;;;;;;;;;;;1110:34:33;;;;;;;;-1:-1:-1;1157:4:33;854:312;;;;:::o;353:73:29:-;396:25;402:10;414:6;396:5;:25::i;3679:432:36:-;3826:10;3785:4;3818:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3818:29:36;;;;;;;;;;3857:28;;;3853:165;;3903:10;3927:1;3895:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3895:29:36;;;;;;;;;:33;3853:165;;;3981:30;:8;3994:16;3981:30;:12;:30;:::i;:::-;3957:10;3949:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3949:29:36;;;;;;;;;:62;3853:165;4037:10;4059:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;4028:61:36;;4059:29;;;;;;;;;;;4028:61;;;;;;;;;4037:10;4028:61;;;;;;;;;;;-1:-1:-1;4102:4:36;;3679:432;-1:-1:-1;;;3679:432:36:o;666:90:25:-;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;416:6:25;;;;415:7;407:16;;;;;;720:6;:13;;-1:-1:-1;;720:13:25;729:4;720:13;;;744:7;;;;720:6;;744:7;666:90::o;1347:141:21:-;1418:27;1435:9;1418:5;1424;1418:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1418:12:21;;;;;-1:-1:-1;1418:12:21;;;;;;;;;;;;-1:-1:-1;;1418:16:21;:27::i;:::-;1466:9;-1:-1:-1;;;;;1456:27:21;;1477:5;1456:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;242:154:34;416:6:25;;343:4:34;;416:6:25;;415:7;407:16;;;;;;364:27:34;379:3;384:6;364:14;:27::i;2926:296:36:-;3089:10;3027:4;3081:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3081:29:36;;;;;;;;;;:46;;3115:11;3081:46;:33;:46;:::i;:::-;3049:10;3041:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3041:29:36;;;;;;;;;;;;:87;;;3139:61;;;;;;3041:29;;3139:61;;;;;;;;;;;-1:-1:-1;3213:4:36;2926:296;;;;:::o;1512:171:27:-;-1:-1:-1;;;;;1582:23:27;;;;1574:32;;;;;;1638:5;;1617:38;;-1:-1:-1;;;;;1617:38:27;;;;1638:5;;1617:38;;1638:5;;1617:38;1661:5;:17;;-1:-1:-1;;1661:17:27;-1:-1:-1;;;;;1661:17:27;;;;;;;;;;1512:171::o;1814:188:36:-;1901:10;1881:4;1893:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1893:29:36;;;;;;;;;;;:38;;;1942;;;;;;;1881:4;;1893:29;;1901:10;;1942:38;;;;;;;;-1:-1:-1;1993:4:36;1814:188;;;;:::o;235:96:6:-;287:9;:16;;-1:-1:-1;;287:16:6;-1:-1:-1;;;287:16:6;;;299:4;235:96;:::o;726:470:36:-;-1:-1:-1;;;;;864:15:36;;832:4;864:15;;;;;;;;;;;854:25;;;846:34;;;;;;-1:-1:-1;;;;;904:14:36;;;;;;:7;:14;;;;;;;;919:10;904:26;;;;;;;;894:36;;;886:45;;;;;;-1:-1:-1;;;;;945:17:36;;;;937:26;;;;;;-1:-1:-1;;;;;988:15:36;;:8;:15;;;;;;;;;;;:27;;1008:6;988:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;970:15:36;;;:8;:15;;;;;;;;;;;:45;;;;1037:13;;;;;;;:25;;1055:6;1037:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1021:13:36;;;:8;:13;;;;;;;;;;;:41;;;;1097:14;;;;;:7;:14;;;;;1112:10;1097:26;;;;;;;:38;;1128:6;1097:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;1068:14:36;;;;;;;:7;:14;;;;;;;;1083:10;1068:26;;;;;;;;:67;;;;1146:28;;;;;;;;;;;1068:14;;-1:-1:-1;;;;;;;;;;;1146:28:36;;;;;;;;;;-1:-1:-1;1187:4:36;726:470;;;;;:::o;486:104:22:-;-1:-1:-1;;;;;558:19:22;580:5;558:19;;;;;;;;;;;:27;;-1:-1:-1;;558:27:22;;;486:104::o;430:438:29:-;-1:-1:-1;;;;;508:14:29;;:8;:14;;;;;;;;;;;498:24;;;490:33;;;;;;-1:-1:-1;;;;;718:14:29;;:8;:14;;;;;;;;;;;:26;;737:6;718:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;701:14:29;;:8;:14;;;;;;;;;;:43;765:12;;:24;;782:6;765:24;:16;:24;:::i;:::-;750:12;:39;800:18;;;;;;;;-1:-1:-1;;;;;800:18:29;;;;;;;;;;;;;829:34;;;;;;;;852:1;;-1:-1:-1;;;;;829:34:29;;;-1:-1:-1;;;;;;;;;;;829:34:29;;;;;;;;430:438;;:::o;1060:116:26:-;1120:7;1142:8;;;;1135:16;;;;-1:-1:-1;1164:7:26;;;1060:116::o;321:100:22:-;-1:-1:-1;;;;;390:19:22;:12;:19;;;;;;;;;;;:26;;-1:-1:-1;;390:26:22;412:4;390:26;;;321:100::o;626:321:28:-;728:10;689:4;719:20;;;;;;;;;;;709:30;;;701:39;;;;;;-1:-1:-1;;;;;754:17:28;;;;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:28;;;;;;:25;;874:6;856:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;840:13:28;;:8;:13;;;;;;;;;;;;:41;;;;892:33;;;;;;;840:13;;901:10;;-1:-1:-1;;;;;;;;;;;892:33:28;;;;;;;;;-1:-1:-1;938:4:28;626:321;;;;:::o;158:731:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;158:731:2;;;-1:-1:-1;158:731:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.4.24;\n\nimport \"tokenboost-solidity/contracts/widget/Renderable.sol\";\nimport \"./ERC20Token.sol\";\nimport \"./widget/ERC20TokenRenderer.sol\";\n\ncontract RenderableERC20Token is ERC20Token, Renderable {\n    ERC20TokenRenderer constant public renderer = ERC20TokenRenderer(address(bytes20(\"__ERC20TokenRenderer\")));\n\n    constructor(\n        address _owner,\n        string _name,\n        string _symbol\n    ) public ERC20Token(_owner, _name, _symbol) {\n    }\n\n    function adminWidgets(string _locale) public view returns (string jsonObject) {\n        return renderer.adminWidgets(_locale, this);\n    }\n\n    function userWidgets(string _locale) public view returns (string jsonObject) {\n        return renderer.userWidgets(_locale, this);\n    }\n\n    function inputs(string _locale) public view returns (string jsonArray) {\n        return renderer.inputs(_locale, this);\n    }\n}",
  "sourcePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20token/contracts/token/erc20/RenderableERC20Token.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20token/contracts/token/erc20/RenderableERC20Token.sol",
    "exportedSymbols": {
      "RenderableERC20Token": [
        400
      ]
    },
    "id": 401,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 326,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:2"
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "file": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "id": 327,
        "nodeType": "ImportDirective",
        "scope": 401,
        "sourceUnit": 3792,
        "src": "26:61:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20token/contracts/token/erc20/ERC20Token.sol",
        "file": "./ERC20Token.sol",
        "id": 328,
        "nodeType": "ImportDirective",
        "scope": 401,
        "sourceUnit": 325,
        "src": "88:26:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20token/contracts/token/erc20/widget/ERC20TokenRenderer.sol",
        "file": "./widget/ERC20TokenRenderer.sol",
        "id": 329,
        "nodeType": "ImportDirective",
        "scope": 401,
        "sourceUnit": 1010,
        "src": "115:41:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 330,
              "name": "ERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 324,
              "src": "191:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20Token_$324",
                "typeString": "contract ERC20Token"
              }
            },
            "id": 331,
            "nodeType": "InheritanceSpecifier",
            "src": "191:10:2"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 332,
              "name": "Renderable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3791,
              "src": "203:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Renderable_$3791",
                "typeString": "contract Renderable"
              }
            },
            "id": 333,
            "nodeType": "InheritanceSpecifier",
            "src": "203:10:2"
          }
        ],
        "contractDependencies": [
          324,
          1062,
          1098,
          1406,
          3791,
          4230,
          4310,
          4361,
          4421,
          4601,
          4697,
          4768,
          4845,
          4877,
          4983,
          5085,
          5133,
          5380
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 400,
        "linearizedBaseContracts": [
          400,
          3791,
          324,
          5085,
          4421,
          4768,
          5133,
          4230,
          4983,
          1406,
          1062,
          1098,
          4361,
          4310,
          4601,
          5380,
          4697,
          4845,
          4877
        ],
        "name": "RenderableERC20Token",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 342,
            "name": "renderer",
            "nodeType": "VariableDeclaration",
            "scope": 400,
            "src": "220:106:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
              "typeString": "contract ERC20TokenRenderer"
            },
            "typeName": {
              "contractScope": null,
              "id": 334,
              "name": "ERC20TokenRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1009,
              "src": "220:18:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                "typeString": "contract ERC20TokenRenderer"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "5f5f4552433230546f6b656e52656e6465726572",
                          "id": 338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "301:22:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b1979b9e8d254a09bac4f713190ae8d94e0a5ecc66150bbdf26acba4d43691c6",
                            "typeString": "literal_string \"__ERC20TokenRenderer\""
                          },
                          "value": "__ERC20TokenRenderer"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_b1979b9e8d254a09bac4f713190ae8d94e0a5ecc66150bbdf26acba4d43691c6",
                            "typeString": "literal_string \"__ERC20TokenRenderer\""
                          }
                        ],
                        "id": 337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "293:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes20_$",
                          "typeString": "type(bytes20)"
                        },
                        "typeName": "bytes20"
                      },
                      "id": 339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "293:31:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    ],
                    "id": 336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "285:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": "address"
                  },
                  "id": 340,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "285:40:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 335,
                "name": "ERC20TokenRenderer",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 1009,
                "src": "266:18:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_ERC20TokenRenderer_$1009_$",
                  "typeString": "type(contract ERC20TokenRenderer)"
                }
              },
              "id": 341,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "266:60:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                "typeString": "contract ERC20TokenRenderer"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 356,
              "nodeType": "Block",
              "src": "463:7:2",
              "statements": []
            },
            "documentation": null,
            "id": 357,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 351,
                    "name": "_owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 344,
                    "src": "439:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 352,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 346,
                    "src": "447:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 353,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 348,
                    "src": "454:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 354,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 350,
                  "name": "ERC20Token",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 324,
                  "src": "428:10:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC20Token_$324_$",
                    "typeString": "type(contract ERC20Token)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "428:34:2"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 349,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 344,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 357,
                  "src": "354:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 343,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "354:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 346,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 357,
                  "src": "378:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 345,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 348,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 357,
                  "src": "400:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 347,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "400:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "344:76:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 355,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "463:0:2"
            },
            "scope": 400,
            "src": "333:137:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 370,
              "nodeType": "Block",
              "src": "554:60:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 366,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 359,
                        "src": "593:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 367,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5480,
                        "src": "602:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 364,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 342,
                        "src": "571:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                          "typeString": "contract ERC20TokenRenderer"
                        }
                      },
                      "id": 365,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "adminWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 881,
                      "src": "571:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Token_$324_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Token) view external returns (string memory)"
                      }
                    },
                    "id": 368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "571:36:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 363,
                  "id": 369,
                  "nodeType": "Return",
                  "src": "564:43:2"
                }
              ]
            },
            "documentation": null,
            "id": 371,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "adminWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 359,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 371,
                  "src": "498:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "498:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "497:16:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 362,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 371,
                  "src": "535:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 361,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "535:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "534:19:2"
            },
            "scope": 400,
            "src": "476:138:2",
            "stateMutability": "view",
            "superFunction": 3776,
            "visibility": "public"
          },
          {
            "body": {
              "id": 384,
              "nodeType": "Block",
              "src": "697:59:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 380,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 373,
                        "src": "735:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 381,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5480,
                        "src": "744:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 378,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 342,
                        "src": "714:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                          "typeString": "contract ERC20TokenRenderer"
                        }
                      },
                      "id": 379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 897,
                      "src": "714:20:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Token_$324_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Token) view external returns (string memory)"
                      }
                    },
                    "id": 382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "714:35:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 377,
                  "id": 383,
                  "nodeType": "Return",
                  "src": "707:42:2"
                }
              ]
            },
            "documentation": null,
            "id": 385,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "userWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 374,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 373,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "641:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 372,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "641:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "640:16:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 376,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "678:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 375,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "678:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "677:19:2"
            },
            "scope": 400,
            "src": "620:136:2",
            "stateMutability": "view",
            "superFunction": 3783,
            "visibility": "public"
          },
          {
            "body": {
              "id": 398,
              "nodeType": "Block",
              "src": "833:54:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 394,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 387,
                        "src": "866:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 395,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5480,
                        "src": "875:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 392,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 342,
                        "src": "850:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                          "typeString": "contract ERC20TokenRenderer"
                        }
                      },
                      "id": 393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inputs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1008,
                      "src": "850:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Token_$324_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Token) view external returns (string memory)"
                      }
                    },
                    "id": 396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "850:30:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 391,
                  "id": 397,
                  "nodeType": "Return",
                  "src": "843:37:2"
                }
              ]
            },
            "documentation": null,
            "id": 399,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "inputs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 387,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 399,
                  "src": "778:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 386,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "778:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "777:16:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 390,
                  "name": "jsonArray",
                  "nodeType": "VariableDeclaration",
                  "scope": 399,
                  "src": "815:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 389,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "815:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "814:18:2"
            },
            "scope": 400,
            "src": "762:125:2",
            "stateMutability": "view",
            "superFunction": 3790,
            "visibility": "public"
          }
        ],
        "scope": 401,
        "src": "158:731:2"
      }
    ],
    "src": "0:889:2"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20token/contracts/token/erc20/RenderableERC20Token.sol",
    "exportedSymbols": {
      "RenderableERC20Token": [
        400
      ]
    },
    "id": 401,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 326,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:2"
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "file": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "id": 327,
        "nodeType": "ImportDirective",
        "scope": 401,
        "sourceUnit": 3792,
        "src": "26:61:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20token/contracts/token/erc20/ERC20Token.sol",
        "file": "./ERC20Token.sol",
        "id": 328,
        "nodeType": "ImportDirective",
        "scope": 401,
        "sourceUnit": 325,
        "src": "88:26:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20token/contracts/token/erc20/widget/ERC20TokenRenderer.sol",
        "file": "./widget/ERC20TokenRenderer.sol",
        "id": 329,
        "nodeType": "ImportDirective",
        "scope": 401,
        "sourceUnit": 1010,
        "src": "115:41:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 330,
              "name": "ERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 324,
              "src": "191:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20Token_$324",
                "typeString": "contract ERC20Token"
              }
            },
            "id": 331,
            "nodeType": "InheritanceSpecifier",
            "src": "191:10:2"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 332,
              "name": "Renderable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3791,
              "src": "203:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Renderable_$3791",
                "typeString": "contract Renderable"
              }
            },
            "id": 333,
            "nodeType": "InheritanceSpecifier",
            "src": "203:10:2"
          }
        ],
        "contractDependencies": [
          324,
          1062,
          1098,
          1406,
          3791,
          4230,
          4310,
          4361,
          4421,
          4601,
          4697,
          4768,
          4845,
          4877,
          4983,
          5085,
          5133,
          5380
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 400,
        "linearizedBaseContracts": [
          400,
          3791,
          324,
          5085,
          4421,
          4768,
          5133,
          4230,
          4983,
          1406,
          1062,
          1098,
          4361,
          4310,
          4601,
          5380,
          4697,
          4845,
          4877
        ],
        "name": "RenderableERC20Token",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 342,
            "name": "renderer",
            "nodeType": "VariableDeclaration",
            "scope": 400,
            "src": "220:106:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
              "typeString": "contract ERC20TokenRenderer"
            },
            "typeName": {
              "contractScope": null,
              "id": 334,
              "name": "ERC20TokenRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1009,
              "src": "220:18:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                "typeString": "contract ERC20TokenRenderer"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "5f5f4552433230546f6b656e52656e6465726572",
                          "id": 338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "301:22:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b1979b9e8d254a09bac4f713190ae8d94e0a5ecc66150bbdf26acba4d43691c6",
                            "typeString": "literal_string \"__ERC20TokenRenderer\""
                          },
                          "value": "__ERC20TokenRenderer"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_b1979b9e8d254a09bac4f713190ae8d94e0a5ecc66150bbdf26acba4d43691c6",
                            "typeString": "literal_string \"__ERC20TokenRenderer\""
                          }
                        ],
                        "id": 337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "293:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes20_$",
                          "typeString": "type(bytes20)"
                        },
                        "typeName": "bytes20"
                      },
                      "id": 339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "293:31:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    ],
                    "id": 336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "285:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": "address"
                  },
                  "id": 340,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "285:40:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 335,
                "name": "ERC20TokenRenderer",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 1009,
                "src": "266:18:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_ERC20TokenRenderer_$1009_$",
                  "typeString": "type(contract ERC20TokenRenderer)"
                }
              },
              "id": 341,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "266:60:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                "typeString": "contract ERC20TokenRenderer"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 356,
              "nodeType": "Block",
              "src": "463:7:2",
              "statements": []
            },
            "documentation": null,
            "id": 357,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 351,
                    "name": "_owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 344,
                    "src": "439:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 352,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 346,
                    "src": "447:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 353,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 348,
                    "src": "454:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 354,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 350,
                  "name": "ERC20Token",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 324,
                  "src": "428:10:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC20Token_$324_$",
                    "typeString": "type(contract ERC20Token)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "428:34:2"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 349,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 344,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 357,
                  "src": "354:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 343,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "354:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 346,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 357,
                  "src": "378:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 345,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 348,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 357,
                  "src": "400:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 347,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "400:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "344:76:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 355,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "463:0:2"
            },
            "scope": 400,
            "src": "333:137:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 370,
              "nodeType": "Block",
              "src": "554:60:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 366,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 359,
                        "src": "593:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 367,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5480,
                        "src": "602:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 364,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 342,
                        "src": "571:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                          "typeString": "contract ERC20TokenRenderer"
                        }
                      },
                      "id": 365,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "adminWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 881,
                      "src": "571:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Token_$324_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Token) view external returns (string memory)"
                      }
                    },
                    "id": 368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "571:36:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 363,
                  "id": 369,
                  "nodeType": "Return",
                  "src": "564:43:2"
                }
              ]
            },
            "documentation": null,
            "id": 371,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "adminWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 359,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 371,
                  "src": "498:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "498:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "497:16:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 362,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 371,
                  "src": "535:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 361,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "535:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "534:19:2"
            },
            "scope": 400,
            "src": "476:138:2",
            "stateMutability": "view",
            "superFunction": 3776,
            "visibility": "public"
          },
          {
            "body": {
              "id": 384,
              "nodeType": "Block",
              "src": "697:59:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 380,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 373,
                        "src": "735:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 381,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5480,
                        "src": "744:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 378,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 342,
                        "src": "714:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                          "typeString": "contract ERC20TokenRenderer"
                        }
                      },
                      "id": 379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 897,
                      "src": "714:20:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Token_$324_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Token) view external returns (string memory)"
                      }
                    },
                    "id": 382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "714:35:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 377,
                  "id": 383,
                  "nodeType": "Return",
                  "src": "707:42:2"
                }
              ]
            },
            "documentation": null,
            "id": 385,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "userWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 374,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 373,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "641:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 372,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "641:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "640:16:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 376,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "678:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 375,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "678:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "677:19:2"
            },
            "scope": 400,
            "src": "620:136:2",
            "stateMutability": "view",
            "superFunction": 3783,
            "visibility": "public"
          },
          {
            "body": {
              "id": 398,
              "nodeType": "Block",
              "src": "833:54:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 394,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 387,
                        "src": "866:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 395,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5480,
                        "src": "875:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Token_$400",
                          "typeString": "contract RenderableERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 392,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 342,
                        "src": "850:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20TokenRenderer_$1009",
                          "typeString": "contract ERC20TokenRenderer"
                        }
                      },
                      "id": 393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inputs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1008,
                      "src": "850:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Token_$324_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Token) view external returns (string memory)"
                      }
                    },
                    "id": 396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "850:30:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 391,
                  "id": 397,
                  "nodeType": "Return",
                  "src": "843:37:2"
                }
              ]
            },
            "documentation": null,
            "id": 399,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "inputs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 387,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 399,
                  "src": "778:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 386,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "778:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "777:16:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 390,
                  "name": "jsonArray",
                  "nodeType": "VariableDeclaration",
                  "scope": 399,
                  "src": "815:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 389,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "815:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "814:18:2"
            },
            "scope": 400,
            "src": "762:125:2",
            "stateMutability": "view",
            "superFunction": 3790,
            "visibility": "public"
          }
        ],
        "scope": 401,
        "src": "158:731:2"
      }
    ],
    "src": "0:889:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-07T15:52:36.175Z"
}