Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
29.96 farmdWBTCV3

Holders:
57
Profile Summary
Blockchain:
Ethereum (1)


Decimals:
8
Contract Source Code Verified (Partial Match)
Contract Name:
FarmingPool

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000 runs

Created At:
Sat, 16 Dec 2023 10:49:59 GMT
FarmingPool.sol
node_modules
@1inch
farming
contracts
FarmingPool.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "contract IERC20Metadata",
        "name": "stakingToken_",
        "type": "address"
      },
      {
        "internalType": "contract IERC20",
        "name": "rewardsToken_",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AccessDenied",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AmountTooLarge",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DurationTooLarge",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientFunds",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MaxBalanceExceeded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SafeTransferFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SafeTransferFromFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SameDistributor",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SameStakingAndRewardsTokens",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroDistributorAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroDuration",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroRewardsTokenAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroStakingTokenAddress",
    "type": "error"
  },
  {
    "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": "address",
        "name": "oldDistributor",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newDistributor",
        "type": "address"
      }
    ],
    "name": "DistributorChanged",
    "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": false,
        "internalType": "uint256",
        "name": "reward",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "duration",
        "type": "uint256"
      }
    ],
    "name": "RewardUpdated",
    "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"
  },
  {
    "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": [],
    "name": "claim",
    "outputs": [],
    "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": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "deposit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "distributor",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "exit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "farmInfo",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint40",
            "name": "finished",
            "type": "uint40"
          },
          {
            "internalType": "uint32",
            "name": "duration",
            "type": "uint32"
          },
          {
            "internalType": "uint184",
            "name": "reward",
            "type": "uint184"
          },
          {
            "internalType": "uint256",
            "name": "balance",
            "type": "uint256"
          }
        ],
        "internalType": "struct FarmAccounting.Info",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "farmed",
    "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": [],
    "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": [
      {
        "internalType": "contract IERC20",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "rescueFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rewardsToken",
    "outputs": [
      {
        "internalType": "contract IERC20",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "distributor_",
        "type": "address"
      }
    ],
    "name": "setDistributor",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "stakingToken",
    "outputs": [
      {
        "internalType": "contract IERC20",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "period",
        "type": "uint256"
      }
    ],
    "name": "startFarming",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "stopFarming",
    "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": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "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": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60c060409080825234620004eb578181620023db8038038091620000248285620004f0565b833981010312620004eb5780516001600160a01b039182821691829003620004eb576020809101519280841690818503620004eb5785516306fdde0360e01b815260049390600090818187818a5afa908115620004e1578291620004c3575b50620000c6602b8a5180936a02330b936b4b7339037b3160ad1b87830152620000b5815180928986860191016200052a565b810103600b810184520182620004f0565b88516395d89b4160e01b815293828588818b5afa948515620004b957839562000490575b50895190636661726d60e01b858301526200012886519683886200011860249a8b948b86860191016200052a565b8101038a810185520183620004f0565b8354336001600160a01b031982168117865591167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a381516001600160401b03939091908483116200039e578854926001948585811c9516801562000485575b8886101462000473578190601f9586811162000420575b508890868311600114620003bc578492620003b0575b5050600019600383901b1c191690851b1789555b81519485116200039e576005968754908582811c9216801562000393575b888310146200038257508381116200033c575b5085928511600114620002d5579394508492919083620002c9575b50501b916000199060031b1c19161790555b808314620002ba578215620002ab57156200029d575060805260a05251611e179081620005c482396080518181816103bd0152818161086801528181610afe01528181610ed90152611532015260a0518181816102d30152818161094601528181610ce1015281816111d401526116ff0152f35b83516330c1035b60e21b8152fd5b508351633bbbfc7960e01b8152fd5b508351630d21e9d760e41b8152fd5b01519250388062000217565b86815285812093958591601f198316915b8883831062000321575050501062000307575b505050811b01905562000229565b015160001960f88460031b161c19169055388080620002f9565b858701518855909601959485019487935090810190620002e6565b878252868220848088018a1c82019289891062000378575b01891c019085905b8281106200036c575050620001fc565b8381550185906200035c565b9250819262000354565b634e487b7160e01b835260228b5282fd5b91607f1691620001e9565b634e487b7160e01b8152604189528690fd5b015190503880620001b7565b8c85528985208894509190601f198416865b8c828210620004095750508411620003ef575b505050811b018955620001cb565b015160001960f88460031b161c19169055388080620003e1565b8385015186558b97909501949384019301620003ce565b9091508b84528884208680850160051c8201928b861062000469575b918991869594930160051c01915b8281106200045a575050620001a1565b8681558594508991016200044a565b925081926200043c565b634e487b7160e01b835260228b528883fd5b94607f16946200018a565b620004b19195503d8085833e620004a88183620004f0565b8101906200054f565b9338620000ea565b8a513d85823e3d90fd5b620004da91503d8084833e620004a88183620004f0565b3862000083565b89513d84823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200051457604052565b634e487b7160e01b600052604160045260246000fd5b60005b8381106200053e5750506000910152565b81810151838201526020016200052d565b602081830312620004eb5780516001600160401b0391828211620004eb57019082601f83011215620004eb5781519081116200051457604051926200059f601f8301601f191660200185620004f0565b81845260208284010111620004eb57620005c091602080850191016200052a565b9056fe6080604081815260048036101561001557600080fd5b600092833560e01c90816306fdde031461124f57508063095ea7b31461122557806318160ddd146112065780631bfa4c04146110ef5780631d49d66c1461104b57806323b872dd14610f805780632e1a7d4d14610f63578063313ce56714610e935780633950935114610e445780634216f97214610de95780634e71d92d14610dd05780637026122214610bbf57806370a0823114610b88578063715018a614610b2257806372f702f314610ade57806375619ab5146109fd57806378e3214f146107035780638da5cb5b146106dd57806395d89b41146105db578063a457c2d71461051b578063a9059cbb146104ea578063b6b55f251461031f578063bfe10928146102f7578063d1af0c7d146102b3578063dd62ed3e1461026a578063e9fad8ee146102355763f2fde38b1461014c57600080fd5b346102315760203660031901126102315761016561138c565b9061016e6119e9565b6001600160a01b038092169283156101c857505082548273ffffffffffffffffffffffffffffffffffffffff198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b8280fd5b50503461026657816003193601126102665761025b9033835260016020528220546114b7565b6102636116af565b80f35b5080fd5b5050346102665780600319360112610266578060209261028861138c565b6102906113a7565b6001600160a01b0391821683526002865283832091168252845220549051908152f35b505034610266578160031936011261026657602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346102665781600319360112610266576020906001600160a01b03600654169051908152f35b503461023157602091826003193601126104e65781359233156104a557831515808061049d575b610407575b5060019061035b85600354611756565b6003553386528181528286208581540190558251858152867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef833393a3338652526d04ee2d6d415b85acef810000000081852054116103e157836102638430337f00000000000000000000000000000000000000000000000000000000000000006118ae565b517f24691f6b000000000000000000000000000000000000000000000000000000008152fd5b61040f611779565b9061041d8383015192611411565b9080610495575b61042f575b5061034b565b4264ffffffffff16602882901b64ffffffffff19161760028301556003906104579087611848565b9133885201825282862080548783820193841291129080158216911516176104825755600138610429565b602487601187634e487b7160e01b835252fd5b506001610424565b506001610346565b60649291519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b8380fd5b50503461026657806003193601126102665760209061051461050a61138c565b6024359033611a41565b5160018152f35b5082346105d857826003193601126105d85761053561138c565b91836024359233815260026020528181206001600160a01b038616825260205220549082821061056f576020856105148585038733611cad565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152fd5b80fd5b509034610231578260031936011261023157805191836005549060019082821c9282811680156106d3575b60209586861082146106c0575084885290811561069e5750600114610645575b6106418686610637828b03836113ef565b5191829182611343565b0390f35b929550600583527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b82841061068b575050508261064194610637928201019438610626565b805486850188015292860192810161066e565b60ff191687860152505050151560051b83010192506106378261064138610626565b836022602492634e487b7160e01b835252fd5b93607f1693610606565b5050346102665781600319360112610266576001600160a01b0360209254169051908152f35b5090346102315780600319360112610231576001600160a01b038235818116929183820361092c576024938435928260065416918233036109ee578061085c575050506006541681471061081a578580809381935af13d15610815573d67ffffffffffffffff811161080357825190610786601f8201601f1916602001836113ef565b81528560203d92013e5b1561079b5750505080f35b608492916020603a92519362461bcd60e51b85528401528201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152fd5b8386604187634e487b7160e01b835252fd5b610790565b606485601d86602087519362461bcd60e51b85528401528201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152fd5b909395919492809897987f000000000000000000000000000000000000000000000000000000000000000016908183146000146109425750602091508351928380926370a0823160e01b8252308c8301525afa908115610938578691610903575b506108ca85600354611756565b116108db575061026393945061194f565b8590517f356680b7000000000000000000000000000000000000000000000000000000008152fd5b90506020813d8211610930575b8161091d602093836113ef565b8101031261092c5751386108bd565b8580fd5b3d9150610910565b82513d88823e3d90fd5b90507f00000000000000000000000000000000000000000000000000000000000000001680911461097c575b50505061026393945061194f565b6020908351928380926370a0823160e01b8252308c8301525afa9081156109385786916109bd575b506109b185600854611756565b116108db57808061096e565b90506020813d82116109e6575b816109d7602093836113ef565b8101031261092c5751386109a4565b3d91506109ca565b878651634ca8886760e01b8152fd5b50903461023157602036600319011261023157610a1861138c565b90610a216119e9565b6001600160a01b03809216928315610ab75760065492831690818514610a905750817fa9f739537fc57540bed0a44e33e27baa63290d865cc15f0f16cf17d38c998a4d9173ffffffffffffffffffffffffffffffffffffffff19949351908152856020820152a1161760065580f35b82517f8750ee90000000000000000000000000000000000000000000000000000000008152fd5b90517f71702079000000000000000000000000000000000000000000000000000000008152fd5b505034610266578160031936011261026657602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b83346105d857806003193601126105d857610b3b6119e9565b806001600160a01b03815473ffffffffffffffffffffffffffffffffffffffff1981168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50503461026657602036600319011261026657806020926001600160a01b03610baf61138c565b1681526001845220549051908152f35b5090346102315780600319360112610231578135916024356001600160a01b03600654163303610dc157610bf1611779565b610c20610c02602083015192611411565b4264ffffffffff1660289190911b64ffffffffff1916176002830155565b84928215610d9a5763ffffffff90818411610d735782549064ffffffffff90818316926001860193845495814210610d2c575b5050506d04ee2d6d415b85acef81000000008711610d05575091859391610cad7f3efe2b1ade87153c913a322f09a35c930d7fd699770b8d7cdd294e1debf6e9e4978795610ca66102639c9b9942611756565b1693611756565b905568ffffffffffffffffff198460481b1668ffffffff00000000008460281b161717905582519182526020820152a130337f00000000000000000000000000000000000000000000000000000000000000006118ae565b87517f06250401000000000000000000000000000000000000000000000000000000008152fd5b610d6a939950610d5a85610d538594670de0b6b3a764000094610d649760281c1690611824565b16896117b8565b049060481c61183b565b89611756565b95388080610c53565b85517f426a1073000000000000000000000000000000000000000000000000000000008152fd5b84517f68d5686e000000000000000000000000000000000000000000000000000000008152fd5b509051634ca8886760e01b8152fd5b83346105d857806003193601126105d8576102636116af565b50503461026657602036600319011261026657610e3d602092610e0a61138c565b83610e13611779565b926001600160a01b038316815260018752205490610e376002878501510193611411565b92611874565b9051908152f35b505034610266578060031936011261026657610514602092610e8c610e6761138c565b91338152600286528481206001600160a01b0384168252865284602435912054611756565b9033611cad565b5091346105d857806003193601126105d8576020825180947f313ce567000000000000000000000000000000000000000000000000000000008252816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa928315610f57578193610f16575b60208460ff855191168152f35b9092506020813d8211610f4f575b81610f31602093836113ef565b8101031261023157519160ff831683036105d8575060ff6020610f09565b3d9150610f24565b509051903d90823e3d90fd5b8382346102665760203660031901126102665761026390356114b7565b5082903461026657606036600319011261026657610f9c61138c565b610fa46113a7565b9184604435946001600160a01b038416815260026020528181203382526020522054906000198203610fdf575b602086610514878787611a41565b8482106110085750918391610ffd6020969561051495033383611cad565b919394819350610fd1565b606490602087519162461bcd60e51b8352820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b5050346102665781600319360112610266576080916060825161106d816113bd565b828152826020820152828482015201528051611088816113bd565b6007549176ffffffffffffffffffffffffffffffffffffffffffffff64ffffffffff8416938484526020840163ffffffff90818360281c1681528486019260481c835260606008549601958652845196875251166020860152511690830152516060820152f35b50346102315782600319360112610231576001600160a01b036006541633036111f857507f3efe2b1ade87153c913a322f09a35c930d7fd699770b8d7cdd294e1debf6e9e461113c611779565b9161116c61114e602085015194611411565b4264ffffffffff1660289190911b64ffffffffff1916176002850155565b8254926111a264ffffffffff94670de0b6b3a7640000610d5a8761119b63ffffffff8560281c16828616611824565b16856117b8565b93600182016111b286825461183b565b9055421690558051848152846020820152a1806111cd575080f35b61026390337f000000000000000000000000000000000000000000000000000000000000000061194f565b9051634ca8886760e01b8152fd5b5050346102665781600319360112610266576020906003549051908152f35b50503461026657806003193601126102665760209061051461124561138c565b6024359033611cad565b90508284346105d857806003193601126105d857809380549160019083821c92828516948515611339575b60209586861081146113265785895290811561130257506001146112aa575b6106418787610637828c03836113ef565b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8284106112ef57505050826106419461063792820101948680611299565b80548685018801529286019281016112d1565b60ff19168887015250505050151560051b8301019250610637826106418680611299565b602484602285634e487b7160e01b835252fd5b93607f169361127a565b6020808252825181830181905290939260005b82811061137857505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611356565b600435906001600160a01b03821682036113a257565b600080fd5b602435906001600160a01b03821682036113a257565b6080810190811067ffffffffffffffff8211176113d957604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176113d957604052565b602081016002815101549064ffffffffff82169160281c92824203611437575b50505090565b61143f61148d565b505160031461145e57634e487b7160e01b600052605160045260246000fd5b600354908115611431576114849261147f9161147861148d565b50516117b8565b611798565b01388080611431565b604051906040820182811067ffffffffffffffff8211176113d95760405260006020838281520152565b331561164557801515808061163d575b6115c2575b503360005260016020526040600020549080821061155857806115569233600052600160205203604060002055806003540360035560006040518281527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3337f000000000000000000000000000000000000000000000000000000000000000061194f565b565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b6115ca611779565b906115d9602083015192611411565b9080611635575b6115eb575b506114cc565b4264ffffffffff16602882901b64ffffffffff19161760028301556003906116139084611848565b91336000520160205261162c604060002091825461185b565b905538806115e5565b5060016115e0565b5060016114c7565b608460405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b6116b7611779565b3360005260016020526040600020546116d4602083015192611411565b6116e381833360028701611874565b928315159283611723575b5050506116f85750565b61155690337f000000000000000000000000000000000000000000000000000000000000000061194f565b60019261172f91611848565b33600052600382016020526040600020550161174c83825461183b565b90553880806116ee565b9190820180921161176357565b634e487b7160e01b600052601160045260246000fd5b61178161148d565b5061178a61148d565b600381526007602082015290565b81156117a2570490565b634e487b7160e01b600052601260045260246000fd5b91906000925464ffffffffff81169063ffffffff8160281c1692836117dd5750505050565b61181394955090670de0b6b3a7640000929182421060001461181e5742925b808210156118165750905b60481c91030202611798565b90565b905090611807565b826117fc565b64ffffffffff918216908216039190821161176357565b9190820391821161176357565b8181029291811591840414171561176357565b8181039291600013801582851316918412161761176357565b6001906001600160a01b03611895670de0b6b3a7640000966118aa96611848565b9316600052016020526040600020549061185b565b0490565b9260209291606491600093604051927f23b872dd00000000000000000000000000000000000000000000000000000000845260048401526024830152604482015282855af1908161192c575b501561190257565b60046040517ff4059071000000000000000000000000000000000000000000000000000000008152fd5b90503d156119475750600160005114601f3d11165b386118fa565b3b1515611941565b916044602092600092604051917fa9059cbb0000000000000000000000000000000000000000000000000000000083526004830152602482015282855af190816119c6575b501561199c57565b60046040517ffb7f5079000000000000000000000000000000000000000000000000000000008152fd5b90503d156119e15750600160005114601f3d11165b38611994565b3b15156119db565b6001600160a01b036000541633036119fd57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b03809116918215611c435716918215611bd9578015158080611bcf575b611b33575b5060008281526001602052604081205491808310611ac957604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95876020965260018652038282205586815220818154019055604051908152a3565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b611b3b611779565b90611b4a602083015192611411565b9080611bc5575b611b5c575b50611a6a565b611b6860039184611848565b91016000908482528060205260408220611b8384825461185b565b905585825260205260408120908154818482019485129112908015821691151617611bb15750553880611b56565b80634e487b7160e01b602492526011600452fd5b5084841415611b51565b5083831415611a65565b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b03809116918215611d785716918215611d0e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260028252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fdfea26469706673582212204e68fa9ad45b2cc2ff79ead6675b57e3f00659b79f13bf6c62490a8ea896614764736f6c63430008110033000000000000000000000000da00010eda646913f273e10e7a5d1f659242757d000000000000000000000000ba3335588d9403515223f109edc4eb7269a9ab5d