Overview ERC20
PRICE
$0.612884 @ 0.02144 METIS (1.92%)

ON-CHAIN MARKET CAP $4,899,757.36

Total Supply:
8,034,147.09 TORCH

Holders:
5,296
Profile Summary
Blockchain:
Metis (1088)


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

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 50000 runs

Created At:
Thu, 21 Mar 2024 18:49:58 GMT
Ownable.sol
@openzeppelin
contracts
access
Ownable.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxSupply_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "initialSupply",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "initialEmissionRate",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "treasuryAddress_",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "masterShare",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "treasuryShare",
        "type": "uint256"
      }
    ],
    "name": "AllocationsDistributed",
    "type": "event"
  },
  {
    "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": "amount",
        "type": "uint256"
      }
    ],
    "name": "ClaimMasterRewards",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "startTime",
        "type": "uint256"
      }
    ],
    "name": "InitializeEmissionStart",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "masterAddress",
        "type": "address"
      }
    ],
    "name": "InitializeMasterAddress",
    "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": "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": false,
        "internalType": "uint256",
        "name": "farmingAllocation",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "legacyAllocation",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "treasuryAllocation",
        "type": "uint256"
      }
    ],
    "name": "UpdateAllocations",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "previousEmissionRate",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newEmissionRate",
        "type": "uint256"
      }
    ],
    "name": "UpdateEmissionRate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "previousMaxSupply",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newMaxSupply",
        "type": "uint256"
      }
    ],
    "name": "UpdateMaxSupply",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "previousTreasuryAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newTreasuryAddress",
        "type": "address"
      }
    ],
    "name": "UpdateTreasuryAddress",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "ALLOCATION_PRECISION",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "BURN_ADDRESS",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_EMISSION_RATE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_SUPPLY_LIMIT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "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": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "claimMasterRewards",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "effectiveAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "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": "elasticMaxSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "emissionRate",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "emitAllocations",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "farmingAllocation",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "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": [
      {
        "internalType": "uint256",
        "name": "startTime",
        "type": "uint256"
      }
    ],
    "name": "initializeEmissionStart",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "masterAddress_",
        "type": "address"
      }
    ],
    "name": "initializeMasterAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lastEmissionTime",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "legacyAllocation",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "masterAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "masterAllocation",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "masterEmissionRate",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "masterReserve",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "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"
  },
  {
    "inputs": [],
    "name": "treasuryAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "treasuryAllocation",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "farmingAllocation_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "legacyAllocation_",
        "type": "uint256"
      }
    ],
    "name": "updateAllocations",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "emissionRate_",
        "type": "uint256"
      }
    ],
    "name": "updateEmissionRate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxSupply_",
        "type": "uint256"
      }
    ],
    "name": "updateMaxSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "treasuryAddress_",
        "type": "address"
      }
    ],
    "name": "updateTreasuryAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040526064600b553480156200001657600080fd5b506040516200296238038062002962833981810160405260808110156200003c57600080fd5b50805160208083015160408085015160609095015181518083018352600e81526d2432b931bab632b9902a37b5b2b760911b81860152825180840190935260058352640a89ea486960db1b94830194909452939491939192906000620000a1620002d1565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620001009060049060208501906200044f565b508051620001169060059060208401906200044f565b50506006805460ff1916601217905550670de0b6b3a764000082111562000184576040805162461bcd60e51b815260206004820152601560248201527f696e76616c696420656d697373696f6e20726174650000000000000000000000604482015290519081900360640190fd5b6a108b2a2c28029094000000841115620001e5576040805162461bcd60e51b815260206004820152601960248201527f696e76616c696420696e697469616c206d6178537570706c7900000000000000604482015290519081900360640190fd5b8383106200023a576040805162461bcd60e51b815260206004820152601660248201527f696e76616c696420696e697469616c20737570706c7900000000000000000000604482015290519081900360640190fd5b6001600160a01b03811662000296576040805162461bcd60e51b815260206004820152601860248201527f696e76616c696420747265617375727920616464726573730000000000000000604482015290519081900360640190fd5b60078490556008829055600e80546001600160a01b0319166001600160a01b038316179055620002c73384620002d5565b50505050620004fb565b3390565b6001600160a01b03821662000331576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200033f60008383620003e8565b6200035b81600354620003ed60201b62001a281790919060201c565b6003556001600160a01b0382166000908152600160209081526040909120546200039091839062001a28620003ed821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000448576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004875760008555620004d2565b82601f10620004a257805160ff1916838001178555620004d2565b82800160010185558215620004d2579182015b82811115620004d2578251825591602001919060010190620004b5565b50620004e0929150620004e4565b5090565b5b80821115620004e05760008155600101620004e5565b612457806200050b6000396000f3fe608060405234801561001057600080fd5b50600436106102915760003560e01c80637813570511610160578063c5f956af116100d8578063ed424fd01161008c578063f2fde38b11610071578063f2fde38b146106ac578063fc1852fb146106df578063fccc2813146106fc57610291565b8063ed424fd014610687578063f103b4331461068f57610291565b8063d365a08e116100bd578063d365a08e1461063c578063dd62ed3e14610644578063e4ef9dce1461067f57610291565b8063c5f956af1461062c578063c68bb4c51461063457610291565b806395d89b411161012f578063a457c2d711610114578063a457c2d714610597578063a9059cbb146105d0578063b71144a41461060957610291565b806395d89b411461058757806396afc4501461058f57610291565b806378135705146104fe578063841e45611461051b5780638da5cb5b1461054e5780638f88bba31461057f57610291565b8063395093511161020e5780634f3147ba116101c257806367c0f278116101a757806367c0f2781461049057806370a08231146104c3578063715018a6146104f657610291565b80634f3147ba14610480578063617d11261461048857610291565b806342966c68116101f357806342966c6814610453578063436cc3d614610470578063439af45e1461047857610291565b8063395093511461041257806339eb41891461044b57610291565b80630ba84cd21161026557806323b872dd1161024a57806323b872dd146103a957806327dede2d146103ec578063313ce567146103f457610291565b80630ba84cd21461038257806318160ddd146103a157610291565b80624fbf6b146102965780630495d11c146102b057806306fdde03146102b8578063095ea7b314610335575b600080fd5b61029e610704565b60408051918252519081900360200190f35b61029e610709565b6102c061070f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102fa5781810151838201526020016102e2565b50505050905090810190601f1680156103275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61036e6004803603604081101561034b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c3565b604080519115158252519081900360200190f35b61039f6004803603602081101561039857600080fd5b50356107e1565b005b61029e610934565b61036e600480360360608110156103bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561093a565b61029e6109db565b6103fc6109e1565b6040805160ff9092168252519081900360200190f35b61036e6004803603604081101561042857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109ea565b61029e610a45565b61039f6004803603602081101561046957600080fd5b5035610a7a565b61029e610a8a565b61029e610a96565b61029e610a9c565b61029e610ab1565b61039f600480360360208110156104a657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ac0565b61029e600480360360208110156104d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cbc565b61039f610ce8565b61029e6004803603602081101561051457600080fd5b5035610dff565b61039f6004803603602081101561053157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610eff565b6105566110af565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61029e6110cb565b6102c06110d1565b61029e611150565b61036e600480360360408110156105ad57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611156565b61036e600480360360408110156105e657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356111cb565b61039f6004803603604081101561061f57600080fd5b50803590602001356111df565b61055661134e565b61029e61136a565b610556611383565b61029e6004803603604081101561065a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661139f565b61039f6113d7565b61029e61151c565b61039f600480360360208110156106a557600080fd5b5035611522565b61039f600480360360208110156106c257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166116d0565b61039f600480360360208110156106f557600080fd5b5035611871565b610556611a22565b606481565b600c5481565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b95780601f1061078e576101008083540402835291602001916107b9565b820191906000526020600020905b81548152906001019060200180831161079c57829003601f168201915b5050505050905090565b60006107d76107d0611aa3565b8484611aa7565b5060015b92915050565b6107e9611aa3565b73ffffffffffffffffffffffffffffffffffffffff166108076110af565b73ffffffffffffffffffffffffffffffffffffffff161461088957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b670de0b6b3a76400008111156108ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061239a6028913960400191505060405180910390fd5b6108f26113d7565b600854604080519182526020820183905280517f16b9091836a63537907593ebc3a80f3528891f3575b10f58ad7dd9c29fd0d44f9281900390910190a1600855565b60035490565b6000610947848484611bee565b6109d184610953611aa3565b6109cc856040518060600160405280602881526020016122c76028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526002602052604081209061099e611aa3565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190611dc0565b611aa7565b5060019392505050565b600a5481565b60065460ff1690565b60006107d76109f7611aa3565b846109cc8560026000610a08611aa3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490611a28565b6000610a756064610a6f610a66600c54600b54611a2890919063ffffffff16565b60085490611e71565b90611ee4565b905090565b610a873361dead83611bee565b50565b670de0b6b3a764000081565b60095481565b6000610a75610aa961136a565b606490611f65565b6a108b2a2c2802909400000081565b610ac8611aa3565b73ffffffffffffffffffffffffffffffffffffffff16610ae66110af565b73ffffffffffffffffffffffffffffffffffffffff1614610b6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600d5473ffffffffffffffffffffffffffffffffffffffff1615610bd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806123676033913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061226b603b913960400191505060405180910390fd5b600d805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fcba13eb1e65d2c1588ce6d10f862f4535cc67855c3f31e3d2732f8fb6b5317b29181900360200190a150565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260409020545b919050565b610cf0611aa3565b73ffffffffffffffffffffffffffffffffffffffff16610d0e6110af565b73ffffffffffffffffffffffffffffffffffffffff1614610d9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600d5460009073ffffffffffffffffffffffffffffffffffffffff163314610e72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806121526024913960400191505060405180910390fd5b610e7a6113d7565b610e86600a5483611fdc565b905080610e9257610ce3565b600a54610e9f9082611f65565b600a55600d54610ec790309073ffffffffffffffffffffffffffffffffffffffff1683611bee565b6040805182815290517f45102e9ef2c4f14fd9f3e8510c4bb2ad67fe498584602f26647da23039f125319181900360200190a1919050565b610f07611aa3565b73ffffffffffffffffffffffffffffffffffffffff16610f256110af565b73ffffffffffffffffffffffffffffffffffffffff1614610fa757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611013576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806122066026913960400191505060405180910390fd5b600e546040805173ffffffffffffffffffffffffffffffffffffffff9283168152918316602083015280517f5634a90413b79beba6c5f37aa8f19d1aee84a5320ff20ac7bd1ac63280867d5c9281900390910190a1600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600b5481565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b95780601f1061078e576101008083540402835291602001916107b9565b60085481565b60006107d7611163611aa3565b846109cc856040518060600160405280602581526020016123fd602591396002600061118d611aa3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190611dc0565b60006107d76111d8611aa3565b8484611bee565b6111e7611aa3565b73ffffffffffffffffffffffffffffffffffffffff166112056110af565b73ffffffffffffffffffffffffffffffffffffffff161461128757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61128f6113d7565b600061129b8383611a28565b905060648111156112f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612314602f913960400191505060405180910390fd5b600b839055600c8290557fa4a1bde80c0d4ba37d1bd0feec135fb515a9def4e8baee90221348069946b86c838361132c610a9c565b60408051938452602084019290925282820152519081900360600190a1505050565b600e5473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a75600c54600b54611a2890919063ffffffff16565b600d5473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b60006113e1610934565b905060006113ed611ff2565b600954600754919250908183111580611404575081155b15611412575050505061151a565b83811115806114215750600854155b156114315750506009555061151a565b60085460009061144b906114458686611f65565b90611e71565b90506114578582611a28565b82101561146b576114688286611f65565b90505b60006114846064610a6f61147d61136a565b8590611e71565b905060006114928383611f65565b6009879055600a549091506114a79083611a28565b600a556114b43083611ff6565b600e546114d79073ffffffffffffffffffffffffffffffffffffffff1682611ff6565b604080518381526020810183905281517f26c155e7637ca49a34c19c7f8cb8533322897de0808134df1a98f71557111684929181900390910190a1505050505050505b565b60075481565b61152a611aa3565b73ffffffffffffffffffffffffffffffffffffffff166115486110af565b73ffffffffffffffffffffffffffffffffffffffff16146115ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6115d2610934565b81101561162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061222c603f913960400191505060405180910390fd5b6a108b2a2c2802909400000081111561168e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121be6022913960400191505060405180910390fd5b600754604080519182526020820183905280517f6a84334bf6663b783f2bbfcaf459b2cbc73570cf346a46d9e6a0f290fcf3ebfc9281900390910190a1600755565b6116d8611aa3565b73ffffffffffffffffffffffffffffffffffffffff166116f66110af565b73ffffffffffffffffffffffffffffffffffffffff161461177857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121766026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611879611aa3565b73ffffffffffffffffffffffffffffffffffffffff166118976110af565b73ffffffffffffffffffffffffffffffffffffffff161461191957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60095415611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806123c2603b913960400191505060405180910390fd5b8061197b611ff2565b106119e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f696e697469616c697a65456d697373696f6e53746172743a20696e76616c6964604482015290519081900360640190fd5b60098190556040805182815290517f10e116be9bb4f621259f592ccd7e00d783e796535f2a5f3bc91a79da0fc3456d9181900360200190a150565b61dead81565b600082820183811015611a9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611b13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806123436024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061219c6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611c5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806122ef6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611cc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061212f6023913960400191505060405180910390fd5b611cd1838383612129565b611d1b816040518060600160405280602681526020016121e06026913973ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549190611dc0565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054611d579082611a28565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611e69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e2e578181015183820152602001611e16565b50505050905090810190601f168015611e5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082611e80575060006107db565b82820282848281611e8d57fe5b0414611a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122a66021913960400191505060405180910390fd5b6000808211611f5457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611f5d57fe5b049392505050565b600082821115611fd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000818310611feb5781611a9c565b5090919050565b4290565b73ffffffffffffffffffffffffffffffffffffffff821661207857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61208460008383612129565b6003546120919082611a28565b60035573ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546120c49082611a28565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373477261696c546f6b656e3a2063616c6c6572206973206e6f7420746865206d61737465724f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573737570646174654d6178537570706c793a20696e76616c6964206d6178537570706c7945524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63657570646174655472656173757279416464726573733a20696e76616c696420616464726573737570646174654d6178537570706c793a2063616e2774206265206c6f776572207468616e2063757272656e742063697263756c6174696e6720737570706c79696e697469616c697a654d6173746572416464726573733a206d617374657220696e697469616c697a656420746f207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373757064617465416c6c6f636174696f6e733a20746f74616c20616c6c6f636174696f6e20697320746f6f206869676845524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373696e697469616c697a654d6173746572416464726573733a206d617374657220616c726561647920696e697469616c697a6564757064617465456d697373696f6e526174653a2063616e277420657863656564206d6178696d756d696e697469616c697a65456d697373696f6e53746172743a20656d697373696f6e20737461727420616c726561647920696e697469616c697a656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e38763c3c4db08bc3284150067e10348afdf3ac2e5508327c0df5f1093a6561264736f6c63430007060033000000000000000000000000000000000000000000084595161401484a0000000000000000000000000000000000000000000000000669205782b4319fc00000000000000000000000000000000000000000000000000000004d194c57ebca800000000000000000000000005c24ba2ea12f94e9f3476eabdf10373dc2913605