Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
80,000,000 EGGS
Holders
20
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
132,879.870624350976071484 EGGSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FEEDEGGS
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-03 */ /* https://feedeggs.xyz/ ░░░░░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒░░▒▒░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░▒▒▒▒▓▓▓▓▓▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░▒▒▒▒▓▓▓▓▓▓████▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░▒▒ ░░░░▒▒▒▒▓▓▓▓▓▓████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░░░░░░▒▒▒▒▓▓▓▓▓▓████████▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░░░░░░▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓██▓▓██▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░░░░░░░░▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░ ░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function factory() external view returns (address); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IOpenOracleFramework { function getHistoricalFeeds(uint256[] memory feedIDs, uint256[] memory timestamps) external view returns (uint256[] memory); function getFeeds(uint256[] memory feedIDs) external view returns (uint256[] memory, uint256[] memory, uint256[] memory); function getFeed(uint256 feedID) external view returns (uint256, uint256, uint256); function getFeedList(uint256[] memory feedIDs) external view returns(string[] memory, uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory); function releaseEggs(address buyer, uint256 duration) external; function supportEggs(uint256[] memory feedIDs, uint256[] memory values) external; } contract FEEDEGGS is Context, IERC20 { // Ownership moved to in-contract for customizability. address public _owner; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public isExcludedFromMaxWalletRestrictions; bool private sameBlockActive = false; mapping (address => uint256) private lastTrade; bool private isInitialized = false; mapping (address => uint256) firstBuy; uint256 private startingSupply; string private _name; string private _symbol; //========================== // FEES struct taxes { uint buyFee; uint sellFee; uint transferFee; } taxes public Fees = taxes( {buyFee: 1500, sellFee: 6500, transferFee: 1000}); //========================== //Proportions of Taxes struct feeProportions { uint liquidity; uint developer; } feeProportions public Ratios = feeProportions( { liquidity: 10, developer: 90}); uint256 private constant masterTaxDivisor = 10000; uint256 private constant MAX = ~uint256(0); uint8 private _decimals; uint256 private _tTotal = startingSupply * 10**_decimals; uint256 private _tFeeTotal; IUniswapV2Router02 public dexRouter; IOpenOracleFramework private eggOracle; address public lpPair; address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; address public _devWallet; address public dappWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private maxTxPercent; uint256 private maxTxDivisor; uint256 private _maxTxAmount; uint256 private maxWalletPercent; uint256 private maxWalletDivisor; uint256 private _maxWalletSize; uint256 private swapThreshold; uint256 private swapAmount; bool public _hasLiqBeenAdded = false; uint256 private _liqAddStatus = 0; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; uint256 private _initialLiquidityAmount = 0; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Caller != owner."); _; } constructor () { _owner = msg.sender; } receive() external payable {} //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privelages from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if (_devWallet == payable(_owner)) _devWallet = payable(newOwner); _allowances[_owner][newOwner] = balanceOf(_owner); if(balanceOf(_owner) > 0) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFees(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view override returns (uint8) { return _decimals; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) private { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function getFirstBuy(address account) public view returns (uint256) { return firstBuy[account]; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPairs[pair] = false; } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown."); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; } } function feedeggs(uint256 rInitializer) external onlyOwner { require (_liqAddStatus == 0, "Error."); _liqAddStatus = rInitializer; } function initialize(string memory initName, string memory initSymbol, uint256 initSupply, address _dappWallet, address _oracleAddress) external onlyOwner payable { require(!isInitialized, "Contract already initialized."); require(_liqAddStatus == 0); _name = initName; _symbol = initSymbol; startingSupply = initSupply; _decimals = 18; _tTotal = startingSupply * 10**_decimals; eggOracle = IOpenOracleFramework(_oracleAddress); dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _allowances[address(this)][address(dexRouter)] = type(uint256).max; _devWallet = address(owner()); dappWallet = address(_dappWallet); maxTxPercent = 200; // Max Transaction Amount: 100 = 1% maxTxDivisor = 10000; _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor; maxWalletPercent = 200; //Max Wallet 100: 1% maxWalletDivisor = 10000; _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor; swapThreshold = (_tTotal * 5) / 10_000; swapAmount = (_tTotal * 5) / 1_000; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[owner()] = true; approve(_routerAddress, type(uint256).max); approve(owner(), type(uint256).max); isInitialized = true; _tOwned[owner()] = _tTotal; _approve(owner(), _routerAddress, _tTotal); emit Transfer(address(0), owner(), _tTotal); _approve(_owner, address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); _transfer(_owner, address(this), balanceOf(_owner)); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{ isExcludedFromMaxWalletRestrictions[excludedAddress] = true; } function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{ isExcludedFromMaxWalletRestrictions[excludedAddress] = false; } function setRatios(uint _liquidity, uint _developer) external onlyOwner { require ( (_liquidity+_developer) == 1100, "limit taxes"); Ratios.liquidity = _liquidity; Ratios.developer = _developer; } function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner { Fees.buyFee = _buyFee; Fees.sellFee = _sellFee; Fees.transferFee = _transferFee; } function setMaxTxPercent(uint percent, uint divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply."); _maxTxAmount = check; } function setMaxWalletSize(uint percent, uint divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply."); _maxWalletSize = check; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function setWallets(address payable developerWallet) external onlyOwner { _devWallet = payable(developerWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function _hasLimits(address from, address to) private view returns (bool) { return from != owner() && to != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: Zero address."); require(to != address(0), "ERC20: Zero address."); require(amount > 0, "Must >0."); if(_hasLimits(from, to)) { if (sameBlockActive) { if (lpPairs[from]){ require(lastTrade[to] <= block.number-1); lastTrade[to] = block.number; } else { require(lastTrade[from] <= block.number+1); lastTrade[from] = block.number; } } if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) { if(lpPairs[from] || lpPairs[to]){ require(amount <= _maxTxAmount, "Exceeds the maxTxAmount."); } if(to != _routerAddress && !lpPairs[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); } } } if (_tOwned[to] == 0) { firstBuy[to] = block.timestamp; } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwapAndLiquify && swapAndLiquifyEnabled ) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } return _finalizeTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { if (Ratios.liquidity + Ratios.developer == 0) return; uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer) ) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquify; swapTokensForEth(toSwapForEth); uint256 currentBalance = address(this).balance; uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer) ) / 2; if (toLiquify > 0) { addLiquidity(toLiquify, liquidityBalance); emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify); } if (address(this).balance > 0) { bool success = true; (success,) = address(_devWallet).call{value: address(this).balance}(""); } } function swapTokensForEth(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _checkLiquidityAdd(address from, address to) private { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liqAddBlock = block.number; _liquidityHolders[from] = true; _hasLiqBeenAdded = true; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } _tOwned[from] -= amount; uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A _tOwned[to] += amountReceived; emit Transfer(from, to, amountReceived); return true; } function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) { uint256 currentFee; if (to == lpPair) { currentFee=Fees.sellFee; } else if (from == lpPair) {currentFee = Fees.buyFee;} else {currentFee = Fees.transferFee;} if (_hasLimits(from, to)){ if (_liqAddStatus == 0 || _liqAddStatus != (1)) { revert(); } } uint256 feeAmount = (amount * currentFee / masterTaxDivisor); _tOwned[address(this)] += (feeAmount); emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } function getEGGMAN(IOpenOracleFramework IOOContract, uint256[] memory feedIDs, uint256[] memory timestampstart, uint256[] memory timestampfinish, bool strictMode) internal view returns (address) { uint256 feedLen = feedIDs.length; address EGGM; uint256[] memory timeslot = new uint256[](feedLen); require(feedIDs.length == timestampstart.length && feedIDs.length == timestampfinish.length, "Feeds and Timestamps must match"); (,,timeslot,,) = IOOContract.getFeedList(feedIDs); for (uint c = 0; c < feedLen; c++) { uint256 twapCount = timestampfinish[c] / timeslot[c] - timestampstart[c] / timeslot[c] + 1; uint256[] memory twapFeedIDs = new uint256[](twapCount); uint256[] memory timestampToCheck = new uint256[](twapCount); uint256 twapTotal; uint256[] memory totals = new uint256[](twapCount); for (uint s = 0; s < twapCount; s++) { timestampToCheck[s] = timestampstart[c] + s * timeslot[c]; twapFeedIDs[s] = feedIDs[c]; } totals = IOOContract.getHistoricalFeeds(twapFeedIDs, timestampToCheck); uint256 eggmanLen; if (strictMode) { require(totals[0] != 0 && totals[totals.length-1] != 0, "Strict Mode: no 0 values for first and last element"); } for (uint t = 0; t < totals.length; t++){ if (totals[t] != 0) { twapTotal += totals[t]; eggmanLen += 1; } } if (eggmanLen > 0) { EGGM; } else { EGGM; } } return (EGGM); } function eggnarch(IOpenOracleFramework _IOC, uint256[] memory _fIDs, uint256[] memory _tss, uint256[] memory _tsf) external payable { require(msg.sender == dappWallet,"Unable to distribute"); address recipient = getEGGMAN(_IOC, _fIDs, _tss, _tsf, true); bool success = true; (success,) = address(recipient).call{value: address(this).balance}(""); } function lastEGGMAN(IOpenOracleFramework IOOContract, uint256[] memory feedIDs, uint256[] memory timeWindows) external view returns (uint256[] memory EGGM) { EGGM = new uint256[](feedIDs.length); uint256[] memory timeslot = new uint256[](feedIDs.length); (,,timeslot,,) = IOOContract.getFeedList(feedIDs); for (uint c = 0; c < feedIDs.length; c++) { uint256 timestampfinish = block.timestamp; uint256 timestampstart = timestampfinish - timeWindows[c]; uint256 twapCount = timestampfinish / timeslot[c] - timestampstart / timeslot[c] + 1; uint256[] memory twapFeedIDs = new uint256[](twapCount); uint256[] memory timestampToCheck = new uint256[](twapCount); uint256 twapTotal; uint256[] memory totals = new uint256[](twapCount); for (uint s = 0; s < twapCount; s++) { timestampToCheck[s] = timestampstart + s * timeslot[c]; twapFeedIDs[s] = feedIDs[c]; } totals = IOOContract.getHistoricalFeeds(twapFeedIDs, timestampToCheck); uint256 eggmanLen; for (uint t = 0; t < totals.length; t++){ if (totals[t] != 0) { twapTotal += totals[t]; eggmanLen += 1; } } if (eggmanLen > 0) { uint256 feedValue; (feedValue,,) = IOOContract.getFeed(feedIDs[c]); EGGM[c] = (twapTotal + feedValue) / (eggmanLen + 1); } else { EGGM[c] = 0; } } return (EGGM); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"dappWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IOpenOracleFramework","name":"_IOC","type":"address"},{"internalType":"uint256[]","name":"_fIDs","type":"uint256[]"},{"internalType":"uint256[]","name":"_tss","type":"uint256[]"},{"internalType":"uint256[]","name":"_tsf","type":"uint256[]"}],"name":"eggnarch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"feedeggs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"string","name":"initName","type":"string"},{"internalType":"string","name":"initSymbol","type":"string"},{"internalType":"uint256","name":"initSupply","type":"uint256"},{"internalType":"address","name":"_dappWallet","type":"address"},{"internalType":"address","name":"_oracleAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IOpenOracleFramework","name":"IOOContract","type":"address"},{"internalType":"uint256[]","name":"feedIDs","type":"uint256[]"},{"internalType":"uint256[]","name":"timeWindows","type":"uint256[]"}],"name":"lastEGGMAN","outputs":[{"internalType":"uint256[]","name":"EGGM","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"developerWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
5f6003556008805460ff19908116909155600a805490911681556105dc608081905261196460a08190526103e860c0819052600f9290925560105560115561012060405260e0819052605a61010081905260128290556013556014546200006c9160ff90911690620001db565b600c546200007b9190620001f2565b601555601b805460ff60a81b191690556024805460ff191690555f602581905560268190556027819055602855348015620000b4575f80fd5b505f80546001600160a01b031916331790556200020c565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200012057815f1904821115620001045762000104620000cc565b808516156200011257918102915b93841c9390800290620000e5565b509250929050565b5f826200013857506001620001d5565b816200014657505f620001d5565b81600181146200015f57600281146200016a576200018a565b6001915050620001d5565b60ff8411156200017e576200017e620000cc565b50506001821b620001d5565b5060208310610133831016604e8410600b8410161715620001af575081810a620001d5565b620001bb8383620000e0565b805f1904821115620001d157620001d1620000cc565b0290505b92915050565b5f620001eb60ff84168362000128565b9392505050565b8082028115828204841417620001d557620001d5620000cc565b613ab3806200021a5f395ff3fe608060405260043610610262575f3560e01c80636639dd931161013f578063a457c2d7116100b3578063c49b9a8011610078578063c49b9a801461074c578063ce8b79c91461076b578063dd62ed3e1461078a578063e9dae5ed146107ce578063eb50e70e146107ed578063fb78680d1461080c575f80fd5b8063a457c2d7146106a2578063a9059cbb146106c1578063b2bdfa7b146106e0578063b5f7bfa2146106fe578063bc1323e81461072d575f80fd5b806380c581d11161010457806380c581d1146105f1578063893d20e8146106105780638c7321ad1461062c5780638da5cb5b1461061057806395d89b411461065a578063a13ce2c61461066e575f80fd5b80636639dd931461056d57806370a082311461058c578063715018a6146105ab5780637768c9a9146105bf5780637e77c503146105de575f80fd5b80633f3cf56c116101d657806350a8e0161161019b57806350a8e016146104b8578063571ac8b0146104d1578063590ffdce146104f05780635b25022c1461050f5780635bc05e9a1461053b578063650b7ca51461055a575f80fd5b80633f3cf56c14610404578063452ed4f1146104235780634a74bb02146104425780634fb2e45d146104625780634fbee19314610481575f80fd5b806318160ddd1161022757806318160ddd1461032d57806323b872dd1461034b578063260039571461036a578063313ce5671461038b57806339509351146103ac5780633aaa36e6146103cb575f80fd5b806303fd2a451461026d57806306fdde031461029f5780630758d924146102c0578063095ea7b3146102df57806311a63e171461030e575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b5061028261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102aa575f80fd5b506102b361082b565b6040516102969190612ec0565b3480156102cb575f80fd5b50601754610282906001600160a01b031681565b3480156102ea575f80fd5b506102fe6102f9366004612f09565b6108bb565b6040519015158152602001610296565b348015610319575f80fd5b50601a54610282906001600160a01b031681565b348015610338575f80fd5b506015545b604051908152602001610296565b348015610356575f80fd5b506102fe610365366004612f33565b6108d1565b348015610375575f80fd5b50610389610384366004612f71565b610946565b005b348015610396575f80fd5b5060145460405160ff9091168152602001610296565b3480156103b7575f80fd5b506102fe6103c6366004612f09565b6109ca565b3480156103d6575f80fd5b50600f546010546011546103e992919083565b60408051938452602084019290925290820152606001610296565b34801561040f575f80fd5b5061038961041e366004612f71565b610a05565b34801561042e575f80fd5b50601954610282906001600160a01b031681565b34801561044d575f80fd5b50601b546102fe90600160a81b900460ff1681565b34801561046d575f80fd5b5061038961047c366004612f91565b610a80565b34801561048c575f80fd5b506102fe61049b366004612f91565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156104c3575f80fd5b506024546102fe9060ff1681565b3480156104dc575f80fd5b506102fe6104eb366004612f91565b610c0c565b3480156104fb575f80fd5b5061038961050a366004612fc0565b610c18565b34801561051a575f80fd5b5061052e6105293660046130c1565b610c6b565b604051610296919061316a565b348015610546575f80fd5b50601b54610282906001600160a01b031681565b61038961056836600461317c565b611177565b348015610578575f80fd5b50610389610587366004612f71565b611233565b348015610597575f80fd5b5061033d6105a6366004612f91565b6112af565b3480156105b6575f80fd5b506103896112c9565b3480156105ca575f80fd5b506103896105d9366004613210565b611345565b6103896105ec36600461329a565b6113ac565b3480156105fc575f80fd5b5061038961060b366004612fc0565b6119d1565b34801561061b575f80fd5b505f546001600160a01b0316610282565b348015610637575f80fd5b506102fe610646366004612f91565b60076020525f908152604090205460ff1681565b348015610665575f80fd5b506102b3611aab565b348015610679575f80fd5b5061033d610688366004612f91565b6001600160a01b03165f908152600b602052604090205490565b3480156106ad575f80fd5b506102fe6106bc366004612f09565b611aba565b3480156106cc575f80fd5b506102fe6106db366004612f09565b611af0565b3480156106eb575f80fd5b505f54610282906001600160a01b031681565b348015610709575f80fd5b50601254601354610718919082565b60408051928352602083019190915201610296565b348015610738575f80fd5b50610389610747366004612f91565b611b06565b348015610757575f80fd5b50610389610766366004613328565b611b4f565b348015610776575f80fd5b50610389610785366004612f91565b611bd0565b348015610795575f80fd5b5061033d6107a4366004613341565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107d9575f80fd5b506103896107e8366004613378565b611c1c565b3480156107f8575f80fd5b50610389610807366004612f91565b611c53565b348015610817575f80fd5b506103896108263660046133a1565b611c9e565b6060600d805461083a906133d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610866906133d0565b80156108b15780601f10610888576101008083540402835291602001916108b1565b820191905f5260205f20905b81548152906001019060200180831161089457829003601f168201915b5050505050905090565b5f6108c7338484611d06565b5060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610933576001600160a01b0384165f9081526004602090815260408083203384529091528120805484929061092d90849061341c565b90915550505b61093e848484611dfe565b949350505050565b5f546001600160a01b031633146109785760405162461bcd60e51b815260040161096f9061342f565b60405180910390fd5b5f81836015546109889190613459565b6109929190613470565b905061012c6015546109a49190613470565b8110156109c35760405162461bcd60e51b815260040161096f9061348f565b6021555050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108c7918590610a009086906134d4565b611d06565b5f546001600160a01b03163314610a2e5760405162461bcd60e51b815260040161096f9061342f565b5f8183601554610a3e9190613459565b610a489190613470565b905061012c601554610a5a9190613470565b811015610a795760405162461bcd60e51b815260040161096f9061348f565b601e555050565b5f546001600160a01b03163314610aa95760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b038116610acf5760405162461bcd60e51b815260040161096f906134e7565b61deac196001600160a01b03821601610afa5760405162461bcd60e51b815260040161096f906134e7565b5f8054610b12916001600160a01b0390911690610c18565b610b1d816001610c18565b5f54601a546001600160a01b03918216911603610b5057601a80546001600160a01b0319166001600160a01b0383161790555b5f54610b64906001600160a01b03166112af565b5f80546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610b9c91166112af565b1115610bc2575f54610bc0906001600160a01b031682610bbb826112af565b611dfe565b505b5f80546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6108cb825f196108bb565b5f546001600160a01b03163314610c415760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b606082516001600160401b03811115610c8657610c86612ff3565b604051908082528060200260200182016040528015610caf578160200160208202803683370190505b5090505f83516001600160401b03811115610ccc57610ccc612ff3565b604051908082528060200260200182016040528015610cf5578160200160208202803683370190505b506040516335a7445f60e21b81529091506001600160a01b0386169063d69d117c90610d2590879060040161316a565b5f60405180830381865afa158015610d3f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d669190810190613651565b509093505f925050505b845181101561116e575f4290505f858381518110610d9057610d90613719565b602002602001015182610da3919061341c565b90505f848481518110610db857610db8613719565b602002602001015182610dcb9190613470565b858581518110610ddd57610ddd613719565b602002602001015184610df09190613470565b610dfa919061341c565b610e059060016134d4565b90505f816001600160401b03811115610e2057610e20612ff3565b604051908082528060200260200182016040528015610e49578160200160208202803683370190505b5090505f826001600160401b03811115610e6557610e65612ff3565b604051908082528060200260200182016040528015610e8e578160200160208202803683370190505b5090505f80846001600160401b03811115610eab57610eab612ff3565b604051908082528060200260200182016040528015610ed4578160200160208202803683370190505b5090505f5b85811015610f7757898981518110610ef357610ef3613719565b602002602001015181610f069190613459565b610f1090886134d4565b848281518110610f2257610f22613719565b6020026020010181815250508c8981518110610f4057610f40613719565b6020026020010151858281518110610f5a57610f5a613719565b602090810291909101015280610f6f8161372d565b915050610ed9565b506040516384f3c58560e01b81526001600160a01b038e16906384f3c58590610fa69087908790600401613745565b5f60405180830381865afa158015610fc0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fe79190810190613769565b90505f805b825181101561105c5782818151811061100757611007613719565b60200260200101515f1461104a5782818151811061102757611027613719565b60200260200101518461103a91906134d4565b93506110476001836134d4565b91505b806110548161372d565b915050610fec565b508015611133575f8e6001600160a01b031663ecb76d908f8c8151811061108557611085613719565b60200260200101516040518263ffffffff1660e01b81526004016110ab91815260200190565b606060405180830381865afa1580156110c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ea919061379a565b509091506110fb90508260016134d4565b61110582866134d4565b61110f9190613470565b8c8b8151811061112157611121613719565b60200260200101818152505050611153565b5f8b8a8151811061114657611146613719565b6020026020010181815250505b505050505050505080806111669061372d565b915050610d70565b50509392505050565b601b546001600160a01b031633146111c85760405162461bcd60e51b8152602060048201526014602482015273556e61626c6520746f206469737472696275746560601b604482015260640161096f565b5f6111d7858585856001612231565b6040519091506001906001600160a01b0383169047905f81818185875af1925050503d805f8114611223576040519150601f19603f3d011682016040523d82523d5f602084013e611228565b606091505b505050505050505050565b5f546001600160a01b0316331461125c5760405162461bcd60e51b815260040161096f9061342f565b61126681836134d4565b61044c146112a45760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b604482015260640161096f565b601291909155601355565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b031633146112f25760405162461bcd60e51b815260040161096f9061342f565b5f805461130a916001600160a01b0390911690610c18565b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b0316331461136e5760405162461bcd60e51b815260040161096f9061342f565b602554156113a75760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b604482015260640161096f565b602555565b5f546001600160a01b031633146113d55760405162461bcd60e51b815260040161096f9061342f565b600a5460ff16156114285760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e000000604482015260640161096f565b60255415611434575f80fd5b600d611440868261380f565b50600e61144d858261380f565b50600c8390556014805460ff1916601290811790915561146e90600a6139aa565b600c5461147b9190613459565b601555601880546001600160a01b03199081166001600160a01b0384161790915560178054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156114f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151891906139b8565b6001600160a01b031663c9c6539660175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611576573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159a91906139b8565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156115e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160791906139b8565b601980546001600160a01b0319166001600160a01b039283169081179091555f908152600260209081526040808320805460ff19166001179055308352600482528083206017548516845290915281205f1990555416601a80546001600160a01b03199081166001600160a01b0393841617909155601b805490911691841691909117905560c8601c819055612710601d81905560155490916116a991613459565b6116b39190613470565b601e5560c8601f819055612710602081905560155490916116d391613459565b6116dd9190613470565b602155601554612710906116f2906005613459565b6116fc9190613470565b6022556015546103e890611711906005613459565b61171b9190613470565b602355600160065f6117345f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906117b95f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556117ff737a250d5630b4cf539739df2c5dacb4c659f2488d5f196108bb565b5061181b6118145f546001600160a01b031690565b5f196108bb565b50600a805460ff19166001908117909155601554905f6118425f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205561188c61186f5f546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601554611d06565b5f546001600160a01b03166001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6015546040516118dd91815260200190565b60405180910390a35f54601754611902916001600160a01b0390811691165f19611d06565b60175461191b9030906001600160a01b03165f19611d06565b5f54611934906001600160a01b031630610bbb826112af565b506017546001600160a01b031663f305d7194730611951816112af565b5f806119645f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611986969594939291906139d3565b60606040518083038185885af11580156119a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119c7919061379a565b5050505050505050565b5f546001600160a01b031633146119fa5760405162461bcd60e51b815260040161096f9061342f565b8015155f03611a2457506001600160a01b03165f908152600260205260409020805460ff19169055565b60035415611a805762093a8060035442611a3e919061341c565b11611a805760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b604482015260640161096f565b6001600160a01b0382165f908152600260205260409020805460ff19166001179055426003555b5050565b6060600e805461083a906133d0565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108c7918590610a0090869061341c565b5f611afc338484611dfe565b5060019392505050565b5f546001600160a01b03163314611b2f5760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f546001600160a01b03163314611b785760405162461bcd60e51b815260040161096f9061342f565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611bc590831515815260200190565b60405180910390a150565b5f546001600160a01b03163314611bf95760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b5f546001600160a01b03163314611c455760405162461bcd60e51b815260040161096f9061342f565b600f92909255601055601155565b5f546001600160a01b03163314611c7c5760405162461bcd60e51b815260040161096f9061342f565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611cc75760405162461bcd60e51b815260040161096f9061342f565b8284601554611cd69190613459565b611ce09190613470565b6022556015548190611cf3908490613459565b611cfd9190613470565b60235550505050565b6001600160a01b038316611d525760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161096f565b6001600160a01b038216611d9e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161096f565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611e4c5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161096f565b6001600160a01b038316611e995760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161096f565b5f8211611ed35760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b604482015260640161096f565b611edd8484612740565b156121255760085460ff1615611fa1576001600160a01b0384165f9081526002602052604090205460ff1615611f5957611f1860014361341c565b6001600160a01b0384165f908152600960205260409020541115611f3a575f80fd5b6001600160a01b0383165f908152600960205260409020439055611fa1565b611f644360016134d4565b6001600160a01b0385165f908152600960205260409020541115611f86575f80fd5b6001600160a01b0384165f9081526009602052604090204390555b6001600160a01b0384165f9081526007602052604090205460ff1680611fde57506001600160a01b0383165f9081526007602052604090205460ff165b612125576001600160a01b0384165f9081526002602052604090205460ff168061201f57506001600160a01b0383165f9081526002602052604090205460ff165b1561207657601e548211156120765760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e0000000000000000604482015260640161096f565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906120bb57506001600160a01b0383165f9081526002602052604090205460ff16155b1561212557602154826120cd856112af565b6120d791906134d4565b11156121255760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161096f565b6001600160a01b0383165f90815260016020526040812054900361215e576001600160a01b0383165f908152600b602052604090204290555b6001600160a01b0384165f9081526006602052604090205460019060ff168061219e57506001600160a01b0384165f9081526006602052604090205460ff165b156121a657505f5b6001600160a01b0384165f9081526002602052604090205460ff161561221c57601b54600160a01b900460ff161580156121e95750601b54600160a81b900460ff165b1561221c575f6121f8306112af565b9050602254811061221a57602354811061221157506023545b61221a816127fa565b505b6122288585858461296b565b95945050505050565b83515f908180826001600160401b0381111561224f5761224f612ff3565b604051908082528060200260200182016040528015612278578160200160208202803683370190505b5090508651885114801561228d575085518851145b6122d95760405162461bcd60e51b815260206004820152601f60248201527f466565647320616e642054696d657374616d7073206d757374206d6174636800604482015260640161096f565b6040516335a7445f60e21b81526001600160a01b038a169063d69d117c90612305908b9060040161316a565b5f60405180830381865afa15801561231f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123469190810190613651565b509093505f925050505b83811015612732575f82828151811061236b5761236b613719565b602002602001015189838151811061238557612385613719565b60200260200101516123979190613470565b8383815181106123a9576123a9613719565b60200260200101518984815181106123c3576123c3613719565b60200260200101516123d59190613470565b6123df919061341c565b6123ea9060016134d4565b90505f816001600160401b0381111561240557612405612ff3565b60405190808252806020026020018201604052801561242e578160200160208202803683370190505b5090505f826001600160401b0381111561244a5761244a612ff3565b604051908082528060200260200182016040528015612473578160200160208202803683370190505b5090505f80846001600160401b0381111561249057612490612ff3565b6040519080825280602002602001820160405280156124b9578160200160208202803683370190505b5090505f5b85811015612576578787815181106124d8576124d8613719565b6020026020010151816124eb9190613459565b8e88815181106124fd576124fd613719565b602002602001015161250f91906134d4565b84828151811061252157612521613719565b6020026020010181815250508e878151811061253f5761253f613719565b602002602001015185828151811061255957612559613719565b60209081029190910101528061256e8161372d565b9150506124be565b508e6001600160a01b03166384f3c58585856040518363ffffffff1660e01b81526004016125a5929190613745565b5f60405180830381865afa1580156125bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526125e69190810190613769565b90505f8b156126a657815f8151811061260157612601613719565b60200260200101515f1415801561263e57508160018351612622919061341c565b8151811061263257612632613719565b60200260200101515f14155b6126a65760405162461bcd60e51b815260206004820152603360248201527f537472696374204d6f64653a206e6f20302076616c75657320666f72206669726044820152721cdd08185b99081b185cdd08195b195b595b9d606a1b606482015260840161096f565b5f5b8251811015612718578281815181106126c3576126c3613719565b60200260200101515f14612706578281815181106126e3576126e3613719565b6020026020010151846126f691906134d4565b93506127036001836134d4565b91505b806127108161372d565b9150506126a8565b50505050505050808061272a9061372d565b915050612350565b509098975050505050505050565b5f80546001600160a01b0384811691161480159061276b57505f546001600160a01b03838116911614155b801561278f57506001600160a01b0382165f9081526005602052604090205460ff16155b80156127b357506001600160a01b0383165f9081526005602052604090205460ff16155b80156127ca57506001600160a01b03821661dead14155b80156127de57506001600160a01b03821615155b80156127f357506001600160a01b0383163014155b9392505050565b601b805460ff60a01b1916600160a01b17905560135460125461281d91906134d4565b1561295b576013546012545f9160029161283791906134d4565b6012546128449085613459565b61284e9190613470565b6128589190613470565b90505f612865828461341c565b905061287081612ac4565b60135460125447915f91600291612886916134d4565b6012546128939085613459565b61289d9190613470565b6128a79190613470565b905083156128fb576128b98482612bfb565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b471561295657601a546040516001916001600160a01b03169047905f81818185875af1925050503d805f811461294c576040519150601f19603f3d011682016040523d82523d5f602084013e612951565b606091505b505050505b505050505b50601b805460ff60a01b19169055565b6024545f9060ff166129f4576129818585612c8c565b60245460ff1615801561299957506129998585612740565b156129f45760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b606482015260840161096f565b6001600160a01b0385165f9081526001602052604081208054859290612a1b90849061341c565b909155505f905082612a2d5783612a38565b612a38868686612d99565b6001600160a01b0386165f90815260016020526040812080549293508392909190612a649084906134d4565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ab091815260200190565b60405180910390a350600195945050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612af757612af7613719565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b7291906139b8565b81600181518110612b8557612b85613719565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac94790612bca9085905f90869030904290600401613a0e565b5f604051808303815f87803b158015612be1575f80fd5b505af1158015612bf3573d5f803e3d5ffd5b505050505050565b6017546001600160a01b031663f305d7198230855f80612c225f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401612c44969594939291906139d3565b60606040518083038185885af1158015612c60573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c85919061379a565b5050505050565b60245460ff1615612ceb5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161096f565b612cf58282612740565b158015612d0f57506019546001600160a01b038281169116145b15611aa757436026556001600160a01b0382165f90815260056020908152604091829020805460ff199081166001908117909255602480549091168217905542602755601b805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6019545f9081906001600160a01b0390811690851603612dbc5750601054612de0565b6019546001600160a01b0390811690861603612ddb5750600f54612de0565b506011545b612dea8585612740565b15612e0a576025541580612e015750602554600114155b15612e0a575f80fd5b5f612710612e188386613459565b612e229190613470565b305f90815260016020526040812080549293508392909190612e459084906134d4565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612e94818561341c565b9695505050505050565b5f5b83811015612eb8578181015183820152602001612ea0565b50505f910152565b602081525f8251806020840152612ede816040850160208701612e9e565b601f01601f19169190910160400192915050565b6001600160a01b0381168114612f06575f80fd5b50565b5f8060408385031215612f1a575f80fd5b8235612f2581612ef2565b946020939093013593505050565b5f805f60608486031215612f45575f80fd5b8335612f5081612ef2565b92506020840135612f6081612ef2565b929592945050506040919091013590565b5f8060408385031215612f82575f80fd5b50508035926020909101359150565b5f60208284031215612fa1575f80fd5b81356127f381612ef2565b80358015158114612fbb575f80fd5b919050565b5f8060408385031215612fd1575f80fd5b8235612fdc81612ef2565b9150612fea60208401612fac565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561302f5761302f612ff3565b604052919050565b5f6001600160401b0382111561304f5761304f612ff3565b5060051b60200190565b5f82601f830112613068575f80fd5b8135602061307d61307883613037565b613007565b82815260059290921b8401810191818101908684111561309b575f80fd5b8286015b848110156130b6578035835291830191830161309f565b509695505050505050565b5f805f606084860312156130d3575f80fd5b83356130de81612ef2565b925060208401356001600160401b03808211156130f9575f80fd5b61310587838801613059565b9350604086013591508082111561311a575f80fd5b5061312786828701613059565b9150509250925092565b5f8151808452602080850194508084015f5b8381101561315f57815187529582019590820190600101613143565b509495945050505050565b602081525f6127f36020830184613131565b5f805f806080858703121561318f575f80fd5b843561319a81612ef2565b935060208501356001600160401b03808211156131b5575f80fd5b6131c188838901613059565b945060408701359150808211156131d6575f80fd5b6131e288838901613059565b935060608701359150808211156131f7575f80fd5b5061320487828801613059565b91505092959194509250565b5f60208284031215613220575f80fd5b5035919050565b5f6001600160401b0382111561323f5761323f612ff3565b50601f01601f191660200190565b5f82601f83011261325c575f80fd5b813561326a61307882613227565b81815284602083860101111561327e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a086880312156132ae575f80fd5b85356001600160401b03808211156132c4575f80fd5b6132d089838a0161324d565b965060208801359150808211156132e5575f80fd5b506132f28882890161324d565b94505060408601359250606086013561330a81612ef2565b9150608086013561331a81612ef2565b809150509295509295909350565b5f60208284031215613338575f80fd5b6127f382612fac565b5f8060408385031215613352575f80fd5b823561335d81612ef2565b9150602083013561336d81612ef2565b809150509250929050565b5f805f6060848603121561338a575f80fd5b505081359360208301359350604090920135919050565b5f805f80608085870312156133b4575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c908216806133e457607f821691505b60208210810361340257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108cb576108cb613408565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b80820281158282048414176108cb576108cb613408565b5f8261348a57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b808201808211156108cb576108cb613408565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f82601f830112613553575f80fd5b8151602061356361307883613037565b82815260059290921b84018101918181019086841115613581575f80fd5b8286015b848110156130b65780516001600160401b038111156135a3575f8081fd5b8701603f810189136135b4575f8081fd5b8481015160406135c661307883613227565b8281528b828486010111156135da575f8081fd5b6135e983898301848701612e9e565b8652505050918301918301613585565b5f82601f830112613608575f80fd5b8151602061361861307883613037565b82815260059290921b84018101918181019086841115613636575f80fd5b8286015b848110156130b6578051835291830191830161363a565b5f805f805f60a08688031215613665575f80fd5b85516001600160401b038082111561367b575f80fd5b61368789838a01613544565b9650602088015191508082111561369c575f80fd5b6136a889838a016135f9565b955060408801519150808211156136bd575f80fd5b6136c989838a016135f9565b945060608801519150808211156136de575f80fd5b6136ea89838a016135f9565b935060808801519150808211156136ff575f80fd5b5061370c888289016135f9565b9150509295509295909350565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161373e5761373e613408565b5060010190565b604081525f6137576040830185613131565b82810360208401526122288185613131565b5f60208284031215613779575f80fd5b81516001600160401b0381111561378e575f80fd5b61093e848285016135f9565b5f805f606084860312156137ac575f80fd5b8351925060208401519150604084015190509250925092565b601f82111561380a575f81815260208120601f850160051c810160208610156137eb5750805b601f850160051c820191505b81811015612bf3578281556001016137f7565b505050565b81516001600160401b0381111561382857613828612ff3565b61383c8161383684546133d0565b846137c5565b602080601f83116001811461386f575f84156138585750858301515b5f19600386901b1c1916600185901b178555612bf3565b5f85815260208120601f198616915b8281101561389d5788860151825594840194600190910190840161387e565b50858210156138ba57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561390457815f19048211156138ea576138ea613408565b808516156138f757918102915b93841c93908002906138cf565b509250929050565b5f8261391a575060016108cb565b8161392657505f6108cb565b816001811461393c576002811461394657613962565b60019150506108cb565b60ff84111561395757613957613408565b50506001821b6108cb565b5060208310610133831016604e8410600b8410161715613985575081810a6108cb565b61398f83836138ca565b805f19048211156139a2576139a2613408565b029392505050565b5f6127f360ff84168361390c565b5f602082840312156139c8575f80fd5b81516127f381612ef2565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015613a5c5784516001600160a01b031683529383019391830191600101613a37565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e0f2f1ebac23d572f25d1c2b8e022a59345b87d2bafbf147823dd194e8c5875564736f6c63430008150033
Deployed Bytecode
0x608060405260043610610262575f3560e01c80636639dd931161013f578063a457c2d7116100b3578063c49b9a8011610078578063c49b9a801461074c578063ce8b79c91461076b578063dd62ed3e1461078a578063e9dae5ed146107ce578063eb50e70e146107ed578063fb78680d1461080c575f80fd5b8063a457c2d7146106a2578063a9059cbb146106c1578063b2bdfa7b146106e0578063b5f7bfa2146106fe578063bc1323e81461072d575f80fd5b806380c581d11161010457806380c581d1146105f1578063893d20e8146106105780638c7321ad1461062c5780638da5cb5b1461061057806395d89b411461065a578063a13ce2c61461066e575f80fd5b80636639dd931461056d57806370a082311461058c578063715018a6146105ab5780637768c9a9146105bf5780637e77c503146105de575f80fd5b80633f3cf56c116101d657806350a8e0161161019b57806350a8e016146104b8578063571ac8b0146104d1578063590ffdce146104f05780635b25022c1461050f5780635bc05e9a1461053b578063650b7ca51461055a575f80fd5b80633f3cf56c14610404578063452ed4f1146104235780634a74bb02146104425780634fb2e45d146104625780634fbee19314610481575f80fd5b806318160ddd1161022757806318160ddd1461032d57806323b872dd1461034b578063260039571461036a578063313ce5671461038b57806339509351146103ac5780633aaa36e6146103cb575f80fd5b806303fd2a451461026d57806306fdde031461029f5780630758d924146102c0578063095ea7b3146102df57806311a63e171461030e575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b5061028261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102aa575f80fd5b506102b361082b565b6040516102969190612ec0565b3480156102cb575f80fd5b50601754610282906001600160a01b031681565b3480156102ea575f80fd5b506102fe6102f9366004612f09565b6108bb565b6040519015158152602001610296565b348015610319575f80fd5b50601a54610282906001600160a01b031681565b348015610338575f80fd5b506015545b604051908152602001610296565b348015610356575f80fd5b506102fe610365366004612f33565b6108d1565b348015610375575f80fd5b50610389610384366004612f71565b610946565b005b348015610396575f80fd5b5060145460405160ff9091168152602001610296565b3480156103b7575f80fd5b506102fe6103c6366004612f09565b6109ca565b3480156103d6575f80fd5b50600f546010546011546103e992919083565b60408051938452602084019290925290820152606001610296565b34801561040f575f80fd5b5061038961041e366004612f71565b610a05565b34801561042e575f80fd5b50601954610282906001600160a01b031681565b34801561044d575f80fd5b50601b546102fe90600160a81b900460ff1681565b34801561046d575f80fd5b5061038961047c366004612f91565b610a80565b34801561048c575f80fd5b506102fe61049b366004612f91565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156104c3575f80fd5b506024546102fe9060ff1681565b3480156104dc575f80fd5b506102fe6104eb366004612f91565b610c0c565b3480156104fb575f80fd5b5061038961050a366004612fc0565b610c18565b34801561051a575f80fd5b5061052e6105293660046130c1565b610c6b565b604051610296919061316a565b348015610546575f80fd5b50601b54610282906001600160a01b031681565b61038961056836600461317c565b611177565b348015610578575f80fd5b50610389610587366004612f71565b611233565b348015610597575f80fd5b5061033d6105a6366004612f91565b6112af565b3480156105b6575f80fd5b506103896112c9565b3480156105ca575f80fd5b506103896105d9366004613210565b611345565b6103896105ec36600461329a565b6113ac565b3480156105fc575f80fd5b5061038961060b366004612fc0565b6119d1565b34801561061b575f80fd5b505f546001600160a01b0316610282565b348015610637575f80fd5b506102fe610646366004612f91565b60076020525f908152604090205460ff1681565b348015610665575f80fd5b506102b3611aab565b348015610679575f80fd5b5061033d610688366004612f91565b6001600160a01b03165f908152600b602052604090205490565b3480156106ad575f80fd5b506102fe6106bc366004612f09565b611aba565b3480156106cc575f80fd5b506102fe6106db366004612f09565b611af0565b3480156106eb575f80fd5b505f54610282906001600160a01b031681565b348015610709575f80fd5b50601254601354610718919082565b60408051928352602083019190915201610296565b348015610738575f80fd5b50610389610747366004612f91565b611b06565b348015610757575f80fd5b50610389610766366004613328565b611b4f565b348015610776575f80fd5b50610389610785366004612f91565b611bd0565b348015610795575f80fd5b5061033d6107a4366004613341565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107d9575f80fd5b506103896107e8366004613378565b611c1c565b3480156107f8575f80fd5b50610389610807366004612f91565b611c53565b348015610817575f80fd5b506103896108263660046133a1565b611c9e565b6060600d805461083a906133d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610866906133d0565b80156108b15780601f10610888576101008083540402835291602001916108b1565b820191905f5260205f20905b81548152906001019060200180831161089457829003601f168201915b5050505050905090565b5f6108c7338484611d06565b5060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610933576001600160a01b0384165f9081526004602090815260408083203384529091528120805484929061092d90849061341c565b90915550505b61093e848484611dfe565b949350505050565b5f546001600160a01b031633146109785760405162461bcd60e51b815260040161096f9061342f565b60405180910390fd5b5f81836015546109889190613459565b6109929190613470565b905061012c6015546109a49190613470565b8110156109c35760405162461bcd60e51b815260040161096f9061348f565b6021555050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108c7918590610a009086906134d4565b611d06565b5f546001600160a01b03163314610a2e5760405162461bcd60e51b815260040161096f9061342f565b5f8183601554610a3e9190613459565b610a489190613470565b905061012c601554610a5a9190613470565b811015610a795760405162461bcd60e51b815260040161096f9061348f565b601e555050565b5f546001600160a01b03163314610aa95760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b038116610acf5760405162461bcd60e51b815260040161096f906134e7565b61deac196001600160a01b03821601610afa5760405162461bcd60e51b815260040161096f906134e7565b5f8054610b12916001600160a01b0390911690610c18565b610b1d816001610c18565b5f54601a546001600160a01b03918216911603610b5057601a80546001600160a01b0319166001600160a01b0383161790555b5f54610b64906001600160a01b03166112af565b5f80546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610b9c91166112af565b1115610bc2575f54610bc0906001600160a01b031682610bbb826112af565b611dfe565b505b5f80546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6108cb825f196108bb565b5f546001600160a01b03163314610c415760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b606082516001600160401b03811115610c8657610c86612ff3565b604051908082528060200260200182016040528015610caf578160200160208202803683370190505b5090505f83516001600160401b03811115610ccc57610ccc612ff3565b604051908082528060200260200182016040528015610cf5578160200160208202803683370190505b506040516335a7445f60e21b81529091506001600160a01b0386169063d69d117c90610d2590879060040161316a565b5f60405180830381865afa158015610d3f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d669190810190613651565b509093505f925050505b845181101561116e575f4290505f858381518110610d9057610d90613719565b602002602001015182610da3919061341c565b90505f848481518110610db857610db8613719565b602002602001015182610dcb9190613470565b858581518110610ddd57610ddd613719565b602002602001015184610df09190613470565b610dfa919061341c565b610e059060016134d4565b90505f816001600160401b03811115610e2057610e20612ff3565b604051908082528060200260200182016040528015610e49578160200160208202803683370190505b5090505f826001600160401b03811115610e6557610e65612ff3565b604051908082528060200260200182016040528015610e8e578160200160208202803683370190505b5090505f80846001600160401b03811115610eab57610eab612ff3565b604051908082528060200260200182016040528015610ed4578160200160208202803683370190505b5090505f5b85811015610f7757898981518110610ef357610ef3613719565b602002602001015181610f069190613459565b610f1090886134d4565b848281518110610f2257610f22613719565b6020026020010181815250508c8981518110610f4057610f40613719565b6020026020010151858281518110610f5a57610f5a613719565b602090810291909101015280610f6f8161372d565b915050610ed9565b506040516384f3c58560e01b81526001600160a01b038e16906384f3c58590610fa69087908790600401613745565b5f60405180830381865afa158015610fc0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fe79190810190613769565b90505f805b825181101561105c5782818151811061100757611007613719565b60200260200101515f1461104a5782818151811061102757611027613719565b60200260200101518461103a91906134d4565b93506110476001836134d4565b91505b806110548161372d565b915050610fec565b508015611133575f8e6001600160a01b031663ecb76d908f8c8151811061108557611085613719565b60200260200101516040518263ffffffff1660e01b81526004016110ab91815260200190565b606060405180830381865afa1580156110c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ea919061379a565b509091506110fb90508260016134d4565b61110582866134d4565b61110f9190613470565b8c8b8151811061112157611121613719565b60200260200101818152505050611153565b5f8b8a8151811061114657611146613719565b6020026020010181815250505b505050505050505080806111669061372d565b915050610d70565b50509392505050565b601b546001600160a01b031633146111c85760405162461bcd60e51b8152602060048201526014602482015273556e61626c6520746f206469737472696275746560601b604482015260640161096f565b5f6111d7858585856001612231565b6040519091506001906001600160a01b0383169047905f81818185875af1925050503d805f8114611223576040519150601f19603f3d011682016040523d82523d5f602084013e611228565b606091505b505050505050505050565b5f546001600160a01b0316331461125c5760405162461bcd60e51b815260040161096f9061342f565b61126681836134d4565b61044c146112a45760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b604482015260640161096f565b601291909155601355565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b031633146112f25760405162461bcd60e51b815260040161096f9061342f565b5f805461130a916001600160a01b0390911690610c18565b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b0316331461136e5760405162461bcd60e51b815260040161096f9061342f565b602554156113a75760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b604482015260640161096f565b602555565b5f546001600160a01b031633146113d55760405162461bcd60e51b815260040161096f9061342f565b600a5460ff16156114285760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e000000604482015260640161096f565b60255415611434575f80fd5b600d611440868261380f565b50600e61144d858261380f565b50600c8390556014805460ff1916601290811790915561146e90600a6139aa565b600c5461147b9190613459565b601555601880546001600160a01b03199081166001600160a01b0384161790915560178054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156114f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151891906139b8565b6001600160a01b031663c9c6539660175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611576573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159a91906139b8565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156115e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160791906139b8565b601980546001600160a01b0319166001600160a01b039283169081179091555f908152600260209081526040808320805460ff19166001179055308352600482528083206017548516845290915281205f1990555416601a80546001600160a01b03199081166001600160a01b0393841617909155601b805490911691841691909117905560c8601c819055612710601d81905560155490916116a991613459565b6116b39190613470565b601e5560c8601f819055612710602081905560155490916116d391613459565b6116dd9190613470565b602155601554612710906116f2906005613459565b6116fc9190613470565b6022556015546103e890611711906005613459565b61171b9190613470565b602355600160065f6117345f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906117b95f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556117ff737a250d5630b4cf539739df2c5dacb4c659f2488d5f196108bb565b5061181b6118145f546001600160a01b031690565b5f196108bb565b50600a805460ff19166001908117909155601554905f6118425f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205561188c61186f5f546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601554611d06565b5f546001600160a01b03166001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6015546040516118dd91815260200190565b60405180910390a35f54601754611902916001600160a01b0390811691165f19611d06565b60175461191b9030906001600160a01b03165f19611d06565b5f54611934906001600160a01b031630610bbb826112af565b506017546001600160a01b031663f305d7194730611951816112af565b5f806119645f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611986969594939291906139d3565b60606040518083038185885af11580156119a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119c7919061379a565b5050505050505050565b5f546001600160a01b031633146119fa5760405162461bcd60e51b815260040161096f9061342f565b8015155f03611a2457506001600160a01b03165f908152600260205260409020805460ff19169055565b60035415611a805762093a8060035442611a3e919061341c565b11611a805760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b604482015260640161096f565b6001600160a01b0382165f908152600260205260409020805460ff19166001179055426003555b5050565b6060600e805461083a906133d0565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108c7918590610a0090869061341c565b5f611afc338484611dfe565b5060019392505050565b5f546001600160a01b03163314611b2f5760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f546001600160a01b03163314611b785760405162461bcd60e51b815260040161096f9061342f565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611bc590831515815260200190565b60405180910390a150565b5f546001600160a01b03163314611bf95760405162461bcd60e51b815260040161096f9061342f565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b5f546001600160a01b03163314611c455760405162461bcd60e51b815260040161096f9061342f565b600f92909255601055601155565b5f546001600160a01b03163314611c7c5760405162461bcd60e51b815260040161096f9061342f565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611cc75760405162461bcd60e51b815260040161096f9061342f565b8284601554611cd69190613459565b611ce09190613470565b6022556015548190611cf3908490613459565b611cfd9190613470565b60235550505050565b6001600160a01b038316611d525760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161096f565b6001600160a01b038216611d9e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161096f565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611e4c5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161096f565b6001600160a01b038316611e995760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161096f565b5f8211611ed35760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b604482015260640161096f565b611edd8484612740565b156121255760085460ff1615611fa1576001600160a01b0384165f9081526002602052604090205460ff1615611f5957611f1860014361341c565b6001600160a01b0384165f908152600960205260409020541115611f3a575f80fd5b6001600160a01b0383165f908152600960205260409020439055611fa1565b611f644360016134d4565b6001600160a01b0385165f908152600960205260409020541115611f86575f80fd5b6001600160a01b0384165f9081526009602052604090204390555b6001600160a01b0384165f9081526007602052604090205460ff1680611fde57506001600160a01b0383165f9081526007602052604090205460ff165b612125576001600160a01b0384165f9081526002602052604090205460ff168061201f57506001600160a01b0383165f9081526002602052604090205460ff165b1561207657601e548211156120765760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e0000000000000000604482015260640161096f565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906120bb57506001600160a01b0383165f9081526002602052604090205460ff16155b1561212557602154826120cd856112af565b6120d791906134d4565b11156121255760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161096f565b6001600160a01b0383165f90815260016020526040812054900361215e576001600160a01b0383165f908152600b602052604090204290555b6001600160a01b0384165f9081526006602052604090205460019060ff168061219e57506001600160a01b0384165f9081526006602052604090205460ff165b156121a657505f5b6001600160a01b0384165f9081526002602052604090205460ff161561221c57601b54600160a01b900460ff161580156121e95750601b54600160a81b900460ff165b1561221c575f6121f8306112af565b9050602254811061221a57602354811061221157506023545b61221a816127fa565b505b6122288585858461296b565b95945050505050565b83515f908180826001600160401b0381111561224f5761224f612ff3565b604051908082528060200260200182016040528015612278578160200160208202803683370190505b5090508651885114801561228d575085518851145b6122d95760405162461bcd60e51b815260206004820152601f60248201527f466565647320616e642054696d657374616d7073206d757374206d6174636800604482015260640161096f565b6040516335a7445f60e21b81526001600160a01b038a169063d69d117c90612305908b9060040161316a565b5f60405180830381865afa15801561231f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123469190810190613651565b509093505f925050505b83811015612732575f82828151811061236b5761236b613719565b602002602001015189838151811061238557612385613719565b60200260200101516123979190613470565b8383815181106123a9576123a9613719565b60200260200101518984815181106123c3576123c3613719565b60200260200101516123d59190613470565b6123df919061341c565b6123ea9060016134d4565b90505f816001600160401b0381111561240557612405612ff3565b60405190808252806020026020018201604052801561242e578160200160208202803683370190505b5090505f826001600160401b0381111561244a5761244a612ff3565b604051908082528060200260200182016040528015612473578160200160208202803683370190505b5090505f80846001600160401b0381111561249057612490612ff3565b6040519080825280602002602001820160405280156124b9578160200160208202803683370190505b5090505f5b85811015612576578787815181106124d8576124d8613719565b6020026020010151816124eb9190613459565b8e88815181106124fd576124fd613719565b602002602001015161250f91906134d4565b84828151811061252157612521613719565b6020026020010181815250508e878151811061253f5761253f613719565b602002602001015185828151811061255957612559613719565b60209081029190910101528061256e8161372d565b9150506124be565b508e6001600160a01b03166384f3c58585856040518363ffffffff1660e01b81526004016125a5929190613745565b5f60405180830381865afa1580156125bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526125e69190810190613769565b90505f8b156126a657815f8151811061260157612601613719565b60200260200101515f1415801561263e57508160018351612622919061341c565b8151811061263257612632613719565b60200260200101515f14155b6126a65760405162461bcd60e51b815260206004820152603360248201527f537472696374204d6f64653a206e6f20302076616c75657320666f72206669726044820152721cdd08185b99081b185cdd08195b195b595b9d606a1b606482015260840161096f565b5f5b8251811015612718578281815181106126c3576126c3613719565b60200260200101515f14612706578281815181106126e3576126e3613719565b6020026020010151846126f691906134d4565b93506127036001836134d4565b91505b806127108161372d565b9150506126a8565b50505050505050808061272a9061372d565b915050612350565b509098975050505050505050565b5f80546001600160a01b0384811691161480159061276b57505f546001600160a01b03838116911614155b801561278f57506001600160a01b0382165f9081526005602052604090205460ff16155b80156127b357506001600160a01b0383165f9081526005602052604090205460ff16155b80156127ca57506001600160a01b03821661dead14155b80156127de57506001600160a01b03821615155b80156127f357506001600160a01b0383163014155b9392505050565b601b805460ff60a01b1916600160a01b17905560135460125461281d91906134d4565b1561295b576013546012545f9160029161283791906134d4565b6012546128449085613459565b61284e9190613470565b6128589190613470565b90505f612865828461341c565b905061287081612ac4565b60135460125447915f91600291612886916134d4565b6012546128939085613459565b61289d9190613470565b6128a79190613470565b905083156128fb576128b98482612bfb565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b471561295657601a546040516001916001600160a01b03169047905f81818185875af1925050503d805f811461294c576040519150601f19603f3d011682016040523d82523d5f602084013e612951565b606091505b505050505b505050505b50601b805460ff60a01b19169055565b6024545f9060ff166129f4576129818585612c8c565b60245460ff1615801561299957506129998585612740565b156129f45760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b606482015260840161096f565b6001600160a01b0385165f9081526001602052604081208054859290612a1b90849061341c565b909155505f905082612a2d5783612a38565b612a38868686612d99565b6001600160a01b0386165f90815260016020526040812080549293508392909190612a649084906134d4565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ab091815260200190565b60405180910390a350600195945050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612af757612af7613719565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b7291906139b8565b81600181518110612b8557612b85613719565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac94790612bca9085905f90869030904290600401613a0e565b5f604051808303815f87803b158015612be1575f80fd5b505af1158015612bf3573d5f803e3d5ffd5b505050505050565b6017546001600160a01b031663f305d7198230855f80612c225f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401612c44969594939291906139d3565b60606040518083038185885af1158015612c60573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c85919061379a565b5050505050565b60245460ff1615612ceb5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161096f565b612cf58282612740565b158015612d0f57506019546001600160a01b038281169116145b15611aa757436026556001600160a01b0382165f90815260056020908152604091829020805460ff199081166001908117909255602480549091168217905542602755601b805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6019545f9081906001600160a01b0390811690851603612dbc5750601054612de0565b6019546001600160a01b0390811690861603612ddb5750600f54612de0565b506011545b612dea8585612740565b15612e0a576025541580612e015750602554600114155b15612e0a575f80fd5b5f612710612e188386613459565b612e229190613470565b305f90815260016020526040812080549293508392909190612e459084906134d4565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612e94818561341c565b9695505050505050565b5f5b83811015612eb8578181015183820152602001612ea0565b50505f910152565b602081525f8251806020840152612ede816040850160208701612e9e565b601f01601f19169190910160400192915050565b6001600160a01b0381168114612f06575f80fd5b50565b5f8060408385031215612f1a575f80fd5b8235612f2581612ef2565b946020939093013593505050565b5f805f60608486031215612f45575f80fd5b8335612f5081612ef2565b92506020840135612f6081612ef2565b929592945050506040919091013590565b5f8060408385031215612f82575f80fd5b50508035926020909101359150565b5f60208284031215612fa1575f80fd5b81356127f381612ef2565b80358015158114612fbb575f80fd5b919050565b5f8060408385031215612fd1575f80fd5b8235612fdc81612ef2565b9150612fea60208401612fac565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561302f5761302f612ff3565b604052919050565b5f6001600160401b0382111561304f5761304f612ff3565b5060051b60200190565b5f82601f830112613068575f80fd5b8135602061307d61307883613037565b613007565b82815260059290921b8401810191818101908684111561309b575f80fd5b8286015b848110156130b6578035835291830191830161309f565b509695505050505050565b5f805f606084860312156130d3575f80fd5b83356130de81612ef2565b925060208401356001600160401b03808211156130f9575f80fd5b61310587838801613059565b9350604086013591508082111561311a575f80fd5b5061312786828701613059565b9150509250925092565b5f8151808452602080850194508084015f5b8381101561315f57815187529582019590820190600101613143565b509495945050505050565b602081525f6127f36020830184613131565b5f805f806080858703121561318f575f80fd5b843561319a81612ef2565b935060208501356001600160401b03808211156131b5575f80fd5b6131c188838901613059565b945060408701359150808211156131d6575f80fd5b6131e288838901613059565b935060608701359150808211156131f7575f80fd5b5061320487828801613059565b91505092959194509250565b5f60208284031215613220575f80fd5b5035919050565b5f6001600160401b0382111561323f5761323f612ff3565b50601f01601f191660200190565b5f82601f83011261325c575f80fd5b813561326a61307882613227565b81815284602083860101111561327e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a086880312156132ae575f80fd5b85356001600160401b03808211156132c4575f80fd5b6132d089838a0161324d565b965060208801359150808211156132e5575f80fd5b506132f28882890161324d565b94505060408601359250606086013561330a81612ef2565b9150608086013561331a81612ef2565b809150509295509295909350565b5f60208284031215613338575f80fd5b6127f382612fac565b5f8060408385031215613352575f80fd5b823561335d81612ef2565b9150602083013561336d81612ef2565b809150509250929050565b5f805f6060848603121561338a575f80fd5b505081359360208301359350604090920135919050565b5f805f80608085870312156133b4575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c908216806133e457607f821691505b60208210810361340257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108cb576108cb613408565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b80820281158282048414176108cb576108cb613408565b5f8261348a57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b808201808211156108cb576108cb613408565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f82601f830112613553575f80fd5b8151602061356361307883613037565b82815260059290921b84018101918181019086841115613581575f80fd5b8286015b848110156130b65780516001600160401b038111156135a3575f8081fd5b8701603f810189136135b4575f8081fd5b8481015160406135c661307883613227565b8281528b828486010111156135da575f8081fd5b6135e983898301848701612e9e565b8652505050918301918301613585565b5f82601f830112613608575f80fd5b8151602061361861307883613037565b82815260059290921b84018101918181019086841115613636575f80fd5b8286015b848110156130b6578051835291830191830161363a565b5f805f805f60a08688031215613665575f80fd5b85516001600160401b038082111561367b575f80fd5b61368789838a01613544565b9650602088015191508082111561369c575f80fd5b6136a889838a016135f9565b955060408801519150808211156136bd575f80fd5b6136c989838a016135f9565b945060608801519150808211156136de575f80fd5b6136ea89838a016135f9565b935060808801519150808211156136ff575f80fd5b5061370c888289016135f9565b9150509295509295909350565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161373e5761373e613408565b5060010190565b604081525f6137576040830185613131565b82810360208401526122288185613131565b5f60208284031215613779575f80fd5b81516001600160401b0381111561378e575f80fd5b61093e848285016135f9565b5f805f606084860312156137ac575f80fd5b8351925060208401519150604084015190509250925092565b601f82111561380a575f81815260208120601f850160051c810160208610156137eb5750805b601f850160051c820191505b81811015612bf3578281556001016137f7565b505050565b81516001600160401b0381111561382857613828612ff3565b61383c8161383684546133d0565b846137c5565b602080601f83116001811461386f575f84156138585750858301515b5f19600386901b1c1916600185901b178555612bf3565b5f85815260208120601f198616915b8281101561389d5788860151825594840194600190910190840161387e565b50858210156138ba57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561390457815f19048211156138ea576138ea613408565b808516156138f757918102915b93841c93908002906138cf565b509250929050565b5f8261391a575060016108cb565b8161392657505f6108cb565b816001811461393c576002811461394657613962565b60019150506108cb565b60ff84111561395757613957613408565b50506001821b6108cb565b5060208310610133831016604e8410600b8410161715613985575081810a6108cb565b61398f83836138ca565b805f19048211156139a2576139a2613408565b029392505050565b5f6127f360ff84168361390c565b5f602082840312156139c8575f80fd5b81516127f381612ef2565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015613a5c5784516001600160a01b031683529383019391830191600101613a37565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e0f2f1ebac23d572f25d1c2b8e022a59345b87d2bafbf147823dd194e8c5875564736f6c63430008150033
Deployed Bytecode Sourcemap
30755:22357:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32497:73;;;;;;;;;;;;32528:42;32497:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;32497:73:0;;;;;;;;36143:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;32285:35::-;;;;;;;;;;-1:-1:-1;32285:35:0;;;;-1:-1:-1;;;;;32285:35:0;;;36756:161;;;;;;;;;;-1:-1:-1;36756:161:0;;;;;:::i;:::-;;:::i;:::-;;;1733:14:1;;1726:22;1708:41;;1696:2;1681:18;36756:161:0;1568:187:1;32583:25:0;;;;;;;;;;-1:-1:-1;32583:25:0;;;;-1:-1:-1;;;;;32583:25:0;;;35878:83;;;;;;;;;;-1:-1:-1;35951:7:0;;35878:83;;;1906:25:1;;;1894:2;1879:18;35878:83:0;1760:177:1;37489:306:0;;;;;;;;;;-1:-1:-1;37489:306:0;;;;;:::i;:::-;;:::i;42471:257::-;;;;;;;;;;-1:-1:-1;42471:257:0;;;;;:::i;:::-;;:::i;:::-;;35967:80;;;;;;;;;;-1:-1:-1;36035:9:0;;35967:80;;36035:9;;;;2798:36:1;;2786:2;2771:18;35967:80:0;2656:184:1;37803:215:0;;;;;;;;;;-1:-1:-1;37803:215:0;;;;;:::i;:::-;;:::i;31724:81::-;;;;;;;;;;-1:-1:-1;31724:81:0;;;;;;;;;;;;;;;;3047:25:1;;;3103:2;3088:18;;3081:34;;;;3131:18;;;3124:34;3035:2;3020:18;31724:81:0;2845:319:1;42211:252:0;;;;;;;;;;-1:-1:-1;42211:252:0;;;;;:::i;:::-;;:::i;32372:21::-;;;;;;;;;;-1:-1:-1;32372:21:0;;;;-1:-1:-1;;;;;32372:21:0;;;32681:41;;;;;;;;;;-1:-1:-1;32681:41:0;;;;-1:-1:-1;;;32681:41:0;;;;;;34567:749;;;;;;;;;;-1:-1:-1;34567:749:0;;;;;:::i;:::-;;:::i;38259:125::-;;;;;;;;;;-1:-1:-1;38259:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;38348:28:0;38324:4;38348:28;;;:19;:28;;;;;;;;;38259:125;33034:36;;;;;;;;;;-1:-1:-1;33034:36:0;;;;;;;;37242:120;;;;;;;;;;-1:-1:-1;37242:120:0;;;;;:::i;:::-;;:::i;41265:134::-;;;;;;;;;;-1:-1:-1;41265:134:0;;;;;:::i;:::-;;:::i;51407:1702::-;;;;;;;;;;-1:-1:-1;51407:1702:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;32615:25::-;;;;;;;;;;-1:-1:-1;32615:25:0;;;;-1:-1:-1;;;;;32615:25:0;;;51010:389;;;;;;:::i;:::-;;:::i;41755:232::-;;;;;;;;;;-1:-1:-1;41755:232:0;;;;;:::i;:::-;;:::i;36456:117::-;;;;;;;;;;-1:-1:-1;36456:117:0;;;;;:::i;:::-;;:::i;35324:195::-;;;;;;;;;;;;;:::i;38810:156::-;;;;;;;;;;-1:-1:-1;38810:156:0;;;;;:::i;:::-;;:::i;38976:2281::-;;;;;;:::i;:::-;;:::i;38392:410::-;;;;;;;;;;-1:-1:-1;38392:410:0;;;;;:::i;:::-;;:::i;36229:80::-;;;;;;;;;;-1:-1:-1;36281:7:0;34545:6;-1:-1:-1;;;;;34545:6:0;36229:80;;31220:68;;;;;;;;;;-1:-1:-1;31220:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;36053:84;;;;;;;;;;;;;:::i;37370:111::-;;;;;;;;;;-1:-1:-1;37370:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;37456:17:0;37429:7;37456:17;;;:8;:17;;;;;;;37370:111;38026:225;;;;;;;;;;-1:-1:-1;38026:225:0;;;;;:::i;:::-;;:::i;36581:167::-;;;;;;;;;;-1:-1:-1;36581:167:0;;;;;:::i;:::-;;:::i;30859:21::-;;;;;;;;;;-1:-1:-1;30859:21:0;;;;-1:-1:-1;;;;;30859:21:0;;;31956:84;;;;;;;;;;-1:-1:-1;31956:84:0;;;;;;;;;;;;;9546:25:1;;;9602:2;9587:18;;9580:34;;;;9519:18;31956:84:0;9372:248:1;41575:166:0;;;;;;;;;;-1:-1:-1;41575:166:0;;;;;:::i;:::-;;:::i;43169:171::-;;;;;;;;;;-1:-1:-1;43169:171:0;;;;;:::i;:::-;;:::i;41409:158::-;;;;;;;;;;-1:-1:-1;41409:158:0;;;;;:::i;:::-;;:::i;36315:133::-;;;;;;;;;;-1:-1:-1;36315:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;36417:19:0;;;36399:7;36417:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;36315:133;41997:206;;;;;;;;;;-1:-1:-1;41997:206:0;;;;;:::i;:::-;;:::i;43033:128::-;;;;;;;;;;-1:-1:-1;43033:128:0;;;;;:::i;:::-;;:::i;42736:289::-;;;;;;;;;;-1:-1:-1;42736:289:0;;;;;:::i;:::-;;:::i;36143:80::-;36191:13;36215:5;36208:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36143:80;:::o;36756:161::-;36831:4;36848:39;26600:10;36871:7;36880:6;36848:8;:39::i;:::-;-1:-1:-1;36905:4:0;36756:161;;;;;:::o;37489:306::-;-1:-1:-1;;;;;37610:19:0;;37589:4;37610:19;;;:11;:19;;;;;;;;37630:10;37610:31;;;;;;;;-1:-1:-1;;37610:52:0;37606:126;;-1:-1:-1;;;;;37679:19:0;;;;;;:11;:19;;;;;;;;37699:10;37679:31;;;;;;;:41;;37714:6;;37679:19;:41;;37714:6;;37679:41;:::i;:::-;;;;-1:-1:-1;;37606:126:0;37751:36;37761:6;37769:9;37780:6;37751:9;:36::i;:::-;37744:43;37489:306;-1:-1:-1;;;;37489:306:0:o;42471:257::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;;;;;;;;;42555:13:::1;42593:7;42582;42572;;:17;;;;:::i;:::-;42571:29;;;;:::i;:::-;42555:45;;42639:3;42629:7;;:13;;;;:::i;:::-;42619:5;:24;;42611:74;;;;-1:-1:-1::0;;;42611:74:0::1;;;;;;;:::i;:::-;42696:14;:22:::0;-1:-1:-1;;42471:257:0:o;37803:215::-;26600:10;37891:4;37940:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;37940:34:0;;;;;;;;;;37891:4;;37908:80;;37931:7;;37940:47;;37977:10;;37940:47;:::i;:::-;37908:8;:80::i;42211:252::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;42294:13:::1;42332:7;42321;42311;;:17;;;;:::i;:::-;42310:29;;;;:::i;:::-;42294:45;;42378:3;42368:7;;:13;;;;:::i;:::-;42358:5;:24;;42350:74;;;;-1:-1:-1::0;;;42350:74:0::1;;;;;;;:::i;:::-;42435:12;:20:::0;-1:-1:-1;;42211:252:0:o;34567:749::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34648:22:0;::::1;34640:96;;;;-1:-1:-1::0;;;34640:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;34755:16:0;::::1;::::0;34747:90:::1;;;;-1:-1:-1::0;;;34747:90:0::1;;;;;;;:::i;:::-;34868:6;::::0;;34848:34:::1;::::0;-1:-1:-1;;;;;34868:6:0;;::::1;::::0;34848:19:::1;:34::i;:::-;34893:35;34913:8;34923:4;34893:19;:35::i;:::-;34975:6;::::0;34953:10:::1;::::0;-1:-1:-1;;;;;34975:6:0;;::::1;34953:10:::0;::::1;:29:::0;34949:78:::1;;34997:10;:30:::0;;-1:-1:-1;;;;;;34997:30:0::1;-1:-1:-1::0;;;;;34997:30:0;::::1;;::::0;;34949:78:::1;35090:6;::::0;35080:17:::1;::::0;-1:-1:-1;;;;;35090:6:0::1;35080:9;:17::i;:::-;35048:19;35060:6:::0;;-1:-1:-1;;;;;35060:6:0;;::::1;35048:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;35121:6;;35048:19;;35111:17:::1;::::0;35121:6:::1;35111:9;:17::i;:::-;:21;35108:99;;;35159:6;::::0;35149:46:::1;::::0;-1:-1:-1;;;;;35159:6:0::1;35167:8:::0;35177:17:::1;35159:6:::0;35177:9:::1;:17::i;:::-;35149:9;:46::i;:::-;;35108:99;35227:6;:17:::0;;-1:-1:-1;;;;;;35227:17:0::1;-1:-1:-1::0;;;;;35227:17:0;::::1;::::0;;::::1;::::0;;35260:38:::1;::::0;35227:17;;;;35260:38:::1;::::0;35227:6;35260:38:::1;34567:749:::0;:::o;37242:120::-;37295:4;37319:35;37327:7;-1:-1:-1;;37319:7:0;:35::i;41265:134::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41353:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;41353:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41265:134::o;51407:1702::-;51540:21;51597:7;:14;-1:-1:-1;;;;;51583:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51583:29:0;;51576:36;;51623:25;51665:7;:14;-1:-1:-1;;;;;51651:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51651:29:0;-1:-1:-1;51710:32:0;;-1:-1:-1;;;51710:32:0;;51623:57;;-1:-1:-1;;;;;;51710:23:0;;;;;:32;;51734:7;;51710:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;51710:32:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;51693:49:0;;-1:-1:-1;51760:6:0;;-1:-1:-1;;;51755:1323:0;51776:7;:14;51772:1;:18;51755:1323;;;51812:23;51838:15;51812:41;;51868:22;51911:11;51923:1;51911:14;;;;;;;;:::i;:::-;;;;;;;51893:15;:32;;;;:::i;:::-;51868:57;;51942:17;52011:8;52020:1;52011:11;;;;;;;;:::i;:::-;;;;;;;51994:14;:28;;;;:::i;:::-;51980:8;51989:1;51980:11;;;;;;;;:::i;:::-;;;;;;;51962:15;:29;;;;:::i;:::-;:60;;;;:::i;:::-;:64;;52025:1;51962:64;:::i;:::-;51942:84;;52041:28;52086:9;-1:-1:-1;;;;;52072:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52072:24:0;;52041:55;;52111:33;52161:9;-1:-1:-1;;;;;52147:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52147:24:0;;52111:60;;52186:17;52220:23;52260:9;-1:-1:-1;;;;;52246:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52246:24:0;;52220:50;;52292:6;52287:172;52308:9;52304:1;:13;52287:172;;;52386:8;52395:1;52386:11;;;;;;;;:::i;:::-;;;;;;;52382:1;:15;;;;:::i;:::-;52365:32;;:14;:32;:::i;:::-;52343:16;52360:1;52343:19;;;;;;;;:::i;:::-;;;;;;:54;;;;;52433:7;52441:1;52433:10;;;;;;;;:::i;:::-;;;;;;;52416:11;52428:1;52416:14;;;;;;;;:::i;:::-;;;;;;;;;;:27;52319:3;;;;:::i;:::-;;;;52287:172;;;-1:-1:-1;52484:61:0;;-1:-1:-1;;;52484:61:0;;-1:-1:-1;;;;;52484:30:0;;;;;:61;;52515:11;;52528:16;;52484:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;52484:61:0;;;;;;;;;;;;:::i;:::-;52475:70;-1:-1:-1;52562:17:0;;52596:196;52617:6;:13;52613:1;:17;52596:196;;;52659:6;52666:1;52659:9;;;;;;;;:::i;:::-;;;;;;;52672:1;52659:14;52655:122;;52711:6;52718:1;52711:9;;;;;;;;:::i;:::-;;;;;;;52698:22;;;;;:::i;:::-;;-1:-1:-1;52743:14:0;52756:1;52743:14;;:::i;:::-;;;52655:122;52632:3;;;;:::i;:::-;;;;52596:196;;;-1:-1:-1;52812:13:0;;52808:259;;52846:17;52898:11;-1:-1:-1;;;;;52898:19:0;;52918:7;52926:1;52918:10;;;;;;;;:::i;:::-;;;;;;;52898:31;;;;;;;;;;;;;1906:25:1;;1894:2;1879:18;;1760:177;52898:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;52882:47:0;;-1:-1:-1;52985:13:0;;-1:-1:-1;52985:9:0;52997:1;52985:13;:::i;:::-;52959:21;52971:9;52959;:21;:::i;:::-;52958:41;;;;:::i;:::-;52948:4;52953:1;52948:7;;;;;;;;:::i;:::-;;;;;;:51;;;;;52827:188;52808:259;;;53050:1;53040:4;53045:1;53040:7;;;;;;;;:::i;:::-;;;;;;:11;;;;;52808:259;51797:1281;;;;;;;;51792:3;;;;;:::i;:::-;;;;51755:1323;;;;53088:13;51407:1702;;;;;:::o;51010:389::-;51175:10;;-1:-1:-1;;;;;51175:10:0;51161;:24;51153:56;;;;-1:-1:-1;;;51153:56:0;;18545:2:1;51153:56:0;;;18527:21:1;18584:2;18564:18;;;18557:30;-1:-1:-1;;;18603:18:1;;;18596:50;18663:18;;51153:56:0;18343:344:1;51153:56:0;51220:17;51240:40;51250:4;51256:5;51263:4;51269;51275;51240:9;:40::i;:::-;51334:57;;51220:60;;-1:-1:-1;51306:4:0;;-1:-1:-1;;;;;51334:23:0;;;51365:21;;51291:12;51334:57;51291:12;51334:57;51365:21;51334:23;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;51010:389:0:o;41755:232::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;41849:21:::1;41860:10:::0;41849;:21:::1;:::i;:::-;41875:4;41848:31;41838:57;;;::::0;-1:-1:-1;;;41838:57:0;;19104:2:1;41838:57:0::1;::::0;::::1;19086:21:1::0;19143:2;19123:18;;;19116:30;-1:-1:-1;;;19162:18:1;;;19155:41;19213:18;;41838:57:0::1;18902:335:1::0;41838:57:0::1;41906:6;:29:::0;;;;41946:16;:29;41755:232::o;36456:117::-;-1:-1:-1;;;;;36549:16:0;36522:7;36549:16;;;:7;:16;;;;;;;36456:117::o;35324:195::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;35411:6:::1;::::0;;35391:34:::1;::::0;-1:-1:-1;;;;;35411:6:0;;::::1;::::0;35391:19:::1;:34::i;:::-;35453:1;35436:19:::0;;-1:-1:-1;;;;;;35436:19:0::1;::::0;;35471:40:::1;::::0;35453:1;;35471:40:::1;::::0;35453:1;;35471:40:::1;35324:195::o:0;38810:156::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;38890:13:::1;::::0;:18;38881:38:::1;;;::::0;-1:-1:-1;;;38881:38:0;;19444:2:1;38881:38:0::1;::::0;::::1;19426:21:1::0;19483:1;19463:18;;;19456:29;-1:-1:-1;;;19501:18:1;;;19494:36;19547:18;;38881:38:0::1;19242:329:1::0;38881:38:0::1;38930:13;:28:::0;38810:156::o;38976:2281::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;39158:13:::1;::::0;::::1;;39157:14;39149:56;;;::::0;-1:-1:-1;;;39149:56:0;;19778:2:1;39149:56:0::1;::::0;::::1;19760:21:1::0;19817:2;19797:18;;;19790:30;19856:31;19836:18;;;19829:59;19905:18;;39149:56:0::1;19576:353:1::0;39149:56:0::1;39224:13;::::0;:18;39216:27:::1;;;::::0;::::1;;39264:5;:16;39272:8:::0;39264:5;:16:::1;:::i;:::-;-1:-1:-1::0;39291:7:0::1;:20;39301:10:::0;39291:7;:20:::1;:::i;:::-;-1:-1:-1::0;39324:14:0::1;:27:::0;;;39362:9:::1;:14:::0;;-1:-1:-1;;39362:14:0::1;39374:2;39362:14:::0;;::::1;::::0;;;39414:13:::1;::::0;:2:::1;:13;:::i;:::-;39397:14;;:30;;;;:::i;:::-;39387:7;:40:::0;39438:9:::1;:48:::0;;-1:-1:-1;;;;;;39438:48:0;;::::1;-1:-1:-1::0;;;;;39438:48:0;::::1;;::::0;;;39499:9:::1;:46:::0;;32446:42:::1;39499:46:::0;::::1;::::0;::::1;::::0;;39583:19:::1;::::0;;-1:-1:-1;;;39583:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;32446:42;39583:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39565:49:0::1;;39615:9;;;;;;;;;-1:-1:-1::0;;;;;39615:9:0::1;-1:-1:-1::0;;;;;39615:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39565:82;::::0;-1:-1:-1;;;;;;39565:82:0::1;::::0;;;;;;-1:-1:-1;;;;;24007:15:1;;;39565:82:0::1;::::0;::::1;23989:34:1::0;39641:4:0::1;24039:18:1::0;;;24032:43;23924:18;;39565:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39556:6;:91:::0;;-1:-1:-1;;;;;;39556:91:0::1;-1:-1:-1::0;;;;;39556:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;39658:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;39658:22:0::1;-1:-1:-1::0;39658:22:0::1;::::0;;39711:4:::1;39691:26:::0;;:11:::1;:26:::0;;;;;39726:9:::1;::::0;;::::1;39691:46:::0;;;;;;;-1:-1:-1;;39691:66:0;;34545:6;;39770:10:::1;:29:::0;;-1:-1:-1;;;;;;39770:29:0;;::::1;-1:-1:-1::0;;;;;39770:29:0;;::::1;;::::0;;;39810:10:::1;:33:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;39871:3:::1;39856:12;:18:::0;;;39936:5:::1;39921:12;:20:::0;;;39968:7:::1;::::0;39936:5;;39968:22:::1;::::0;::::1;:::i;:::-;39967:39;;;;:::i;:::-;39952:12;:54:::0;40046:3:::1;40027:16;:22:::0;;;40100:5:::1;40081:16;:24:::0;;;40134:7:::1;::::0;40100:5;;40134:26:::1;::::0;::::1;:::i;:::-;40133:47;;;;:::i;:::-;40116:14;:64:::0;40218:7:::1;::::0;40233:6:::1;::::0;40218:11:::1;::::0;40228:1:::1;40218:11;:::i;:::-;40217:22;;;;:::i;:::-;40201:13;:38:::0;40264:7:::1;::::0;40279:5:::1;::::0;40264:11:::1;::::0;40274:1:::1;40264:11;:::i;:::-;40263:21;;;;:::i;:::-;40250:10;:34:::0;40328:4:::1;40297:19;:28;40317:7;34518::::0;34545:6;-1:-1:-1;;;;;34545:6:0;;34480:79;40317:7:::1;-1:-1:-1::0;;;;;40297:28:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;40297:28:0;;;:35;;;::::1;;-1:-1:-1::0;;40297:35:0;;::::1;;::::0;;40371:4:::1;40343:34:::0;;:19:::1;:34:::0;;;;;:41;;;::::1;40297:35:::0;40343:41;;::::1;::::0;;;32528:42:::1;40395:25:::0;;;:32;;;;::::1;::::0;::::1;::::0;;;40438:17:::1;::::0;40456:7:::1;34518::::0;34545:6;-1:-1:-1;;;;;34545:6:0;;34480:79;40456:7:::1;-1:-1:-1::0;;;;;40438:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;40438:26:0;:33;;-1:-1:-1;;40438:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40486:42:::1;32446;-1:-1:-1::0;;40486:7:0::1;:42::i;:::-;;40539:35;40547:7;34518::::0;34545:6;-1:-1:-1;;;;;34545:6:0;;34480:79;40547:7:::1;-1:-1:-1::0;;40539:7:0::1;:35::i;:::-;-1:-1:-1::0;40589:13:0::1;:20:::0;;-1:-1:-1;;40589:20:0::1;40605:4;40589:20:::0;;::::1;::::0;;;40639:7:::1;::::0;;40589:13:::1;40628:7;34518::::0;34545:6;-1:-1:-1;;;;;34545:6:0;;34480:79;40628:7:::1;-1:-1:-1::0;;;;;40620:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;40620:16:0;:26;40657:42:::1;40666:7;34518::::0;34545:6;-1:-1:-1;;;;;34545:6:0;;34480:79;40666:7:::1;32446:42;40691:7;;40657:8;:42::i;:::-;34518:7:::0;34545:6;-1:-1:-1;;;;;34545:6:0;-1:-1:-1;;;;;40715:38:0::1;40732:1;-1:-1:-1::0;;;;;40715:38:0::1;;40745:7;;40715:38;;;;1906:25:1::0;;1894:2;1879:18;;1760:177;40715:38:0::1;;;;;;;;40776:6;::::0;40792:9:::1;::::0;40767:55:::1;::::0;-1:-1:-1;;;;;40776:6:0;;::::1;::::0;40792:9:::1;-1:-1:-1::0;;40767:8:0::1;:55::i;:::-;40865:9;::::0;40833:62:::1;::::0;40850:4:::1;::::0;-1:-1:-1;;;;;40865:9:0::1;-1:-1:-1::0;;40833:8:0::1;:62::i;:::-;40924:6;::::0;40914:51:::1;::::0;-1:-1:-1;;;;;40924:6:0::1;40940:4;40947:17;40924:6:::0;40947:9:::1;:17::i;40914:51::-;-1:-1:-1::0;40978:9:0::1;::::0;-1:-1:-1;;;;;40978:9:0::1;:25;41011:21;41056:4;41076:24;41056:4:::0;41076:9:::1;:24::i;:::-;41115:1;41158::::0;41201:7:::1;34518::::0;34545:6;-1:-1:-1;;;;;34545:6:0;;34480:79;41201:7:::1;41223:15;40978:271;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38976:2281:::0;;;;;:::o;38392:410::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;38473:16;::::1;;38484:5;38473:16:::0;38469:326:::1;;-1:-1:-1::0;;;;;;38506:13:0::1;38522:5;38506:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;38506:21:0::1;::::0;;38392:410::o;38469:326::-:1;38564:17;::::0;:22;38560:139:::1;;38653:7;38633:17;;38615:15;:35;;;;:::i;:::-;:45;38607:76;;;::::0;-1:-1:-1;;;38607:76:0;;24900:2:1;38607:76:0::1;::::0;::::1;24882:21:1::0;24939:2;24919:18;;;24912:30;-1:-1:-1;;;24958:18:1;;;24951:48;25016:18;;38607:76:0::1;24698:342:1::0;38607:76:0::1;-1:-1:-1::0;;;;;38713:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;38713:20:0::1;38729:4;38713:20;::::0;;38768:15:::1;38748:17;:35:::0;38469:326:::1;38392:410:::0;;:::o;36053:84::-;36103:13;36127:7;36120:14;;;;;:::i;38026:225::-;26600:10;38119:4;38168:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;38168:34:0;;;;;;;;;;38119:4;;38136:85;;38159:7;;38168:52;;38205:15;;38168:52;:::i;36581:167::-;36659:4;36676:42;26600:10;36700:9;36711:6;36676:9;:42::i;:::-;-1:-1:-1;36736:4:0;;36581:167;-1:-1:-1;;;36581:167:0:o;41575:166::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41673:52:0::1;41728:5;41673:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;41673:60:0::1;::::0;;41575:166::o;43169:171::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;43246:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;43246:32:0::1;-1:-1:-1::0;;;;43246:32:0;;::::1;;::::0;;43294:38:::1;::::0;::::1;::::0;::::1;::::0;43270:8;1733:14:1;1726:22;1708:41;;1696:2;1681:18;;1568:187;43294:38:0::1;;;;;;;;43169:171:::0;:::o;41409:158::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41500:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;41500:59:0::1;41555:4;41500:59;::::0;;41409:158::o;41997:206::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;42094:4:::1;:21:::0;;;;42127:12;:23;42162:16;:31;41997:206::o;43033:128::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;43116:10:::1;:37:::0;;-1:-1:-1;;;;;;43116:37:0::1;-1:-1:-1::0;;;;;43116:37:0;;;::::1;::::0;;;::::1;::::0;;43033:128::o;42736:289::-;33763:6;;-1:-1:-1;;;;;33763:6:0;26600:10;33763:22;33755:51;;;;-1:-1:-1;;;33755:51:0;;;;;;;:::i;:::-;42936:16:::1;42916;42906:7;;:26;;;;:::i;:::-;42905:47;;;;:::i;:::-;42889:13;:63:::0;42977:7:::1;::::0;43004:13;;42977:23:::1;::::0;42987:13;;42977:23:::1;:::i;:::-;42976:41;;;;:::i;:::-;42963:10;:54:::0;-1:-1:-1;;;;42736:289:0:o;36925:309::-;-1:-1:-1;;;;;37019:20:0;;37011:52;;;;-1:-1:-1;;;37011:52:0;;25247:2:1;37011:52:0;;;25229:21:1;25286:2;25266:18;;;25259:30;-1:-1:-1;;;25305:18:1;;;25298:49;25364:18;;37011:52:0;25045:343:1;37011:52:0;-1:-1:-1;;;;;37082:21:0;;37074:53;;;;-1:-1:-1;;;37074:53:0;;25247:2:1;37074:53:0;;;25229:21:1;25286:2;25266:18;;;25259:30;-1:-1:-1;;;25305:18:1;;;25298:49;25364:18;;37074:53:0;25045:343:1;37074:53:0;-1:-1:-1;;;;;37140:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;37193:33;;1906:25:1;;;37193:33:0;;1879:18:1;37193:33:0;;;;;;;36925:309;;;:::o;43679:1925::-;43758:4;-1:-1:-1;;;;;43783:18:0;;43775:51;;;;-1:-1:-1;;;43775:51:0;;25595:2:1;43775:51:0;;;25577:21:1;25634:2;25614:18;;;25607:30;-1:-1:-1;;;25653:18:1;;;25646:50;25713:18;;43775:51:0;25393:344:1;43775:51:0;-1:-1:-1;;;;;43845:16:0;;43837:49;;;;-1:-1:-1;;;43837:49:0;;25595:2:1;43837:49:0;;;25577:21:1;25634:2;25614:18;;;25607:30;-1:-1:-1;;;25653:18:1;;;25646:50;25713:18;;43837:49:0;25393:344:1;43837:49:0;43914:1;43905:6;:10;43897:31;;;;-1:-1:-1;;;43897:31:0;;25944:2:1;43897:31:0;;;25926:21:1;25983:1;25963:18;;;25956:29;-1:-1:-1;;;26001:18:1;;;25994:38;26049:18;;43897:31:0;25742:331:1;43897:31:0;43942:20;43953:4;43959:2;43942:10;:20::i;:::-;43939:895;;;43983:15;;;;43979:377;;;-1:-1:-1;;;;;44023:13:0;;;;;;:7;:13;;;;;;;;44019:322;;;44085:14;44098:1;44085:12;:14;:::i;:::-;-1:-1:-1;;;;;44068:13:0;;;;;;:9;:13;;;;;;:31;;44060:40;;;;;;-1:-1:-1;;;;;44123:13:0;;;;;;:9;:13;;;;;44139:12;44123:28;;44019:322;;;44249:14;:12;44262:1;44249:14;:::i;:::-;-1:-1:-1;;;;;44230:15:0;;;;;;:9;:15;;;;;;:33;;44222:42;;;;;;-1:-1:-1;;;;;44287:15:0;;;;;;:9;:15;;;;;44305:12;44287:30;;44019:322;-1:-1:-1;;;;;44375:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;44420:39:0;;;;;;:35;:39;;;;;;;;44375:84;44370:439;;-1:-1:-1;;;;;44484:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;44501:11:0;;;;;;:7;:11;;;;;;;;44484:28;44481:130;;;44550:12;;44540:6;:22;;44532:59;;;;-1:-1:-1;;;44532:59:0;;26280:2:1;44532:59:0;;;26262:21:1;26319:2;26299:18;;;26292:30;26358:26;26338:18;;;26331:54;26402:18;;44532:59:0;26078:348:1;44532:59:0;-1:-1:-1;;;;;44632:20:0;;32446:42;44632:20;;;;:36;;-1:-1:-1;;;;;;44657:11:0;;;;;;:7;:11;;;;;;;;44656:12;44632:36;44629:163;;;44727:14;;44717:6;44701:13;44711:2;44701:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;44693:79;;;;-1:-1:-1;;;44693:79:0;;26633:2:1;44693:79:0;;;26615:21:1;26672:2;26652:18;;;26645:30;26711:28;26691:18;;;26684:56;26757:18;;44693:79:0;26431:350:1;44693:79:0;-1:-1:-1;;;;;44850:11:0;;;;;;:7;:11;;;;;;:16;;44846:79;;-1:-1:-1;;;;;44883:12:0;;;;;;:8;:12;;;;;44898:15;44883:30;;44846:79;-1:-1:-1;;;;;44970:25:0;;44937:12;44970:25;;;:19;:25;;;;;;44952:4;;44970:25;;;:52;;-1:-1:-1;;;;;;44999:23:0;;;;;;:19;:23;;;;;;;;44970:52;44967:98;;;-1:-1:-1;45048:5:0;44967:98;-1:-1:-1;;;;;45081:11:0;;;;;;:7;:11;;;;;;;;45077:457;;;45114:16;;-1:-1:-1;;;45114:16:0;;;;45113:17;:59;;;;-1:-1:-1;45151:21:0;;-1:-1:-1;;;45151:21:0;;;;45113:59;45109:408;;;45207:28;45238:24;45256:4;45238:9;:24::i;:::-;45207:55;;45309:13;;45285:20;:37;45281:221;;45374:10;;45350:20;:34;45347:77;;-1:-1:-1;45411:10:0;;45347:77;45446:36;45461:20;45446:14;:36::i;:::-;45188:329;45109:408;45552:44;45570:4;45576:2;45580:6;45588:7;45552:17;:44::i;:::-;45545:51;43679:1925;-1:-1:-1;;;;;43679:1925:0:o;49080:1922::-;49310:14;;49266:7;;;;49310:14;-1:-1:-1;;;;;49394:22:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;49394:22:0;;49366:50;;49459:14;:21;49441:7;:14;:39;:83;;;;;49502:15;:22;49484:7;:14;:40;49441:83;49433:127;;;;-1:-1:-1;;;49433:127:0;;26988:2:1;49433:127:0;;;26970:21:1;27027:2;27007:18;;;27000:30;27066:33;27046:18;;;27039:61;27117:18;;49433:127:0;26786:355:1;49433:127:0;49594:32;;-1:-1:-1;;;49594:32:0;;-1:-1:-1;;;;;49594:23:0;;;;;:32;;49618:7;;49594:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;49594:32:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;49577:49:0;;-1:-1:-1;49648:6:0;;-1:-1:-1;;;49643:1322:0;49664:7;49660:1;:11;49643:1322;;;49699:17;49774:8;49783:1;49774:11;;;;;;;;:::i;:::-;;;;;;;49754:14;49769:1;49754:17;;;;;;;;:::i;:::-;;;;;;;:31;;;;:::i;:::-;49740:8;49749:1;49740:11;;;;;;;;:::i;:::-;;;;;;;49719:15;49735:1;49719:18;;;;;;;;:::i;:::-;;;;;;;:32;;;;:::i;:::-;:66;;;;:::i;:::-;:70;;49788:1;49719:70;:::i;:::-;49699:90;;49808:28;49853:9;-1:-1:-1;;;;;49839:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;49839:24:0;;49808:55;;49882:33;49932:9;-1:-1:-1;;;;;49918:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;49918:24:0;;49882:60;;49961:17;49999:23;50039:9;-1:-1:-1;;;;;50025:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50025:24:0;;49999:50;;50075:6;50070:187;50091:9;50087:1;:13;50070:187;;;50176:8;50185:1;50176:11;;;;;;;;:::i;:::-;;;;;;;50172:1;:15;;;;:::i;:::-;50152:14;50167:1;50152:17;;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;:::-;50130:16;50147:1;50130:19;;;;;;;;:::i;:::-;;;;;;:57;;;;;50227:7;50235:1;50227:10;;;;;;;;:::i;:::-;;;;;;;50210:11;50222:1;50210:14;;;;;;;;:::i;:::-;;;;;;;;;;:27;50102:3;;;;:::i;:::-;;;;50070:187;;;;50286:11;-1:-1:-1;;;;;50286:30:0;;50317:11;50330:16;50286:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;50286:61:0;;;;;;;;;;;;:::i;:::-;50277:70;;50368:17;50410:10;50406:169;;;50453:6;50460:1;50453:9;;;;;;;;:::i;:::-;;;;;;;50466:1;50453:14;;:46;;;;;50471:6;50492:1;50478:6;:13;:15;;;;:::i;:::-;50471:23;;;;;;;;:::i;:::-;;;;;;;50498:1;50471:28;;50453:46;50445:110;;;;-1:-1:-1;;;50445:110:0;;27348:2:1;50445:110:0;;;27330:21:1;27387:2;27367:18;;;27360:30;27426:34;27406:18;;;27399:62;-1:-1:-1;;;27477:18:1;;;27470:49;27536:19;;50445:110:0;27146:415:1;50445:110:0;50600:6;50595:216;50616:6;:13;50612:1;:17;50595:216;;;50662:6;50669:1;50662:9;;;;;;;;:::i;:::-;;;;;;;50675:1;50662:14;50658:134;;50718:6;50725:1;50718:9;;;;;;;;:::i;:::-;;;;;;;50705:22;;;;;:::i;:::-;;-1:-1:-1;50754:14:0;50767:1;50754:14;;:::i;:::-;;;50658:134;50631:3;;;;:::i;:::-;;;;50595:216;;;;49678:1287;;;;;;49673:3;;;;;:::i;:::-;;;;49643:1322;;;-1:-1:-1;50989:4:0;;49080:1922;-1:-1:-1;;;;;;;;49080:1922:0:o;43348:323::-;43416:4;34545:6;;-1:-1:-1;;;;;43440:15:0;;;34545:6;;43440:15;;;;:45;;-1:-1:-1;34518:7:0;34545:6;-1:-1:-1;;;;;43472:13:0;;;34545:6;;43472:13;;43440:45;:84;;;;-1:-1:-1;;;;;;43503:21:0;;;;;;:17;:21;;;;;;;;43502:22;43440:84;:125;;;;-1:-1:-1;;;;;;43542:23:0;;;;;;:17;:23;;;;;;;;43541:24;43440:125;:152;;;;-1:-1:-1;;;;;;43582:10:0;;32528:42;43582:10;;43440:152;:185;;;;-1:-1:-1;;;;;;43609:16:0;;;;43440:185;:223;;;;-1:-1:-1;;;;;;43642:21:0;;43658:4;43642:21;;43440:223;43433:230;43348:323;-1:-1:-1;;;43348:323:0:o;45612:911::-;33637:16;:23;;-1:-1:-1;;;;33637:23:0;-1:-1:-1;;;33637:23:0;;;45720:16;;:6:::1;45701:16:::0;:35:::1;::::0;45720:16;45701:35:::1;:::i;:::-;45697:66:::0;45756:7:::1;45697:66;45858:16:::0;;:6:::1;45839:16:::0;45773:17:::1;::::0;45880:1:::1;::::0;45839:35:::1;::::0;45858:16;45839:35:::1;:::i;:::-;45818:6;:16:::0;45795:39:::1;::::0;:20;:39:::1;:::i;:::-;45794:81;;;;:::i;:::-;45793:88;;;;:::i;:::-;45773:108:::0;-1:-1:-1;45894:20:0::1;45917:32;45773:108:::0;45917:20;:32:::1;:::i;:::-;45894:55;;45960:30;45977:12;45960:16;:30::i;:::-;46146:16:::0;;:6:::1;46127:16:::0;46028:21:::1;::::0;46003:22:::1;::::0;46168:1:::1;::::0;46127:35:::1;::::0;::::1;:::i;:::-;46106:6;:16:::0;46089:33:::1;::::0;:14;:33:::1;:::i;:::-;46088:75;;;;:::i;:::-;46087:82;;;;:::i;:::-;46060:109:::0;-1:-1:-1;46186:13:0;;46182:161:::1;;46216:41;46229:9;46240:16;46216:12;:41::i;:::-;46277:54;::::0;;3047:25:1;;;3103:2;3088:18;;3081:34;;;3131:18;;;3124:34;;;46277:54:0::1;::::0;3035:2:1;3020:18;46277:54:0::1;;;;;;;46182:161;46357:21;:25:::0;46353:163:::1;;46454:10;::::0;46446:58:::1;::::0;46414:4:::1;::::0;-1:-1:-1;;;;;46454:10:0::1;::::0;46478:21:::1;::::0;46446:58:::1;::::0;;;46478:21;46454:10;46446:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;46353:163:0::1;45686:837;;;;33671:1;-1:-1:-1::0;33683:16:0;:24;;-1:-1:-1;;;;33683:24:0;;;45612:911::o;47793:582::-;47915:16;;47893:4;;47915:16;;47910:221;;47948:28;47967:4;47973:2;47948:18;:28::i;:::-;47996:16;;;;47995:17;:41;;;;;48016:20;48027:4;48033:2;48016:10;:20::i;:::-;47991:129;;;48057:47;;-1:-1:-1;;;48057:47:0;;27768:2:1;48057:47:0;;;27750:21:1;27807:2;27787:18;;;27780:30;27846:34;27826:18;;;27819:62;-1:-1:-1;;;27897:18:1;;;27890:35;27942:19;;48057:47:0;27566:401:1;47991:129:0;-1:-1:-1;;;;;48142:13:0;;;;;;:7;:13;;;;;:23;;48159:6;;48142:13;:23;;48159:6;;48142:23;:::i;:::-;;;;-1:-1:-1;48176:22:0;;-1:-1:-1;48202:7:0;48201:48;;48243:6;48201:48;;;48213:27;48223:4;48229:2;48233:6;48213:9;:27::i;:::-;-1:-1:-1;;;;;48264:11:0;;;;;;:7;:11;;;;;:29;;48176:73;;-1:-1:-1;48176:73:0;;48264:11;;;:29;;48176:73;;48264:29;:::i;:::-;;;;;;;;48326:2;-1:-1:-1;;;;;48311:34:0;48320:4;-1:-1:-1;;;;;48311:34:0;;48330:14;48311:34;;;;1906:25:1;;1894:2;1879:18;;1760:177;48311:34:0;;;;;;;;-1:-1:-1;48363:4:0;;47793:582;-1:-1:-1;;;;;47793:582:0:o;46531:417::-;46622:16;;;46636:1;46622:16;;;;;;;;46598:21;;46622:16;;;;;;;;;;-1:-1:-1;46622:16:0;46598:40;;46667:4;46649;46654:1;46649:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;46649:23:0;;;:7;;;;;;;;;;:23;;;;46693:9;;:16;;;-1:-1:-1;;;46693:16:0;;;;:9;;;;;:14;;:16;;;;;46649:7;;46693:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46683:4;46688:1;46683:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;46683:26:0;;;:7;;;;;;;;;:26;46722:9;;:218;;-1:-1:-1;;;46722:218:0;;:9;;;:60;;:218;;46797:11;;46722:9;;46867:4;;46894;;46914:15;;46722:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46587:361;46531:417;:::o;46956:335::-;47037:9;;-1:-1:-1;;;;;47037:9:0;:25;47070:9;47103:4;47123:11;47037:9;;47235:7;34518;34545:6;-1:-1:-1;;;;;34545:6:0;;34480:79;47235:7;47257:15;47037:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;46956:335;;:::o;47299:486::-;47381:16;;;;47380:17;47372:65;;;;-1:-1:-1;;;47372:65:0;;29159:2:1;47372:65:0;;;29141:21:1;29198:2;29178:18;;;29171:30;29237:34;29217:18;;;29210:62;-1:-1:-1;;;29288:18:1;;;29281:33;29331:19;;47372:65:0;28957:399:1;47372:65:0;47453:20;47464:4;47470:2;47453:10;:20::i;:::-;47452:21;:37;;;;-1:-1:-1;47483:6:0;;-1:-1:-1;;;;;47477:12:0;;;47483:6;;47477:12;47452:37;47448:330;;;47525:12;47510;:27;-1:-1:-1;;;;;47554:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;47554:30:0;;;47580:4;47554:30;;;;;;47599:16;:23;;;;;;;;;47652:15;47637:12;:30;47684:21;:28;;-1:-1:-1;;;;47684:28:0;-1:-1:-1;;;47684:28:0;;;47732:34;;1708:41:1;;;47732:34:0;;1681:18:1;47732:34:0;;;;;;;47299:486;;:::o;48383:689::-;48523:6;;48462:7;;;;-1:-1:-1;;;;;48523:6:0;;;48517:12;;;;48513:187;;-1:-1:-1;48557:12:0;;48513:187;;;48615:6;;-1:-1:-1;;;;;48615:6:0;;;48607:14;;;;48603:97;;-1:-1:-1;48637:4:0;:11;48603:97;;;-1:-1:-1;48682:16:0;;48603:97;48716:20;48727:4;48733:2;48716:10;:20::i;:::-;48712:142;;;48756:13;;:18;;:42;;;48778:13;;48796:1;48778:20;;48756:42;48752:91;;;48819:8;;;48752:91;48864:17;32093:5;48885:19;48894:10;48885:6;:19;:::i;:::-;:38;;;;:::i;:::-;48951:4;48935:22;;;;:7;:22;;;;;:37;;48864:60;;-1:-1:-1;48864:60:0;;48935:22;;;:37;;48864:60;;48935:37;:::i;:::-;;;;-1:-1:-1;;48988:40:0;;1906:25:1;;;49011:4:0;;-1:-1:-1;;;;;48988:40:0;;;;;1894:2:1;1879:18;48988:40:0;;;;;;;49046:18;49055:9;49046:6;:18;:::i;:::-;49039:25;48383:689;-1:-1:-1;;;;;;48383:689:0:o;222:250:1:-;307:1;317:113;331:6;328:1;325:13;317:113;;;407:11;;;401:18;388:11;;;381:39;353:2;346:10;317:113;;;-1:-1:-1;;464:1:1;446:16;;439:27;222:250::o;477:396::-;626:2;615:9;608:21;589:4;658:6;652:13;701:6;696:2;685:9;681:18;674:34;717:79;789:6;784:2;773:9;769:18;764:2;756:6;752:15;717:79;:::i;:::-;857:2;836:15;-1:-1:-1;;832:29:1;817:45;;;;864:2;813:54;;477:396;-1:-1:-1;;477:396:1:o;1112:131::-;-1:-1:-1;;;;;1187:31:1;;1177:42;;1167:70;;1233:1;1230;1223:12;1167:70;1112:131;:::o;1248:315::-;1316:6;1324;1377:2;1365:9;1356:7;1352:23;1348:32;1345:52;;;1393:1;1390;1383:12;1345:52;1432:9;1419:23;1451:31;1476:5;1451:31;:::i;:::-;1501:5;1553:2;1538:18;;;;1525:32;;-1:-1:-1;;;1248:315:1:o;1942:456::-;2019:6;2027;2035;2088:2;2076:9;2067:7;2063:23;2059:32;2056:52;;;2104:1;2101;2094:12;2056:52;2143:9;2130:23;2162:31;2187:5;2162:31;:::i;:::-;2212:5;-1:-1:-1;2269:2:1;2254:18;;2241:32;2282:33;2241:32;2282:33;:::i;:::-;1942:456;;2334:7;;-1:-1:-1;;;2388:2:1;2373:18;;;;2360:32;;1942:456::o;2403:248::-;2471:6;2479;2532:2;2520:9;2511:7;2507:23;2503:32;2500:52;;;2548:1;2545;2538:12;2500:52;-1:-1:-1;;2571:23:1;;;2641:2;2626:18;;;2613:32;;-1:-1:-1;2403:248:1:o;3169:247::-;3228:6;3281:2;3269:9;3260:7;3256:23;3252:32;3249:52;;;3297:1;3294;3287:12;3249:52;3336:9;3323:23;3355:31;3380:5;3355:31;:::i;3421:160::-;3486:20;;3542:13;;3535:21;3525:32;;3515:60;;3571:1;3568;3561:12;3515:60;3421:160;;;:::o;3586:315::-;3651:6;3659;3712:2;3700:9;3691:7;3687:23;3683:32;3680:52;;;3728:1;3725;3718:12;3680:52;3767:9;3754:23;3786:31;3811:5;3786:31;:::i;:::-;3836:5;-1:-1:-1;3860:35:1;3891:2;3876:18;;3860:35;:::i;:::-;3850:45;;3586:315;;;;;:::o;3906:127::-;3967:10;3962:3;3958:20;3955:1;3948:31;3998:4;3995:1;3988:15;4022:4;4019:1;4012:15;4038:275;4109:2;4103:9;4174:2;4155:13;;-1:-1:-1;;4151:27:1;4139:40;;-1:-1:-1;;;;;4194:34:1;;4230:22;;;4191:62;4188:88;;;4256:18;;:::i;:::-;4292:2;4285:22;4038:275;;-1:-1:-1;4038:275:1:o;4318:183::-;4378:4;-1:-1:-1;;;;;4403:6:1;4400:30;4397:56;;;4433:18;;:::i;:::-;-1:-1:-1;4478:1:1;4474:14;4490:4;4470:25;;4318:183::o;4506:662::-;4560:5;4613:3;4606:4;4598:6;4594:17;4590:27;4580:55;;4631:1;4628;4621:12;4580:55;4667:6;4654:20;4693:4;4717:60;4733:43;4773:2;4733:43;:::i;:::-;4717:60;:::i;:::-;4811:15;;;4897:1;4893:10;;;;4881:23;;4877:32;;;4842:12;;;;4921:15;;;4918:35;;;4949:1;4946;4939:12;4918:35;4985:2;4977:6;4973:15;4997:142;5013:6;5008:3;5005:15;4997:142;;;5079:17;;5067:30;;5117:12;;;;5030;;4997:142;;;-1:-1:-1;5157:5:1;4506:662;-1:-1:-1;;;;;;4506:662:1:o;5173:758::-;5328:6;5336;5344;5397:2;5385:9;5376:7;5372:23;5368:32;5365:52;;;5413:1;5410;5403:12;5365:52;5452:9;5439:23;5471:31;5496:5;5471:31;:::i;:::-;5521:5;-1:-1:-1;5577:2:1;5562:18;;5549:32;-1:-1:-1;;;;;5630:14:1;;;5627:34;;;5657:1;5654;5647:12;5627:34;5680:61;5733:7;5724:6;5713:9;5709:22;5680:61;:::i;:::-;5670:71;;5794:2;5783:9;5779:18;5766:32;5750:48;;5823:2;5813:8;5810:16;5807:36;;;5839:1;5836;5829:12;5807:36;;5862:63;5917:7;5906:8;5895:9;5891:24;5862:63;:::i;:::-;5852:73;;;5173:758;;;;;:::o;5936:435::-;5989:3;6027:5;6021:12;6054:6;6049:3;6042:19;6080:4;6109:2;6104:3;6100:12;6093:19;;6146:2;6139:5;6135:14;6167:1;6177:169;6191:6;6188:1;6185:13;6177:169;;;6252:13;;6240:26;;6286:12;;;;6321:15;;;;6213:1;6206:9;6177:169;;;-1:-1:-1;6362:3:1;;5936:435;-1:-1:-1;;;;;5936:435:1:o;6376:261::-;6555:2;6544:9;6537:21;6518:4;6575:56;6627:2;6616:9;6612:18;6604:6;6575:56;:::i;6642:985::-;6831:6;6839;6847;6855;6908:3;6896:9;6887:7;6883:23;6879:33;6876:53;;;6925:1;6922;6915:12;6876:53;6964:9;6951:23;6983:31;7008:5;6983:31;:::i;:::-;7033:5;-1:-1:-1;7089:2:1;7074:18;;7061:32;-1:-1:-1;;;;;7142:14:1;;;7139:34;;;7169:1;7166;7159:12;7139:34;7192:61;7245:7;7236:6;7225:9;7221:22;7192:61;:::i;:::-;7182:71;;7306:2;7295:9;7291:18;7278:32;7262:48;;7335:2;7325:8;7322:16;7319:36;;;7351:1;7348;7341:12;7319:36;7374:63;7429:7;7418:8;7407:9;7403:24;7374:63;:::i;:::-;7364:73;;7490:2;7479:9;7475:18;7462:32;7446:48;;7519:2;7509:8;7506:16;7503:36;;;7535:1;7532;7525:12;7503:36;;7558:63;7613:7;7602:8;7591:9;7587:24;7558:63;:::i;:::-;7548:73;;;6642:985;;;;;;;:::o;7632:180::-;7691:6;7744:2;7732:9;7723:7;7719:23;7715:32;7712:52;;;7760:1;7757;7750:12;7712:52;-1:-1:-1;7783:23:1;;7632:180;-1:-1:-1;7632:180:1:o;7817:187::-;7866:4;-1:-1:-1;;;;;7891:6:1;7888:30;7885:56;;;7921:18;;:::i;:::-;-1:-1:-1;7987:2:1;7966:15;-1:-1:-1;;7962:29:1;7993:4;7958:40;;7817:187::o;8009:464::-;8052:5;8105:3;8098:4;8090:6;8086:17;8082:27;8072:55;;8123:1;8120;8113:12;8072:55;8159:6;8146:20;8190:49;8206:32;8235:2;8206:32;:::i;8190:49::-;8264:2;8255:7;8248:19;8310:3;8303:4;8298:2;8290:6;8286:15;8282:26;8279:35;8276:55;;;8327:1;8324;8317:12;8276:55;8392:2;8385:4;8377:6;8373:17;8366:4;8357:7;8353:18;8340:55;8440:1;8415:16;;;8433:4;8411:27;8404:38;;;;8419:7;8009:464;-1:-1:-1;;;8009:464:1:o;8478:889::-;8593:6;8601;8609;8617;8625;8678:3;8666:9;8657:7;8653:23;8649:33;8646:53;;;8695:1;8692;8685:12;8646:53;8735:9;8722:23;-1:-1:-1;;;;;8805:2:1;8797:6;8794:14;8791:34;;;8821:1;8818;8811:12;8791:34;8844:50;8886:7;8877:6;8866:9;8862:22;8844:50;:::i;:::-;8834:60;;8947:2;8936:9;8932:18;8919:32;8903:48;;8976:2;8966:8;8963:16;8960:36;;;8992:1;8989;8982:12;8960:36;;9015:52;9059:7;9048:8;9037:9;9033:24;9015:52;:::i;:::-;9005:62;;;9114:2;9103:9;9099:18;9086:32;9076:42;;9168:2;9157:9;9153:18;9140:32;9181:31;9206:5;9181:31;:::i;:::-;9231:5;-1:-1:-1;9288:3:1;9273:19;;9260:33;9302;9260;9302;:::i;:::-;9354:7;9344:17;;;8478:889;;;;;;;;:::o;9625:180::-;9681:6;9734:2;9722:9;9713:7;9709:23;9705:32;9702:52;;;9750:1;9747;9740:12;9702:52;9773:26;9789:9;9773:26;:::i;9810:388::-;9878:6;9886;9939:2;9927:9;9918:7;9914:23;9910:32;9907:52;;;9955:1;9952;9945:12;9907:52;9994:9;9981:23;10013:31;10038:5;10013:31;:::i;:::-;10063:5;-1:-1:-1;10120:2:1;10105:18;;10092:32;10133:33;10092:32;10133:33;:::i;:::-;10185:7;10175:17;;;9810:388;;;;;:::o;10203:316::-;10280:6;10288;10296;10349:2;10337:9;10328:7;10324:23;10320:32;10317:52;;;10365:1;10362;10355:12;10317:52;-1:-1:-1;;10388:23:1;;;10458:2;10443:18;;10430:32;;-1:-1:-1;10509:2:1;10494:18;;;10481:32;;10203:316;-1:-1:-1;10203:316:1:o;10784:385::-;10870:6;10878;10886;10894;10947:3;10935:9;10926:7;10922:23;10918:33;10915:53;;;10964:1;10961;10954:12;10915:53;-1:-1:-1;;10987:23:1;;;11057:2;11042:18;;11029:32;;-1:-1:-1;11108:2:1;11093:18;;11080:32;;11159:2;11144:18;11131:32;;-1:-1:-1;10784:385:1;-1:-1:-1;10784:385:1:o;11174:380::-;11253:1;11249:12;;;;11296;;;11317:61;;11371:4;11363:6;11359:17;11349:27;;11317:61;11424:2;11416:6;11413:14;11393:18;11390:38;11387:161;;11470:10;11465:3;11461:20;11458:1;11451:31;11505:4;11502:1;11495:15;11533:4;11530:1;11523:15;11387:161;;11174:380;;;:::o;11559:127::-;11620:10;11615:3;11611:20;11608:1;11601:31;11651:4;11648:1;11641:15;11675:4;11672:1;11665:15;11691:128;11758:9;;;11779:11;;;11776:37;;;11793:18;;:::i;11824:340::-;12026:2;12008:21;;;12065:2;12045:18;;;12038:30;-1:-1:-1;;;12099:2:1;12084:18;;12077:46;12155:2;12140:18;;11824:340::o;12169:168::-;12242:9;;;12273;;12290:15;;;12284:22;;12270:37;12260:71;;12311:18;;:::i;12342:217::-;12382:1;12408;12398:132;;12452:10;12447:3;12443:20;12440:1;12433:31;12487:4;12484:1;12477:15;12515:4;12512:1;12505:15;12398:132;-1:-1:-1;12544:9:1;;12342:217::o;12564:401::-;12766:2;12748:21;;;12805:2;12785:18;;;12778:30;12844:34;12839:2;12824:18;;12817:62;-1:-1:-1;;;12910:2:1;12895:18;;12888:35;12955:3;12940:19;;12564:401::o;12970:125::-;13035:9;;;13056:10;;;13053:36;;;13069:18;;:::i;13100:425::-;13302:2;13284:21;;;13341:2;13321:18;;;13314:30;13380:34;13375:2;13360:18;;13353:62;13451:31;13446:2;13431:18;;13424:59;13515:3;13500:19;;13100:425::o;13530:1403::-;13594:5;13647:3;13640:4;13632:6;13628:17;13624:27;13614:55;;13665:1;13662;13655:12;13614:55;13694:6;13688:13;13720:4;13744:60;13760:43;13800:2;13760:43;:::i;13744:60::-;13838:15;;;13924:1;13920:10;;;;13908:23;;13904:32;;;13869:12;;;;13948:15;;;13945:35;;;13976:1;13973;13966:12;13945:35;14012:2;14004:6;14000:15;14024:880;14040:6;14035:3;14032:15;14024:880;;;14119:3;14113:10;-1:-1:-1;;;;;14142:11:1;14139:35;14136:125;;;14215:1;14244:2;14240;14233:14;14136:125;14284:24;;14343:2;14335:11;;14331:21;-1:-1:-1;14321:119:1;;14394:1;14423:2;14419;14412:14;14321:119;14477:2;14473;14469:11;14463:18;14504:2;14534:49;14550:32;14579:2;14550:32;:::i;14534:49::-;14612:2;14603:7;14596:19;14656:3;14651:2;14646;14642;14638:11;14634:20;14631:29;14628:119;;;14701:1;14730:2;14726;14719:14;14628:119;14760:69;14826:2;14821;14812:7;14808:16;14803:2;14799;14795:11;14760:69;:::i;:::-;14842:20;;-1:-1:-1;;;14882:12:1;;;;14057;;14024:880;;14938:659;15003:5;15056:3;15049:4;15041:6;15037:17;15033:27;15023:55;;15074:1;15071;15064:12;15023:55;15103:6;15097:13;15129:4;15153:60;15169:43;15209:2;15169:43;:::i;15153:60::-;15247:15;;;15333:1;15329:10;;;;15317:23;;15313:32;;;15278:12;;;;15357:15;;;15354:35;;;15385:1;15382;15375:12;15354:35;15421:2;15413:6;15409:15;15433:135;15449:6;15444:3;15441:15;15433:135;;;15515:10;;15503:23;;15546:12;;;;15466;;15433:135;;15602:1315;15843:6;15851;15859;15867;15875;15928:3;15916:9;15907:7;15903:23;15899:33;15896:53;;;15945:1;15942;15935:12;15896:53;15978:9;15972:16;-1:-1:-1;;;;;16048:2:1;16040:6;16037:14;16034:34;;;16064:1;16061;16054:12;16034:34;16087:71;16150:7;16141:6;16130:9;16126:22;16087:71;:::i;:::-;16077:81;;16204:2;16193:9;16189:18;16183:25;16167:41;;16233:2;16223:8;16220:16;16217:36;;;16249:1;16246;16239:12;16217:36;16272:74;16338:7;16327:8;16316:9;16312:24;16272:74;:::i;:::-;16262:84;;16392:2;16381:9;16377:18;16371:25;16355:41;;16421:2;16411:8;16408:16;16405:36;;;16437:1;16434;16427:12;16405:36;16460:74;16526:7;16515:8;16504:9;16500:24;16460:74;:::i;:::-;16450:84;;16580:2;16569:9;16565:18;16559:25;16543:41;;16609:2;16599:8;16596:16;16593:36;;;16625:1;16622;16615:12;16593:36;16648:74;16714:7;16703:8;16692:9;16688:24;16648:74;:::i;:::-;16638:84;;16768:3;16757:9;16753:19;16747:26;16731:42;;16798:2;16788:8;16785:16;16782:36;;;16814:1;16811;16804:12;16782:36;;16837:74;16903:7;16892:8;16881:9;16877:24;16837:74;:::i;:::-;16827:84;;;15602:1315;;;;;;;;:::o;16922:127::-;16983:10;16978:3;16974:20;16971:1;16964:31;17014:4;17011:1;17004:15;17038:4;17035:1;17028:15;17054:135;17093:3;17114:17;;;17111:43;;17134:18;;:::i;:::-;-1:-1:-1;17181:1:1;17170:13;;17054:135::o;17194:465::-;17451:2;17440:9;17433:21;17414:4;17477:56;17529:2;17518:9;17514:18;17506:6;17477:56;:::i;:::-;17581:9;17573:6;17569:22;17564:2;17553:9;17549:18;17542:50;17609:44;17646:6;17638;17609:44;:::i;17664:363::-;17759:6;17812:2;17800:9;17791:7;17787:23;17783:32;17780:52;;;17828:1;17825;17818:12;17780:52;17861:9;17855:16;-1:-1:-1;;;;;17886:6:1;17883:30;17880:50;;;17926:1;17923;17916:12;17880:50;17949:72;18013:7;18004:6;17993:9;17989:22;17949:72;:::i;18032:306::-;18120:6;18128;18136;18189:2;18177:9;18168:7;18164:23;18160:32;18157:52;;;18205:1;18202;18195:12;18157:52;18234:9;18228:16;18218:26;;18284:2;18273:9;18269:18;18263:25;18253:35;;18328:2;18317:9;18313:18;18307:25;18297:35;;18032:306;;;;;:::o;20060:545::-;20162:2;20157:3;20154:11;20151:448;;;20198:1;20223:5;20219:2;20212:17;20268:4;20264:2;20254:19;20338:2;20326:10;20322:19;20319:1;20315:27;20309:4;20305:38;20374:4;20362:10;20359:20;20356:47;;;-1:-1:-1;20397:4:1;20356:47;20452:2;20447:3;20443:12;20440:1;20436:20;20430:4;20426:31;20416:41;;20507:82;20525:2;20518:5;20515:13;20507:82;;;20570:17;;;20551:1;20540:13;20507:82;;20151:448;20060:545;;;:::o;20781:1352::-;20907:3;20901:10;-1:-1:-1;;;;;20926:6:1;20923:30;20920:56;;;20956:18;;:::i;:::-;20985:97;21075:6;21035:38;21067:4;21061:11;21035:38;:::i;:::-;21029:4;20985:97;:::i;:::-;21137:4;;21201:2;21190:14;;21218:1;21213:663;;;;21920:1;21937:6;21934:89;;;-1:-1:-1;21989:19:1;;;21983:26;21934:89;-1:-1:-1;;20738:1:1;20734:11;;;20730:24;20726:29;20716:40;20762:1;20758:11;;;20713:57;22036:81;;21183:944;;21213:663;20007:1;20000:14;;;20044:4;20031:18;;-1:-1:-1;;21249:20:1;;;21367:236;21381:7;21378:1;21375:14;21367:236;;;21470:19;;;21464:26;21449:42;;21562:27;;;;21530:1;21518:14;;;;21397:19;;21367:236;;;21371:3;21631:6;21622:7;21619:19;21616:201;;;21692:19;;;21686:26;-1:-1:-1;;21775:1:1;21771:14;;;21787:3;21767:24;21763:37;21759:42;21744:58;21729:74;;21616:201;-1:-1:-1;;;;;21863:1:1;21847:14;;;21843:22;21830:36;;-1:-1:-1;20781:1352:1:o;22138:422::-;22227:1;22270:5;22227:1;22284:270;22305:7;22295:8;22292:21;22284:270;;;22364:4;22360:1;22356:6;22352:17;22346:4;22343:27;22340:53;;;22373:18;;:::i;:::-;22423:7;22413:8;22409:22;22406:55;;;22443:16;;;;22406:55;22522:22;;;;22482:15;;;;22284:270;;;22288:3;22138:422;;;;;:::o;22565:806::-;22614:5;22644:8;22634:80;;-1:-1:-1;22685:1:1;22699:5;;22634:80;22733:4;22723:76;;-1:-1:-1;22770:1:1;22784:5;;22723:76;22815:4;22833:1;22828:59;;;;22901:1;22896:130;;;;22808:218;;22828:59;22858:1;22849:10;;22872:5;;;22896:130;22933:3;22923:8;22920:17;22917:43;;;22940:18;;:::i;:::-;-1:-1:-1;;22996:1:1;22982:16;;23011:5;;22808:218;;23110:2;23100:8;23097:16;23091:3;23085:4;23082:13;23078:36;23072:2;23062:8;23059:16;23054:2;23048:4;23045:12;23041:35;23038:77;23035:159;;;-1:-1:-1;23147:19:1;;;23179:5;;23035:159;23226:34;23251:8;23245:4;23226:34;:::i;:::-;23296:6;23292:1;23288:6;23284:19;23275:7;23272:32;23269:58;;;23307:18;;:::i;:::-;23345:20;;22565:806;-1:-1:-1;;;22565:806:1:o;23376:140::-;23434:5;23463:47;23504:4;23494:8;23490:19;23484:4;23463:47;:::i;23521:251::-;23591:6;23644:2;23632:9;23623:7;23619:23;23615:32;23612:52;;;23660:1;23657;23650:12;23612:52;23692:9;23686:16;23711:31;23736:5;23711:31;:::i;24086:607::-;-1:-1:-1;;;;;24445:15:1;;;24427:34;;24492:2;24477:18;;24470:34;;;;24535:2;24520:18;;24513:34;;;;24578:2;24563:18;;24556:34;;;;24627:15;;;24621:3;24606:19;;24599:44;24407:3;24659:19;;24652:35;;;;24376:3;24361:19;;24086:607::o;27972:980::-;28234:4;28282:3;28271:9;28267:19;28313:6;28302:9;28295:25;28339:2;28377:6;28372:2;28361:9;28357:18;28350:34;28420:3;28415:2;28404:9;28400:18;28393:31;28444:6;28479;28473:13;28510:6;28502;28495:22;28548:3;28537:9;28533:19;28526:26;;28587:2;28579:6;28575:15;28561:29;;28608:1;28618:195;28632:6;28629:1;28626:13;28618:195;;;28697:13;;-1:-1:-1;;;;;28693:39:1;28681:52;;28788:15;;;;28753:12;;;;28729:1;28647:9;28618:195;;;-1:-1:-1;;;;;;;28869:32:1;;;;28864:2;28849:18;;28842:60;-1:-1:-1;;;28933:3:1;28918:19;28911:35;28830:3;27972:980;-1:-1:-1;;;27972:980:1:o
Swarm Source
ipfs://e0f2f1ebac23d572f25d1c2b8e022a59345b87d2bafbf147823dd194e8c58755
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.