Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
41,765.63 Usde-WL-March2025-ETH-Main

Holders:
2
Profile Summary
Blockchain:
Ethereum (1)


Decimals:
18
Contract Source Code Verified (Exact Match)
Contract Name:
PendlePowerFarmToken

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 20 runs

Created At:
Thu, 13 Jun 2024 17:36:35 GMT
PendlePowerFarmToken.sol
contracts
PowerFarms
PendlePowerFarmController
PendlePowerFarmToken.sol


Contract ABI
[
  {
    "inputs": [],
    "name": "AllowanceBelowZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AlreadyInitialized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AmountBelowMinDeposit",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ApproveWithZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BurnExceedsBalance",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BurnFromZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FeeTooHigh",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientAllowance",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientShares",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidSharePrice",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidSharePriceGrowth",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MarketExpired",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotController",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotEnoughLpAssetsTransferred",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotEnoughShares",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TooMuchFee",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferAmountExceedsBalance",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroAmount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroFee",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "compoundRoleNotApproved",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": 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": "MAX_CARDINALITY",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PENDLE_CONTROLLER",
    "outputs": [
      {
        "internalType": "contract IPendleController",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PENDLE_MARKET",
    "outputs": [
      {
        "internalType": "contract IPendleMarket",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PENDLE_POWER_FARM_CONTROLLER",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PENDLE_SY",
    "outputs": [
      {
        "internalType": "contract IPendleSy",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNDERLYING_PENDLE_MARKET",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "addCompoundRewards",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_compoundRole",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "_state",
        "type": "bool"
      }
    ],
    "name": "changeCompoundRoleState",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_state",
        "type": "bool"
      }
    ],
    "name": "changeGrowthCheckState",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newMinDepositAmount",
        "type": "uint256"
      }
    ],
    "name": "changeMinDepositAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newFee",
        "type": "uint256"
      }
    ],
    "name": "changeMintFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "compoundRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_subtractedValue",
        "type": "uint256"
      }
    ],
    "name": "decreaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_underlyingLpAssetAmount",
        "type": "uint256"
      }
    ],
    "name": "depositExactAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "growthCheckNecessary",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "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": "address",
        "name": "_underlyingPendleMarket",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_pendleController",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "_tokenName",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_symbolName",
        "type": "string"
      },
      {
        "internalType": "uint16",
        "name": "_maxCardinality",
        "type": "uint16"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lastInteraction",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "manualSync",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_underlyingLpAssetsCurrent",
        "type": "uint256"
      }
    ],
    "name": "previewAmountWithdrawShares",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_underlyingAssetAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_underlyingLpAssetsCurrent",
        "type": "uint256"
      }
    ],
    "name": "previewBurnShares",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "previewDistribution",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_underlyingAssetAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_underlyingLpAssetsCurrent",
        "type": "uint256"
      }
    ],
    "name": "previewMintShares",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "previewUnderlyingLpAssets",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalLpAssets",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalLpAssetsToDistribute",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "underlyingLpAssetsCurrent",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_underlyingLpAssetAmount",
        "type": "uint256"
      }
    ],
    "name": "withdrawExactAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      }
    ],
    "name": "withdrawExactShares",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
