Overview ERC20
PRICE
$0.041421

ON-CHAIN MARKET CAP n/a

Total Supply:
1,000,000,000.00 GOAT

Holders:
383
Profile Summary
Blockchain:
Ethereum (1)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
GOAT

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Created At:
Wed, 17 Jul 2024 01:58:59 GMT
GOAT.sol
GOAT.sol
GOAT.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "buyTaxTotal",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "buyMarketingTax",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "buyProjectTax",
        "type": "uint256"
      }
    ],
    "name": "BuyFeeUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "DisabledTransferDelay",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "ExcludeFromFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "ExcludeFromLimits",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "LimitsRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newWallet",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldWallet",
        "type": "address"
      }
    ],
    "name": "MarketingWalletUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "maxTx",
        "type": "uint256"
      }
    ],
    "name": "MaxTxUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "maxWallet",
        "type": "uint256"
      }
    ],
    "name": "MaxWalletUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newWallet",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldWallet",
        "type": "address"
      }
    ],
    "name": "ProjectWalletUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "sellTaxTotal",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "sellMarketingTax",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "sellProjectTax",
        "type": "uint256"
      }
    ],
    "name": "SellFeeUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "SetAutomatedMarketMakerPair",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "swapBackValueMin",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "swapBackValueMax",
        "type": "uint256"
      }
    ],
    "name": "SwapbackSettingsUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "TradingEnabled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldAddress",
        "type": "address"
      }
    ],
    "name": "UpdateUniswapV2Router",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_enable",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "_min",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_max",
        "type": "uint256"
      }
    ],
    "name": "chanegSwbackValue",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newMaxTxLimit",
        "type": "uint256"
      }
    ],
    "name": "changeMaxT",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newMaxWalletLimit",
        "type": "uint256"
      }
    ],
    "name": "changeMaxW",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_target",
        "type": "address"
      }
    ],
    "name": "checkMappings",
    "outputs": [
      {
        "internalType": "bool",
        "name": "_transferTaxExempt",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "_transferLimitExempt",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "_automatedMarketMakerPairs",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "subtractedValue",
        "type": "uint256"
      }
    ],
    "name": "decreaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "dexPair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "excluded",
        "type": "bool"
      }
    ],
    "name": "exemptFromF",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "updAds",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "isEx",
        "type": "bool"
      }
    ],
    "name": "exemptFromL",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "addedValue",
        "type": "uint256"
      }
    ],
    "name": "increaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxTxValues",
    "outputs": [
      {
        "internalType": "bool",
        "name": "_limitsEnabled",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "_maxWallet",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_maxTx",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "openTrading",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "receiverwallets",
    "outputs": [
      {
        "internalType": "address",
        "name": "_marketingWallet",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_projectWallet",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "remlits",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_anti",
        "type": "bool"
      }
    ],
    "name": "setAnti",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "setAutomatedMarketMakerPair",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newWallet",
        "type": "address"
      }
    ],
    "name": "setDW",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_devFee",
        "type": "uint256"
      }
    ],
    "name": "setFeeForBuys",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_devFee",
        "type": "uint256"
      }
    ],
    "name": "setFeeForSells",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newWallet",
        "type": "address"
      }
    ],
    "name": "setMW",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapbackValues",
    "outputs": [
      {
        "internalType": "bool",
        "name": "_swapbackEnabled",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "_swapBackValueMin",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_swapBackValueMax",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "taxValues",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "_buyTaxTotal",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_buyMarketingTax",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_buyProjectTax",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_sellTaxTotal",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_sellMarketingTax",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_sellProjectTax",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tradingEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60c06040526005805460ff60a81b191690556008805460ff199081166001908117909255600c8054821690556019805490911690911790553480156200004457600080fd5b506040518060400160405280601f81526020017f4d616b65205472756d7020507265736964656e74204f6e636520416761696e008152506040518060400160405280600481526020016311d3d05560e21b8152508160039081620000a991906200088d565b506004620000b882826200088d565b505050620000d5620000cf6200044260201b60201c565b62000446565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000f781600162000498565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000168919062000959565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001dc919062000959565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000250919062000959565b6001600160a01b031660a08190526200026b90600162000498565b60a0516200027b90600162000547565b60146000601e8180620002916012600a62000aa0565b620002a190633b9aca0062000ab1565b90506103e8620002b382600a62000ab1565b620002bf919062000acb565b600a9081556103e890620002d590839062000ab1565b620002e1919062000acb565b6009556103e8620002f482600162000ab1565b62000300919062000acb565b60065560646200031282600262000ab1565b6200031e919062000acb565b600755600f859055601084905562000337848662000aee565b600e556012839055601382905562000350828462000aee565b601155600c8054610100600160a81b031916743110be66c4f756e5181189b3a7bda90db549c1e600179055600d8054336001600160a01b031990911681179091556200039e9060016200059b565b620003ab3060016200059b565b620003ba61dead60016200059b565b600c54620003d89061010090046001600160a01b031660016200059b565b620003e533600162000498565b620003f230600162000498565b6200040161dead600162000498565b600c546200041f9061010090046001600160a01b0316600162000498565b6200042a336200063f565b620004363382620006ff565b50505050505062000b04565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004e75760405162461bcd60e51b815260206004820181905260248201526000805160206200302d83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291015b60405180910390a25050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005e65760405162461bcd60e51b815260206004820181905260248201526000805160206200302d8339815191526044820152606401620004de565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016200053b565b6005546001600160a01b031633146200068a5760405162461bcd60e51b815260206004820181905260248201526000805160206200302d8339815191526044820152606401620004de565b6001600160a01b038116620006f15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004de565b620006fc8162000446565b50565b6001600160a01b038216620007575760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004de565b80600260008282546200076b919062000aee565b90915550506001600160a01b038216600090815260208190526040812080548392906200079a90849062000aee565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200081457607f821691505b6020821081036200083557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007e457600081815260208120601f850160051c81016020861015620008645750805b601f850160051c820191505b81811015620008855782815560010162000870565b505050505050565b81516001600160401b03811115620008a957620008a9620007e9565b620008c181620008ba8454620007ff565b846200083b565b602080601f831160018114620008f95760008415620008e05750858301515b600019600386901b1c1916600185901b17855562000885565b600085815260208120601f198616915b828110156200092a5788860151825594840194600190910190840162000909565b5085821015620009495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200096c57600080fd5b81516001600160a01b03811681146200098457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009e2578160001904821115620009c657620009c66200098b565b80851615620009d457918102915b93841c9390800290620009a6565b509250929050565b600082620009fb5750600162000a9a565b8162000a0a5750600062000a9a565b816001811462000a23576002811462000a2e5762000a4e565b600191505062000a9a565b60ff84111562000a425762000a426200098b565b50506001821b62000a9a565b5060208310610133831016604e8410600b841016171562000a73575081810a62000a9a565b62000a7f8383620009a1565b806000190482111562000a965762000a966200098b565b0290505b92915050565b60006200098460ff841683620009ea565b808202811582820484141762000a9a5762000a9a6200098b565b60008262000ae957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a9a5762000a9a6200098b565b60805160a0516124ee62000b3f600039600081816106830152610dd6015260008181611f3a01528181611ff3015261202f01526124ee6000f3fe6080604052600436106101fd5760003560e01c80638cc0947d1161010d578063c9567bf9116100a0578063eae779071161006f578063eae7790714610651578063f242ab4114610671578063f2fde38b146106a5578063f3dc3902146106c5578063fab82a8e1461071157600080fd5b8063c9567bf914610563578063d084bd3914610578578063dd62ed3e14610598578063e13b2007146105de57600080fd5b8063a457c2d7116100dc578063a457c2d7146104ee578063a9059cbb1461050e578063b4967e841461052e578063b56e0e2e1461054357600080fd5b80638cc0947d146104675780638da5cb5b1461048757806395d89b41146104b95780639a7a23d6146104ce57600080fd5b806331f81511116101905780636b370e021161015f5780636b370e02146103b557806370a08231146103d5578063715018a61461040b57806377b5312c146104205780637ff6f7b91461044757600080fd5b806331f8151114610321578063395093511461035b57806344dc95541461037b5780634ada218b1461039b57600080fd5b80632193a071116101cc5780632193a071146102a557806323b872dd146102c55780632e71b983146102e5578063313ce5671461030557600080fd5b806304c64b9d1461020957806306fdde031461022b578063095ea7b31461025657806318160ddd1461028657600080fd5b3661020457005b600080fd5b34801561021557600080fd5b506102296102243660046120c4565b610749565b005b34801561023757600080fd5b506102406107d9565b60405161024d91906120e1565b60405180910390f35b34801561026257600080fd5b5061027661027136600461212f565b61086b565b604051901515815260200161024d565b34801561029257600080fd5b506002545b60405190815260200161024d565b3480156102b157600080fd5b506102296102c036600461215b565b610882565b3480156102d157600080fd5b506102766102e036600461217d565b610974565b3480156102f157600080fd5b506102296103003660046121d3565b610a1e565b34801561031157600080fd5b506040516012815260200161024d565b34801561032d57600080fd5b50600854600954600a5460ff909216915b60408051931515845260208401929092529082015260600161024d565b34801561036757600080fd5b5061027661037636600461212f565b610aa8565b34801561038757600080fd5b5061022961039636600461215b565b610ae4565b3480156103a757600080fd5b50600c546102769060ff1681565b3480156103c157600080fd5b506102296103d0366004612208565b610bcf565b3480156103e157600080fd5b506102976103f03660046120c4565b6001600160a01b031660009081526020819052604090205490565b34801561041757600080fd5b50610229610ca6565b34801561042c57600080fd5b50600554600654600754600160a81b90920460ff169161033e565b34801561045357600080fd5b50610229610462366004612221565b610cdc565b34801561047357600080fd5b506102296104823660046121d3565b610d19565b34801561049357600080fd5b506005546001600160a01b03165b6040516001600160a01b03909116815260200161024d565b3480156104c557600080fd5b50610240610d9b565b3480156104da57600080fd5b506102296104e93660046121d3565b610daa565b3480156104fa57600080fd5b5061027661050936600461212f565b610e89565b34801561051a57600080fd5b5061027661052936600461212f565b610f22565b34801561053a57600080fd5b50610229610f2f565b34801561054f57600080fd5b5061022961055e366004612208565b610f90565b34801561056f57600080fd5b5061022961106c565b34801561058457600080fd5b506102296105933660046120c4565b6110e3565b3480156105a457600080fd5b506102976105b336600461223c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105ea57600080fd5b506106326105f93660046120c4565b6001600160a01b03166000908152601660209081526040808320546017835281842054601890935292205460ff92831693918316921690565b604080519315158452911515602084015215159082015260600161024d565b34801561065d57600080fd5b5061022961066c366004612275565b611175565b34801561067d57600080fd5b506104a17f000000000000000000000000000000000000000000000000000000000000000081565b3480156106b157600080fd5b506102296106c03660046120c4565b611313565b3480156106d157600080fd5b50600e54600f54601054601154601254601354604080519687526020870195909552938501929092526060840152608083015260a082015260c00161024d565b34801561071d57600080fd5b50600c54600d54604080516101009093046001600160a01b03908116845290911660208301520161024d565b6005546001600160a01b0316331461077c5760405162461bcd60e51b8152600401610773906122a8565b60405180910390fd5b600d546040516001600160a01b03918216918316907fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e790600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600380546107e8906122dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610814906122dd565b80156108615780601f1061083657610100808354040283529160200191610861565b820191906000526020600020905b81548152906001019060200180831161084457829003601f168201915b5050505050905090565b60006108783384846113ae565b5060015b92915050565b6005546001600160a01b031633146108ac5760405162461bcd60e51b8152600401610773906122a8565b600f82905560108190556108c0818361232d565b600e819055606410156109265760405162461bcd60e51b815260206004820152602860248201527f546f74616c20627579206665652063616e6e6f7420626520686967686572207460448201526768616e203130302560c01b6064820152608401610773565b600e54600f54601054604080519384526020840192909252908201527f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e906060015b60405180910390a15050565b60006109818484846114d2565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a065760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610773565b610a1385338584036113ae565b506001949350505050565b6005546001600160a01b03163314610a485760405162461bcd60e51b8152600401610773906122a8565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291015b60405180910390a25050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610878918590610adf90869061232d565b6113ae565b6005546001600160a01b03163314610b0e5760405162461bcd60e51b8152600401610773906122a8565b60128290556013819055610b22818361232d565b601181905560641015610b895760405162461bcd60e51b815260206004820152602960248201527f546f74616c2073656c6c206665652063616e6e6f7420626520686967686572206044820152687468616e203130302560b81b6064820152608401610773565b601154601254601354604080519384526020840192909252908201527fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f190606001610968565b6005546001600160a01b03163314610bf95760405162461bcd60e51b8152600401610773906122a8565b6002811015610c4a5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e32256044820152606401610773565b6103e8610c5660025490565b610c609083612340565b610c6a9190612357565b600a8190556040519081527fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a906020015b60405180910390a150565b6005546001600160a01b03163314610cd05760405162461bcd60e51b8152600401610773906122a8565b610cda6000611b73565b565b6005546001600160a01b03163314610d065760405162461bcd60e51b8152600401610773906122a8565b6019805460ff1916911515919091179055565b6005546001600160a01b03163314610d435760405162461bcd60e51b8152600401610773906122a8565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610a9c565b6060600480546107e8906122dd565b6005546001600160a01b03163314610dd45760405162461bcd60e51b8152600401610773906122a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e7b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610773565b610e858282611bc5565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f0b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610773565b610f1833858584036113ae565b5060019392505050565b60006108783384846114d2565b6005546001600160a01b03163314610f595760405162461bcd60e51b8152600401610773906122a8565b6008805460ff1916905560405142907ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261690600090a2565b6005546001600160a01b03163314610fba5760405162461bcd60e51b8152600401610773906122a8565b60058110156110175760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610773565b6103e861102360025490565b61102d9083612340565b6110379190612357565b60098190556040519081527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace90602001610c9b565b6005546001600160a01b031633146110965760405162461bcd60e51b8152600401610773906122a8565b600c805460ff191660011790556005805460ff60a81b1916600160a81b17905560405142907fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92390600090a2565b6005546001600160a01b0316331461110d5760405162461bcd60e51b8152600401610773906122a8565b600c546040516001600160a01b036101009092048216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3600c80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b0316331461119f5760405162461bcd60e51b8152600401610773906122a8565b600182101561120d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e604482015273101817181892903a37ba30b61039bab838363c9760611b6064820152608401610773565b818110156112705760405162461bcd60e51b815260206004820152602a60248201527f6d6178696d756d20616d6f756e742063616e7420626520686967686572207468604482015269616e206d696e696d756d60b01b6064820152608401610773565b6005805460ff60a81b1916600160a81b8515150217905560025461271090839061129a9190612340565b6112a49190612357565b600655612710816112b460025490565b6112be9190612340565b6112c89190612357565b600755604080518415158152602081018490529081018290527f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c7799060600160405180910390a1505050565b6005546001600160a01b0316331461133d5760405162461bcd60e51b8152600401610773906122a8565b6001600160a01b0381166113a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610773565b6113ab81611b73565b50565b6001600160a01b0383166114105760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610773565b6001600160a01b0382166114715760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610773565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114f85760405162461bcd60e51b815260040161077390612379565b6001600160a01b03821661151e5760405162461bcd60e51b8152600401610773906123be565b806000036115375761153283836000611c19565b505050565b60085460ff161561189c576005546001600160a01b0384811691161480159061156e57506005546001600160a01b03838116911614155b801561158257506001600160a01b03821615155b801561159957506001600160a01b03821661dead14155b80156115af5750600554600160a01b900460ff16155b1561189c57600c5460ff16611654576001600160a01b03831660009081526016602052604090205460ff16806115fd57506001600160a01b03821660009081526016602052604090205460ff165b6116545760405162461bcd60e51b815260206004820152602260248201527f5f7472616e736665723a3a2054726164696e67206973206e6f74206163746976604482015261329760f11b6064820152608401610773565b6001600160a01b03831660009081526018602052604090205460ff16801561169557506001600160a01b03821660009081526017602052604090205460ff16155b1561176a57600a548111156116fb5760405162461bcd60e51b815260206004820152602660248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526536b0bc2a3c1760d11b6064820152608401610773565b6009546001600160a01b038316600090815260208190526040902054611721908361232d565b11156117655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610773565b61189c565b6001600160a01b03821660009081526018602052604090205460ff1680156117ab57506001600160a01b03831660009081526017602052604090205460ff16155b1561181257600a548111156117655760405162461bcd60e51b815260206004820152602760248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152661036b0bc2a3c1760c91b6064820152608401610773565b6001600160a01b03821660009081526017602052604090205460ff1661189c576009546001600160a01b038316600090815260208190526040902054611858908361232d565b111561189c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610773565b30600090815260208190526040902054600654811080159081906118c95750600554600160a81b900460ff165b80156118df5750600554600160a01b900460ff16155b801561190457506001600160a01b03851660009081526018602052604090205460ff16155b801561192957506001600160a01b03851660009081526016602052604090205460ff16155b801561194e57506001600160a01b03841660009081526016602052604090205460ff16155b1561197d576005805460ff60a01b1916600160a01b17905561196f83611d6e565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526016602052604090205460ff600160a01b9092048216159116806119cb57506001600160a01b03851660009081526016602052604090205460ff165b156119d4575060005b60008115611b5f576001600160a01b03861660009081526018602052604090205460ff168015611a0657506000601154115b15611a9457611a2b6064611a2560115488611ec490919063ffffffff16565b90611ed7565b905060115460135482611a3e9190612340565b611a489190612357565b60156000828254611a59919061232d565b9091555050601154601254611a6e9083612340565b611a789190612357565b60146000828254611a89919061232d565b90915550611b419050565b6001600160a01b03871660009081526018602052604090205460ff168015611abe57506000600e54115b15611b4157611add6064611a25600e5488611ec490919063ffffffff16565b9050600e5460105482611af09190612340565b611afa9190612357565b60156000828254611b0b919061232d565b9091555050600e54600f54611b209083612340565b611b2a9190612357565b60146000828254611b3b919061232d565b90915550505b8015611b5257611b52873083611c19565b611b5c8186612401565b94505b611b6a878787611c19565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611c3f5760405162461bcd60e51b815260040161077390612379565b6001600160a01b038216611c655760405162461bcd60e51b8152600401610773906123be565b6001600160a01b03831660009081526020819052604090205481811015611cdd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610773565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d1490849061232d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d6091815260200190565b60405180910390a350505050565b30600090815260208190526040812054908190818103611d8e5750505050565b600754831115611d9e5760075492505b60195460ff168015611db95750611db6846005612340565b83115b15611dcc57611dc9846005612340565b92505b8247611dd782611ee3565b6000611de347836120a3565b90506000611e0086611a2560155485611ec490919063ffffffff16565b600060148190556015819055600d546040519293506001600160a01b031691839181818185875af1925050503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5050600c5460405191965061010090046001600160a01b0316904790600081818185875af1925050503d8060008114611eb2576040519150601f19603f3d011682016040523d82523d6000602084013e611eb7565b606091505b5050505050505050505050565b6000611ed08284612340565b9392505050565b6000611ed08284612357565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f1857611f18612414565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fba919061242a565b81600181518110611fcd57611fcd612414565b60200260200101906001600160a01b031690816001600160a01b031681525050612018307f0000000000000000000000000000000000000000000000000000000000000000846113ae565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061206d908590600090869030904290600401612447565b600060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b505050505050565b6000611ed08284612401565b6001600160a01b03811681146113ab57600080fd5b6000602082840312156120d657600080fd5b8135611ed0816120af565b600060208083528351808285015260005b8181101561210e578581018301518582016040015282016120f2565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561214257600080fd5b823561214d816120af565b946020939093013593505050565b6000806040838503121561216e57600080fd5b50508035926020909101359150565b60008060006060848603121561219257600080fd5b833561219d816120af565b925060208401356121ad816120af565b929592945050506040919091013590565b803580151581146121ce57600080fd5b919050565b600080604083850312156121e657600080fd5b82356121f1816120af565b91506121ff602084016121be565b90509250929050565b60006020828403121561221a57600080fd5b5035919050565b60006020828403121561223357600080fd5b611ed0826121be565b6000806040838503121561224f57600080fd5b823561225a816120af565b9150602083013561226a816120af565b809150509250929050565b60008060006060848603121561228a57600080fd5b612293846121be565b95602085013595506040909401359392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806122f157607f821691505b60208210810361231157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561087c5761087c612317565b808202811582820484141761087c5761087c612317565b60008261237457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561087c5761087c612317565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561243c57600080fd5b8151611ed0816120af565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124975784516001600160a01b031683529383019391830191600101612472565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220184d0ae2f5712f1ce978211bcb7758c82b046e3c55a150826729bda4e314f62c64736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572