6080604052620f4240600f553480156015575f80fd5b506126ad806100235f395ff3fe608060405234801561000f575f80fd5b50600436106101da575f3560e01c80638caad7b5116101085780638caad7b5146103755780638f71a2651461038857806395d89b411461039157806396a3b69a14610399578063a0f4e158146103a2578063a3440430146103b5578063a457c2d7146103c8578063a868fb07146103db578063a9059cbb146103ee578063bb62efbc14610401578063bbe3a25714610414578063c239a86b14610427578063d51fb9ad1461043a578063d938d0d214610443578063dd62ed3e14610457578063e929d6691461046a578063efae389f1461047d578063f141e1eb1461049f578063fdbea8d4146104a7578063fe88136e146104ba575f80fd5b806306fdde03146101de578063095ea7b3146101fc5780630cd107da1461021f5780630f61ac821461023557806313966db51461025557806318160ddd1461025e578063225a32ea1461026657806323b872dd1461027b5780632863069a1461028e578063313ce567146102a157806339509351146102b657806339517077146102c957806345bfabf6146102dc5780634b940e0a146102e45780636ae55c3f1461030c57806370a082311461031f578063753d02a1146103325780637d0fedaa1461033a5780638200d8731461034d575b5f80fd5b6101e66104cd565b6040516101f39190611d23565b60405180910390f35b61020f61020a366004611d69565b61055c565b60405190151581526020016101f3565b610227610572565b6040519081526020016101f3565b600a54610248906001600160a01b031681565b6040516101f39190611d93565b610227600d5481565b600354610227565b610279610274366004611db4565b610588565b005b61020f610289366004611deb565b6105ba565b61022761029c366004611e29565b6105db565b60025460405160ff90911681526020016101f3565b61020f6102c4366004611d69565b6106b5565b6102796102d7366004611e40565b6106d6565b6102276106fc565b6102f76102f2366004611e29565b61077c565b604080519283526020830191909152016101f3565b61027961031a366004611e29565b6108d2565b61022761032d366004611e5b565b61098d565b61020f6109a7565b610227610348366004611e29565b6109f8565b600c5461036290600160a81b900461ffff1681565b60405161ffff90911681526020016101f3565b610279610383366004611e29565b610ad1565b610227600e5481565b6101e6610ade565b61022760085481565b6102276103b0366004611e76565b610aed565b6102276103c3366004611e76565b610b3f565b61020f6103d6366004611d69565b610b5e565b600654610248906001600160a01b031681565b61020f6103fc366004611d69565b610ba6565b600b54610248906001600160a01b031681565b600754610248906001600160a01b031681565b600c54610248906001600160a01b031681565b61022760095481565b600c5461020f90600160a01b900460ff1681565b610227610465366004611e96565b610bb2565b610279610478366004611e29565b610bdc565b61020f61048b366004611e5b565b60116020525f908152604090205460ff1681565b610227610c0c565b6102796104b5366004611f80565b610c22565b6102276104c8366004611e76565b610e8c565b60605f80546104db90612017565b80601f016020809104026020016040519081016040528092919081815260200182805461050790612017565b80156105525780601f1061052957610100808354040283529160200191610552565b820191905f5260205f20905b81548152906001019060200180831161053557829003601f168201915b5050505050905090565b5f610568338484610ea0565b5060015b92915050565b5f600954600854610583919061205d565b905090565b610590610f3c565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b5f6105c6843384610f69565b6105d1848484610fb2565b5060019392505050565b5f6105e4611080565b6105ec611096565b6105f46110a6565b6105fc6110ec565b61060542600e55565b61060d61119e565b5f6106166112a2565b9050825f0361063857604051631f2a200560e01b815260040160405180910390fd5b5f61064584600854610aed565b90506106503361098d565b81111561067057604051633c57b48560e21b815260040160405180910390fd5b61067a33826112d1565b8360085f82825461068b9190612070565b9091555061069b90503385611375565b91505b6106af6106aa826113de565b61140b565b50919050565b5f336105d18185856106c78383610bb2565b6106d1919061205d565b610ea0565b6106de610f3c565b600c8054911515600160a01b0260ff60a01b19909216919091179055565b600e546009545f91908203610712575f91505090565b804203610720575f91505090565b62093a80600954101561073557505060095490565b5f62093a806009546107479190612097565b90505f6107548342612070565b61075e90836120aa565b905060095481111561077557600954935050505090565b9392505050565b5f80610786611080565b61078e611096565b6107966110a6565b61079e6110ec565b6107a742600e55565b6107af61119e565b5f6107b86112a2565b9050600f548410156107dd57604051630bdb431360e41b815260040160405180910390fd5b5f6107ea85600854610b3f565b9050805f0361080c5760405163f5762be360e01b815260040160405180910390fd5b5f610816826114aa565b90505f6108238284612070565b9050805f036108455760405163af13986d60e01b815260040160405180910390fd5b80820361086557604051639a33400560e01b815260040160405180910390fd5b61086f33836114d4565b600754610885906001600160a01b0316826114d4565b8660085f828254610896919061205d565b90915550506006546007546108ba916001600160a01b03908116913391168a611550565b9094509250506108cc6106aa826113de565b50915091565b6108da611080565b6108e2611096565b6108ea6110a6565b6108f26110ec565b6108fb42600e55565b61090361119e565b5f61090c6112a2565b90506109166115a8565b815f0361093657604051631f2a200560e01b815260040160405180910390fd5b8160095f828254610947919061205d565b90915550506007546001600160a01b0316331461097d5760065460075461097d916001600160a01b039081169133911685611550565b6109896106aa826113de565b5050565b6001600160a01b03165f9081526004602052604090205490565b5f6109b0611080565b6109b8611096565b6109c06110a6565b6109c86110ec565b6109d142600e55565b6109d961119e565b5f6109e26112a2565b9050600191506109f46106aa826113de565b5090565b5f610a01611080565b610a09611096565b610a116110a6565b610a196110ec565b610a2242600e55565b610a2a61119e565b5f610a336112a2565b9050825f03610a5557604051631f2a200560e01b815260040160405180910390fd5b610a5e3361098d565b831115610a7e57604051633999656760e01b815260040160405180910390fd5b5f610a8b84600854610e8c565b90508060085f828254610a9e9190612070565b90915550610aae905033856112d1565b6007546001600160a01b03163303610ac757915061069e565b61069b3382611375565b610ad9610f3c565b600f55565b6060600180546104db90612017565b5f80610af860035490565b610b0290856120aa565b9050610b0e83826120c1565b15610b2d57610b1d8382612097565b610b2890600161205d565b610b37565b610b378382612097565b949350505050565b5f81610b4a60035490565b610b5490856120aa565b6107759190612097565b5f3381610b6b8286610bb2565b905083811015610b8e57604051637b1507b360e11b815260040160405180910390fd5b610b9b8286868403610ea0565b506001949350505050565b5f610568338484610fb2565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b610be4610f3c565b612710811115610c075760405163cd4e616760e01b815260040160405180910390fd5b600d55565b5f600854610c186106fc565b610583919061205d565b600a546001600160a01b031615610c4b5760405162dc149f60e41b815260040160405180910390fd5b600c805460ff60a01b1916600160a01b179055600a80546001600160a01b0387166001600160a01b0319909116811790915560408051630bc4ed8360e21b81529051632f13b60c916004808201926020929091908290030181865afa158015610cb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cda91906120d4565b1515600103610cfc5760405163b2094b5960e01b815260040160405180910390fd5b600c805461ffff8316600160a81b02600162ffff0160a01b03199091166001600160a01b038716171790555f610d328482612133565b506001610d3f8382612133565b50600780546001600160a01b038087166001600160a01b031992831617909255600680548884169216919091179055600a5460408051630b2339af60e21b815290515f939290921691632c8ce6bc916004808201926060929091908290030181865afa158015610db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd591906121ee565b5050600b80546001600160a01b0319166001600160a01b0383169081179091556040805163313ce56760e01b81529051929350909163313ce567916004808201926020929091908290030181865afa158015610e33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e579190612238565b6002805460ff191660ff92909216919091179055505042600e81905560016003819055600855610bb8600d5560105550505050565b5f610e9660035490565b610b5483856120aa565b6001600160a01b0383161580610ebd57506001600160a01b038216155b15610edb57604051637f73f35f60e11b815260040160405180910390fd5b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6007546001600160a01b03163314610f67576040516323019e6760e01b815260040160405180910390fd5b565b5f610f748484610bb2565b90505f198114610fac5781811015610f9f576040516313be252b60e01b815260040160405180910390fd5b610fac8484848403610ea0565b50505050565b6001600160a01b0383161580610fcf57506001600160a01b038216155b15610fed576040516390171a1560e01b815260040160405180910390fd5b6001600160a01b0383165f908152600460205260409020548181101561102657604051635dd58b8b60e01b815260040160405180910390fd5b6001600160a01b038085165f8181526004602052604080822086860390559286168082529083902080548601905591515f80516020612658833981519152906110729086815260200190565b60405180910390a350505050565b600654610f67906001600160a01b03165f611375565b610f676110a16115db565b611652565b5f6110af6106fc565b9050805f036110bb5750565b8060085f8282546110cc919061205d565b925050819055508060095f8282546110e49190612070565b909155505050565b5f6110f561166c565b80519091505f905b80821015611199575f83838151811061111857611118612258565b6020026020010151111561118e57600c54600654604051637aeaa75d60e01b81526001600160a01b0392831692637aeaa75d9261115c92911690879060040161226c565b5f604051808303815f87803b158015611173575f80fd5b505af1158015611185573d5f803e3d5ffd5b50505050505050565b8160010191506110fd565b505050565b600a54604080516361fdc86b60e11b815290515f926001600160a01b03169163c3fb90d69160048083019260c09291908290030181865afa1580156111e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120991906122e2565b600c5460a082015191925061ffff600160a81b90910481169116101561129f57600a5460a08201516001600160a01b03909116906337d45e3a9061124e90600161238f565b6040516001600160e01b031960e084901b16815261ffff90911660048201526024015b5f604051808303815f87803b158015611288575f80fd5b505af115801561129a573d5f803e3d5ffd5b505050505b50565b5f6112ac60035490565b670de0b6b3a76400006112bd610c0c565b6112c791906120aa565b6105839190612097565b6001600160a01b0382166112f85760405163b817eee760e01b815260040160405180910390fd5b6001600160a01b0382165f90815260046020526040902054818110156113315760405163588569f760e01b815260040160405180910390fd5b6001600160a01b0383165f8181526004602090815260408083208686039055600380548790039055518581529192915f805160206126588339815191529101610f2f565b600c5460065460405163a6c3ef8b60e01b81526001600160a01b039283169263a6c3ef8b926113ad92911690869086906004016123b1565b5f604051808303815f87803b1580156113c4575f80fd5b505af11580156113d6573d5f803e3d5ffd5b505050505050565b5f806113e86112a2565b90508281101561056c5760405163e5dd50c360e01b815260040160405180910390fd5b600c54600160a01b900460ff1615155f036114235750565b5f601054426114329190612070565b90505f670de0b6b3a764000061144c6301e13380826120aa565b61145e670de0b6b3a7640000806120aa565b61146990600a6120aa565b6114739190612097565b61147d90846120aa565b611487919061205d565b905080831115611199576040516325a691bd60e11b815260040160405180910390fd5b5f620f4240600d54620f42406114c09190612070565b6114ca90846120aa565b61056c9190612097565b6001600160a01b0382166114fa57604051622e076360e81b815260040160405180910390fd5b8060035f82825461150b919061205d565b90915550506001600160a01b0382165f818152600460209081526040808320805486019055518481525f80516020612658833981519152910160405180910390a35050565b61129a846323b872dd60e01b858585604051602401611571939291906123b1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a4e565b335f9081526011602052604081205460ff1615159003610f6757604051634d5898b760e11b815260040160405180910390fd5b600c54600654604051639f08e49760e01b81525f926001600160a01b0390811692639f08e497926116129290911690600401611d93565b6020604051808303815f875af115801561162e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058391906120d4565b80151560010361129f57611664611b03565b61129f611b5f565b600c546006546040516308695a4960e11b81526060926001600160a01b039081169216905f9083906310d2b492906116a8908590600401611d93565b5f60405180830381865afa1580156116c2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116e991908101906123f7565b90505f836001600160a01b03166366b2d8f9846040518263ffffffff1660e01b81526004016117189190611d93565b5f60405180830381865afa158015611732573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261175991908101906124a6565b82519091505f816001600160401b0381111561177757611777611ec2565b6040519080825280602002602001820160405280156117a0578160200160208202803683370190505b5090505f805f6117ae611b93565b90505f6117b9610572565b90505f6117c4611c09565b600754600a549192506001600160a01b0390811691165b88871015611a3c575f6118078c89815181106117f9576117f9612258565b602002602001015184611c40565b60208101519091506001600160801b0316156118a457604051639262187b60e01b81526001600160a01b03831690639262187b90611849908690600401611d93565b5f604051808303815f875af1158015611864573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261188b919081019061252d565b506118a18c89815181106117f9576117f9612258565b90505b805f015196508a88815181106118bc576118bc612258565b60200260200101516001600160801b03165f1480156118e357505f876001600160801b0316115b1561191c575f8989815181106118fb576118fb612258565b60200260200101818152505061191088611cc6565b876001019750506117db565b8a888151811061192e5761192e612258565b60200260200101516001600160801b0316876001600160801b031603611979575f89898151811061196157611961612258565b602002602001018181525050876001019750506117db565b5f8b898151811061198c5761198c612258565b60200260200101518861199f91906125ad565b6001600160801b03169050848610806119d457670de0b6b3a76400006119c589846120aa565b6119cf9190612097565b611a07565b670de0b6b3a764000086886119e98b866120aa565b6119f391906120aa565b6119fd9190612097565b611a079190612097565b8b8b81518110611a1957611a19612258565b602002602001018181525050611a2e8a611cc6565b8960010199505050506117db565b50959c9b505050505050505050505050565b5f805f846001600160a01b031684604051611a6991906125cd565b5f604051808303815f865af19150503d805f8114611aa2576040519150601f19603f3d011682016040523d82523d5f602084013e611aa7565b606091505b50915091505f81515f1480611acb575081806020019051810190611acb91906120d4565b90508215155f03611ada575f80fd5b828015611ae45750805b8015611af957505f866001600160a01b03163b115b9695505050505050565b600c54600654604051621fc14360e91b81526001600160a01b0392831692633f82860092611b3692911690600401611d93565b5f604051808303815f87803b158015611b4d575f80fd5b505af1158015610fac573d5f803e3d5ffd5b600c54600654604051635d99ba8360e01b81526001600160a01b0392831692635d99ba8392611b3692911690600401611d93565b600a54600754604051630892cd8b60e01b81525f926001600160a01b0390811692630892cd8b92611bca9290911690600401611d93565b602060405180830381865afa158015611be5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058391906125e8565b600a546007546040516370a0823160e01b81525f926001600160a01b03908116926370a0823192611bca9290911690600401611d93565b604080518082019091525f8082526020820152600a5460405163172eb6f960e21b81526001600160a01b038581166004830152848116602483015290911690635cbadbe4906044016040805180830381865afa158015611ca2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077591906125ff565b600c546006546040516304b473bd60e01b81526001600160a01b039182166004820152602481018490529116906304b473bd90604401611271565b5f5b83811015611d1b578181015183820152602001611d03565b50505f910152565b602081525f8251806020840152611d41816040850160208701611d01565b601f01601f19169190910160400192915050565b6001600160a01b038116811461129f575f80fd5b5f8060408385031215611d7a575f80fd5b8235611d8581611d55565b946020939093013593505050565b6001600160a01b0391909116815260200190565b801515811461129f575f80fd5b5f8060408385031215611dc5575f80fd5b8235611dd081611d55565b91506020830135611de081611da7565b809150509250929050565b5f805f60608486031215611dfd575f80fd5b8335611e0881611d55565b92506020840135611e1881611d55565b929592945050506040919091013590565b5f60208284031215611e39575f80fd5b5035919050565b5f60208284031215611e50575f80fd5b813561077581611da7565b5f60208284031215611e6b575f80fd5b813561077581611d55565b5f8060408385031215611e87575f80fd5b50508035926020909101359150565b5f8060408385031215611ea7575f80fd5b8235611eb281611d55565b91506020830135611de081611d55565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715611efe57611efe611ec2565b604052919050565b5f82601f830112611f15575f80fd5b81356001600160401b03811115611f2e57611f2e611ec2565b611f41601f8201601f1916602001611ed6565b818152846020838601011115611f55575f80fd5b816020850160208301375f918101602001919091529392505050565b61ffff8116811461129f575f80fd5b5f805f805f60a08688031215611f94575f80fd5b8535611f9f81611d55565b94506020860135611faf81611d55565b935060408601356001600160401b0380821115611fca575f80fd5b611fd689838a01611f06565b94506060880135915080821115611feb575f80fd5b50611ff888828901611f06565b925050608086013561200981611f71565b809150509295509295909350565b600181811c9082168061202b57607f821691505b6020821081036106af57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561056c5761056c612049565b8181038181111561056c5761056c612049565b634e487b7160e01b5f52601260045260245ffd5b5f826120a5576120a5612083565b500490565b808202811582820484141761056c5761056c612049565b5f826120cf576120cf612083565b500690565b5f602082840312156120e4575f80fd5b815161077581611da7565b601f82111561119957805f5260205f20601f840160051c810160208510156121145750805b601f840160051c820191505b8181101561129a575f8155600101612120565b81516001600160401b0381111561214c5761214c611ec2565b6121608161215a8454612017565b846120ef565b602080601f831160018114612193575f841561217c5750858301515b5f19600386901b1c1916600185901b1785556113d6565b5f85815260208120601f198616915b828110156121c1578886015182559484019460019091019084016121a2565b50858210156121de57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f805f60608486031215612200575f80fd5b835161220b81611d55565b602085015190935061221c81611d55565b604085015190925061222d81611d55565b809150509250925092565b5f60208284031215612248575f80fd5b815160ff81168114610775575f80fd5b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03831681526040602080830182905283519183018290525f9184820191906060850190845b818110156122b457845183529383019391830191600101612298565b5090979650505050505050565b8051600f81900b81146122d2575f80fd5b919050565b80516122d281611f71565b5f60c082840312156122f2575f80fd5b60405160c081018181106001600160401b038211171561231457612314611ec2565b604052612320836122c1565b815261232e602084016122c1565b602082015260408301516001600160601b038116811461234c575f80fd5b6040820152606083015161235f81611f71565b6060820152608083015161237281611f71565b608082015261238360a084016122d7565b60a08201529392505050565b61ffff8181168382160190808211156123aa576123aa612049565b5092915050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f6001600160401b038211156123ed576123ed611ec2565b5060051b60200190565b5f6020808385031215612408575f80fd5b82516001600160401b0381111561241d575f80fd5b8301601f8101851361242d575f80fd5b805161244061243b826123d5565b611ed6565b81815260059190911b8201830190838101908783111561245e575f80fd5b928401925b8284101561248557835161247681611d55565b82529284019290840190612463565b979650505050505050565b80516001600160801b03811681146122d2575f80fd5b5f60208083850312156124b7575f80fd5b82516001600160401b038111156124cc575f80fd5b8301601f810185136124dc575f80fd5b80516124ea61243b826123d5565b81815260059190911b82018301908381019087831115612508575f80fd5b928401925b828410156124855761251e84612490565b8252928401929084019061250d565b5f602080838503121561253e575f80fd5b82516001600160401b03811115612553575f80fd5b8301601f81018513612563575f80fd5b805161257161243b826123d5565b81815260059190911b8201830190838101908783111561258f575f80fd5b928401925b8284101561248557835182529284019290840190612594565b6001600160801b038281168282160390808211156123aa576123aa612049565b5f82516125de818460208701611d01565b9190910192915050565b5f602082840312156125f8575f80fd5b5051919050565b5f6040828403121561260f575f80fd5b604051604081018181106001600160401b038211171561263157612631611ec2565b60405261263d83612490565b815261264b60208401612490565b6020820152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ae4efa1f0851ed52cf8c02079ec338d915669f6dfdf6284c70761e9319fad26864736f6c63430008190033