Loading
[ { "inputs": [ { "internalType": "address", "name": "_protocolFeeRecipient", "type": "address" }, { "internalType": "address", "name": "_protocolRewards", "type": "address" }, { "internalType": "address", "name": "_weth", "type": "address" }, { "internalType": "address", "name": "_nonfungiblePositionManager", "type": "address" }, { "internalType": "address", "name": "_swapRouter", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AddressZero", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "EthAmountTooSmall", "type": "error" }, { "inputs": [], "name": "EthTransferFailed", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "InitialOrderSizeTooLarge", "type": "error" }, { "inputs": [], "name": "InsufficientFunds", "type": "error" }, { "inputs": [], "name": "InsufficientLiquidity", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidAllocatedSupply", "type": "error" }, { "inputs": [], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidMarketType", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "InvalidTokenCreator", "type": "error" }, { "inputs": [], "name": "MarketAlreadyGraduated", "type": "error" }, { "inputs": [], "name": "MarketNotGraduated", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "OnlyPool", "type": "error" }, { "inputs": [], "name": "OnlyWeth", "type": "error" }, { "inputs": [], "name": "OrderReferrerFeeTooHigh", "type": "error" }, { "inputs": [], "name": "PlatformReferrerFeeTooHigh", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "SignatureExpired", "type": "error" }, { "inputs": [], "name": "SlippageBoundsExceeded", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FarTokenAddToReserve", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "address", "name": "orderReferrer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalEth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethSold", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensBought", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyerTokenBalance", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "comment", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "indexed": false, "internalType": "enum IFarTokenV2.MarketType", "name": "marketType", "type": "uint8" } ], "name": "FarTokenBuy", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "tokenCreator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "platformReferrer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "orderReferrer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "protocolFeeRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenCreatorFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "platformReferrerFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "orderReferrerFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "protocolFee", "type": "uint256" } ], "name": "FarTokenFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "poolAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalEthLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalTokenLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lpPositionId", "type": "uint256" }, { "indexed": false, "internalType": "enum IFarTokenV2.MarketType", "name": "marketType", "type": "uint8" } ], "name": "FarTokenMarketGraduated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "address", "name": "orderReferrer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalEth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethBought", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensSold", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellerTokenBalance", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "comment", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "indexed": false, "internalType": "enum IFarTokenV2.MarketType", "name": "marketType", "type": "uint8" } ], "name": "FarTokenSell", "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": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fromTokenBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "name": "FarTokenTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FarTokenWithdrawFromReserve", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "ADD_TO_RESERVE_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_ORDER_REFERRER_FEE_BPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_PLATFORM_REFERRER_FEE_BPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOTAL_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_ORDER_SIZE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PROTOCOL_FEE_BPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKEN_CREATOR_FEE_BPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOTAL_FEE_BPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WITHDRAW_FROM_RESERVE_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "addToReserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "addToReserveWithSig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allocatedSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bondingCurve", "outputs": [ { "internalType": "contract BondingCurveV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokensToBurn", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "address", "name": "refundRecipient", "type": "address" }, { "internalType": "address", "name": "orderReferrer", "type": "address" }, { "internalType": "string", "name": "comment", "type": "string" }, { "internalType": "enum IFarTokenV2.MarketType", "name": "expectedMarketType", "type": "uint8" }, { "internalType": "uint256", "name": "minOrderSize", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "name": "buy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "collectFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentExchangeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "desiredRaise", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "domainSeparatorV4", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethOrderSize", "type": "uint256" } ], "name": "getEthBuyQuote", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethOrderSize", "type": "uint256" } ], "name": "getEthSellQuote", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenOrderSize", "type": "uint256" } ], "name": "getTokenBuyQuote", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenOrderSize", "type": "uint256" } ], "name": "getTokenSellQuote", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "structHash", "type": "bytes32" } ], "name": "hashTypedDataV4", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenCreator", "type": "address" }, { "internalType": "address", "name": "_operator", "type": "address" }, { "internalType": "address", "name": "_platformReferrer", "type": "address" }, { "internalType": "address", "name": "_bondingCurve", "type": "address" }, { "internalType": "string", "name": "_tokenURI", "type": "string" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_platformReferrerFeeBps", "type": "uint256" }, { "internalType": "uint256", "name": "_orderReferrerFeeBps", "type": "uint256" }, { "internalType": "uint256", "name": "_allocatedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_desiredRaise", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "marketType", "outputs": [ { "internalType": "enum IFarTokenV2.MarketType", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nonfungiblePositionManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "orderReferrerFeeBps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformReferrer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformReferrerFeeBps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "poolAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "protocolFeeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "protocolRewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reservedSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokensToSell", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "address", "name": "orderReferrer", "type": "address" }, { "internalType": "string", "name": "comment", "type": "string" }, { "internalType": "enum IFarTokenV2.MarketType", "name": "expectedMarketType", "type": "uint8" }, { "internalType": "uint256", "name": "minPayoutSize", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "name": "sell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operator", "type": "address" } ], "name": "setOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "state", "outputs": [ { "components": [ { "internalType": "enum IFarTokenV2.MarketType", "name": "marketType", "type": "uint8" }, { "internalType": "address", "name": "marketAddress", "type": "address" } ], "internalType": "struct IFarTokenV2.MarketState", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapRouter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenCreator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uniswapV3PositionId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "amount0Delta", "type": "int256" }, { "internalType": "int256", "name": "amount1Delta", "type": "int256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "uniswapV3SwapCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "withdrawFromReserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "withdrawFromReserveWithSig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
610200806040523461040f5760a08161649280380380916100208285610414565b83398101031261040f576100338161044d565b906100406020820161044d565b9061004d6040820161044d565b610065608061005e6060850161044d565b930161044d565b92604051610074604082610414565b600881526020810190672330b92a37b5b2b760c11b82526040519161009a604084610414565b600183526020830191603160f81b83526100b381610461565b610120526100c084610623565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261012960c082610414565b5190206080523060c0526003805460ff1916905560008051602061647283398151915254604081901c60ff161595906001600160401b03811680159081610407575b60011490816103fd575b1590816103f4575b506103e3576001600160401b0319811660011760008051602061647283398151915255866103b8575b506001600160a01b038116156103a7576001600160a01b038216156103a7576001600160a01b038316156103a7576001600160a01b038416156103a7576001600160a01b038516156103a7576101c0526101e05261016052610180526101a05261034b575b604051615cb090816107c282396080518161545a015260a05181615517015260c05181615424015260e051816154a9015261010051816154cf01526101205181611293015261014051816112bd015261016051818181610b65015281816110cc015281816117e501528181611f15015281816127930152818161369001528181613e2a01528181614105015281816148540152614ba7015261018051818181610660015281816109e50152818161184701528181612837015281816136f801528181613722015281816138e9015261416501526101a0518181816107f90152818161105d01528181611f7501528181613e8a01526148b601526101c0518181816105ec015281816115c501528181612cef01528181615162015281816152d901526153af01526101e051818181612da4015281816151af01526152700152f35b68ff0000000000000000196000805160206164728339815191525416600080516020616472833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a161020b565b639fabe1c160e01b60005260046000fd5b6001600160481b031916680100000000000000011760008051602061647283398151915255386101a6565b63f92ee8a960e01b60005260046000fd5b9050153861017d565b303b159150610175565b88915061016b565b600080fd5b601f909101601f19168101906001600160401b0382119082101761043757604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361040f57565b908151602081106000146104f9575090601f81511161049d57602081519101516020821061048d571790565b6000198260200360031b1b161790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106104e15750508160006044809484010152601f80199101168101030190fd5b602082820181015160448784010152859350016104bf565b6001600160401b03811161043757600054600181811c91168015610619575b602082101461060357601f81116105ce575b50602092601f821160011461056a579281929360009261055f575b50508160011b916000199060031b1c19161760005560ff90565b015190503880610545565b601f1982169360008052806000209160005b8681106105b6575083600195961061059d575b505050811b0160005560ff90565b015160001960f88460031b161c1916905538808061058f565b9192602060018192868501518155019401920161057c565b60008052601f6020600020910160051c810190601f830160051c015b8181106105f7575061052a565b600081556001016105ea565b634e487b7160e01b600052602260045260246000fd5b90607f1690610518565b908151602081106000146106ab575090601f81511161064f57602081519101516020821061048d571790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106106935750508160006044809484010152601f80199101168101030190fd5b60208282018101516044878401015285935001610671565b6001600160401b03811161043757600154600181811c911680156107b7575b602082101461060357601f8111610781575b50602092601f821160011461071c5792819293600092610711575b50508160011b916000199060031b1c19161760015560ff90565b0151905038806106f7565b601f198216936001600052806000209160005b8681106107695750836001959610610750575b505050811b0160015560ff90565b015160001960f88460031b161c19169055388080610742565b9192602060018192868501518155019401920161072f565b6001600052601f6020600020910160051c810190601f830160051c015b8181106107ab57506106dc565b6000815560010161079e565b90607f16906106ca56fe60c06040526004361015610023575b361561001957600080fd5b610021614ba4565b005b6000803560e01c80630433a2ac1461312f57806306fdde031461306e578063095ea7b314612fc65780630cab116114612fa8578063150b7a0214612f3057806315f94efb14612ef55780631755ff2114612ecc57806318160ddd14612ea157806323b872dd14612dd357806329df647914612d8e5780632d7482e7146124145780632dd48909146123e9578063313ce567146123cd57806333039d3d146123a657806336480dd5146122bd5780633a70a5ca1461229f5780633a85165a146122815780633c130d90146121ec5780633f4ba83a1461218057806342966c681461214857806344d19d2b1461212a578063472e6490146116a95780634980f2881461168757806351845bf61461165e578063570ca735146116355780635c975abb14611612578063601c8b21146115f457806364df049e146115af5780636c1f20d11461152e5780636f28507c1461151257806370a08231146114cc578063720ea240146114ae57806378e890ba1461148b5780637ecebe0014611452578063810a94d7146113d1578063813661bb146113b45780638456cb591461134657806384b0196e146112765780639352c82514610d8757806395d89b4114610c86578063a368497714610bc6578063a9059cbb14610b94578063ad5c464814610b4f578063b0604fcb14610b33578063b1107d6514610a6d578063b3ab15fb14610a14578063b44a2722146109cf578063b69f9d56146108d7578063be378228146108ba578063c19d93fb14610828578063c31c9c07146107e3578063c415565f146106fa578063c879657214610595578063ce2a0ece14610420578063d3f82d8e14610400578063d82aa647146103e3578063db84252c146103ba578063dd62ed3e14610370578063eed128b014610335578063eff1d50e146103085763fa461e33146102ce575061000e565b34610305576060366003190112610305576044356001600160401b038111610303576102fe9036906004016133f8565b505080f35b505b80fd5b503461030557806003193601126103055760035460405160089190911c6001600160a01b03168152602090f35b503461030557806003193601126103055760206040517f2de4041c680efc6bdc6b1511fa541c1f5ccd579e55620d3376cdf88f0111741a8152f35b50346103055760403660031901126103055761038a61323f565b61039b610395613255565b91614b55565b9060018060a01b03166000526020526020604060002054604051908152f35b50346103055780600319360112610305576006546040516001600160a01b039091168152602090f35b503461030557806003193601126103055760206040516105dc8152f35b5034610305578060031936011261030557602060405164174876e8008152f35b50346103055761042f3661335c565b61043b9392919361553d565b60ff60035460a81c166002811015610581571561057257600c548311610563579161054a81836105457faff8eb44b3922c04b2da700417711b0eb5ee7898b664397b5939ceed725f8f2a966104ad60209760018060a01b03166000526002602052604060002080549060018201905590565b98610533604051898101907f2de4041c680efc6bdc6b1511fa541c1f5ccd579e55620d3376cdf88f0111741a825260018060a01b0387169c8d604083015288606083015260808201528360a082015260a0815261050b60c0826132e9565b519020610516615421565b6042916040519161190160f01b8352600283015260228201522090565b6007546001600160a01b031690614bfc565b6153f9565b61055681600c5461358d565b600c55604051908152a280f35b63162908e360e11b8552600485fd5b630522bdf560e31b8552600485fd5b634e487b7160e01b86526021600452602486fd5b503461030557806003193601126103055760ff60035460a81c1660028110156106e657156106d757600e5460405190608082018281106001600160401b038211176106c35760409081529082526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602084019081526001600160801b0384840181815260608601828152855163fc6f786560e01b815296516004880152925184166024870152518116604486015290511660648401528290608490829086907f0000000000000000000000000000000000000000000000000000000000000000165af180156106b857610690575080f35b604090813d83116106b1575b6106a681836132e9565b810103126103055780f35b503d61069c565b6040513d84823e3d90fd5b634e487b7160e01b84526041600452602484fd5b630522bdf560e31b8152600490fd5b634e487b7160e01b82526021600452602482fd5b503461030557604036600319011261030557600435610717613255565b61071f61553d565b60ff60035460a81c1660028110156107cf57156107c057600c5482116107b1576006546001600160a01b031633036107a25760208161077f847faff8eb44b3922c04b2da700417711b0eb5ee7898b664397b5939ceed725f8f2a946153f9565b61078b84600c5461358d565b600c556040519384526001600160a01b031692a280f35b6369c5977760e11b8352600483fd5b63162908e360e11b8352600483fd5b630522bdf560e31b8352600483fd5b634e487b7160e01b84526021600452602484fd5b50346103055780600319360112610305576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610305578060031936011261030557806020604051610848816132b2565b828152015260ff60035460a81c1660028110156106e657604091816108a557602030915b845190610878826132b2565b50838152019060018060a01b0316815261089483518093613440565b516001600160a01b03166020820152f35b6005546001600160a01b03169060209061086c565b50346103055780600319360112610305576020604051611d4c8152f35b5034610305576020366003190112610305576003549060ff8260a81c1660028110156106e6576001146109c057600080516020615bfb83398151915254600b54600d5460405163a1f4be5160e01b815260048082019490945260248101929092529135604482015260648101919091529160209083908180608481015b039160081c6001600160a01b03165afa9081156109b4579061097c575b602090604051908152f35b506020813d6020116109ac575b81610996602093836132e9565b810103126109a75760209051610971565b600080fd5b3d9150610989565b604051903d90823e3d90fd5b63032c737760e31b8152600490fd5b50346103055780600319360112610305576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461030557602036600319011261030557610a2e61323f565b6006546001600160a01b03163303610a5e5760018060a01b03166001600160601b0360a01b600754161760075580f35b6369c5977760e11b8252600482fd5b50346103055760203660031901126103055760043560ff60035460a81c166002811015610b1f5715610b1057338252600080516020615bbb83398151915260205280604083205410610b0157610ac581600c5461356a565b600c55610ad28133614c38565b6040519081527f8bcd19d56c0183581baf86325a7487003f776e19a1fafcf537a9fe7be4d06bf060203392a280f35b63162908e360e11b8252600482fd5b630522bdf560e31b8252600482fd5b634e487b7160e01b83526021600452602483fd5b5034610305578060031936011261030557602090604051908152f35b50346103055780600319360112610305576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461030557604036600319011261030557610bbb610bb161323f565b6024359033614dc1565b602060405160018152f35b503461030557806003193601126103055760ff60035460a81c1660028110156106e6576001146109c057308152600080516020615bbb83398151915260205260408120544790662386f26fc100008210610c77575b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610c63578115610c4f576020925004604051908152f35b634e487b7160e01b83526012600452602483fd5b634e487b7160e01b83526011600452602483fd5b662386f26fc100009150610c1b565b50346103055780600319360112610305576040519080600080516020615bdb8339815191525490610cb682613463565b8085529160018116908115610d605750600114610cf6575b610cf284610cde818603826132e9565b6040519182916020835260208301906133b7565b0390f35b600080516020615bdb83398151915281527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610d4657509091508101602001610cde82610cce565b919260018160209254838588010152019101909291610d2d565b60ff191660208087019190915292151560051b85019092019250610cde9150839050610cce565b50346103055760e036600319011261030557600435610da4613255565b610dac61326b565b916064356001600160401b03811161127257610dcc903690600401613425565b9160843593600285101561126e5760a43592610de6613520565b93610def614f59565b60ff60035460a81c1696600288101561125a57870361124b57338852600080516020615bbb8339815191526020526040882054821161123c576001600160a01b03841694851561122d578890600182991461103f575b50506003549060ff8260a81c16600281101561102b5715610f3e575b5050612710610e6f87614b8e565b049487808080610e7f8a8c61358d565b8098610e8b898d615000565b5af1610e95614ab5565b5015610f2f5791610f128794927f04baa7f3207ddca04f9307d2454e6ab8659a4ce01d26632b0311424d95dfc9869460408b8960209d52600080516020615bbb8339815191528d52205490600080516020615bfb833981519152549160ff60035460a81c169360405197889760018060a01b03169c339b89614ae5565b0390a46001600080516020615c3b83398151915255604051908152f35b630db2c7f160e31b8852600488fd5b600080516020615bfb83398151915254600b54600d546040516308ddec1560e41b815260048101939093526024830191909152604482018590526064820152929750906020908390818060848101039160081c6001600160a01b03165afa918215611020578892610fec575b508110610fde5764174876e8008110610fcf57610fc78633614c38565b943880610e61565b6303c2e61b60e61b8752600487fd5b62be12ab60e31b8752600487fd5b9091506020813d602011611018575b81611008602093836132e9565b810103126109a757519038610faa565b3d9150610ffb565b6040513d8a823e3d90fd5b634e487b7160e01b8a52602160045260248afd5b9091975061104e833033614dc1565b60405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811660048301526024820185905290919060208360448187305af19283156112225784936111db575b506111356020916040516110c081613281565b30815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001694858583015261271060408301523060608301528860808301528d60a083015260018060a01b031660c08201526040519687809481936304e45aaf60e01b835260048301614a57565b03926001600160a01b03165af19283156106b85782936111a4575b50803b1561030357818091602460405180948193632e1a7d4d60e01b83528860048401525af180156106b85761118b575b5050958738610e45565b81611195916132e9565b6111a0578738611181565b8780fd5b915091506020813d6020116111d3575b816111c1602093836132e9565b810103126109a7578890519138611150565b3d91506111b4565b92506020833d60201161121a575b816111f6602093836132e9565b810103126112165761113560209161120e8695614a4a565b5091506110ad565b8380fd5b3d91506111e9565b6040513d86823e3d90fd5b639fabe1c160e01b8952600489fd5b63bb55fd2760e01b8852600488fd5b63b7c0802f60e01b8852600488fd5b634e487b7160e01b89526021600452602489fd5b8580fd5b8480fd5b503461030557806003193601126103055761131990610cf26112b77f00000000000000000000000000000000000000000000000000000000000000006159bf565b916112e17f0000000000000000000000000000000000000000000000000000000000000000615a23565b611327604051916112f36020846132e9565b8383526000368137604051968796600f60f81b885260e0602089015260e08801906133b7565b9086820360408801526133b7565b9146606086015230608086015260a085015283820360c0850152613536565b50346103055780600319360112610305576006546001600160a01b031633036113a55761137161553d565b600160ff1960035416176003557f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7528180a180f35b6369c5977760e11b8152600490fd5b503461030557806003193601126103055760206040516103e88152f35b5034610305576020366003190112610305576003549060ff8260a81c1660028110156106e6576001146109c057600080516020615bfb83398151915254600b54600d546040516308ddec1560e41b81526004808201949094526024810192909252913560448201526064810191909152916020908390818060848101610954565b5034610305576020366003190112610305576020906040906001600160a01b0361147a61323f565b168152600283522054604051908152f35b503461030557806003193601126103055760206114a6615421565b604051908152f35b50346103055780600319360112610305576020600954604051908152f35b5034610305576020366003190112610305576020906040906001600160a01b036114f461323f565b168152600080516020615bbb83398151915283522054604051908152f35b5034610305578060031936011261030557602060405160648152f35b5034610305576020366003190112610305576003549060ff8260a81c1660028110156106e6576001146109c057600080516020615bfb83398151915254600b54600d5460405163763ba06360e11b81526004808201949094526024810192909252913560448201526064810191909152916020908390818060848101610954565b50346103055780600319360112610305576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346103055780600319360112610305576020600e54604051908152f35b5034610305578060031936011261030557602060ff600354166040519015158152f35b50346103055780600319360112610305576007546040516001600160a01b039091168152602090f35b50346103055780600319360112610305576004546040516001600160a01b039091168152602090f35b50346103055760203660031901126103055760206114a6600435610516615421565b5060e0366003190112610305576116be61323f565b6116c6613255565b6116ce61326b565b926064356001600160401b038111610303576116ee903690600401613425565b906084359160028310156103035760a43594611708613520565b92611711614f59565b60ff60035460a81c169460028610156106e657850361211b5764174876e800341061210c576001600160a01b0382169485156120fd578196829883966001859414611eea575b5060035460ff8160a81c1660028110156105815715611cd1575b5050506117cf575b50602096610f12600080516020615b7b8339815191529361179a8994614b2e565b5490600080516020615bfb833981519152549060ff60035460a81c169260405196879660018060a01b03169b339a3489614ae5565b6003805460ff60a81b1916600160a81b179055477f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811690813b1561121657604051630d0e30db60e41b8152848160048187875af18015611cc657908591611cb1575b5050611845306153d5565b7f000000000000000000000000000000000000000000000000000000000000000091611872848483615900565b61187c83306157ae565b3011918215611caa57815b8315611ca4575030925b8015611c9357845b8115611c8c576aa56fa5b99019a5c8000000915b600554604051633850c7bd60e01b81526001600160a01b03909116919060e081600481865afa908115611c8157908a979695949392918891611bab575b50516001600160a01b03169015611b9a576d13c4b57968ceb7aab7ea377e80c95b6001600160a01b031691828203611b02575b5050506040519361192d856132cd565b6001600160a01b039081168552958616602085019081526127106040808701918252620d899f1960608801908152620d89a06080890190815260a0890195865260c0890196875260e089018a81526101008a018b8152306101208c01908152426101408d019081529551634418b22b60e11b81529b518e1660048d015296518d1660248c0152945162ffffff1660448b01529151600290810b60648b01529051900b6084890152935160a4880152935160c4870152915160e48601529051610104850152518516610124840152516101448301529092839116815a9361016492608095f19283156109b4578093611ab4575b5050600080516020615b7b8339815191529361179a899484610f129460209d96600e55611a8260018060a01b03600554169260ff60035460a81c169060405193845260206aa56fa5b99019a5c80000009085015260408401526060830190613440565b7f88265359c6a4aa115b11bdd73f8cfe77eb54845737d7dcd9b631064f974b55cd60803092a394505093505096611779565b909192506080823d608011611afa575b81611ad1608093836132e9565b8101031261030557602082519201516001600160801b038116036103055750908361179a611a1f565b3d9150611ac4565b829394959697916040939260c49285519687958694630251596160e31b865230600487015211602485015260646044850152606484015260a060848401528160a48401525af180156110205790889594939291611b61575b808061191d565b6040809293949596503d8311611b93575b611b7c81836132e9565b81010312611b8f57908693929138611b5a565b8680fd5b503d611b72565b6a0cf330de50b81bb3db441b61190b565b91929394959697505060e0813d60e011611c79575b81611bcd60e093836132e9565b81010312611c755760405190611be282613281565b80516001600160a01b0381168103611c7157825260208101518060020b8103611c71576020830152611c1660408201615412565b6040830152611c2760608201615412565b6060830152611c3860808201615412565b608083015260a081015160ff81168103611c715760c08392611c669260a08f9c9b9a99989796015201614a4a565b60c0820152386118ea565b8b80fd5b8980fd5b3d9150611bc0565b6040513d8c823e3d90fd5b85916118ad565b6aa56fa5b99019a5c8000000611899565b92611891565b3091611887565b81611cbb916132e9565b61121657833861183a565b6040513d87823e3d90fd5b965097509750508081973498612710611ce934614b8e565b0496611cf5883461358d565b600080516020615bfb83398151915254600b54600d5460405163763ba06360e11b81526004810184905260248101839052604481019490945260648401819052919391929160081c6001600160a01b031690602083608481855afa928315611edf578993611eab575b50829d8310611e9d57611d71858261358d565b92838114611e94575b8310611dd3575b505050505090839192611da08c89611d9b8d9e9d8a6153f9565b615000565b8015611771578280929181925af1611db6614ab5565b5015611dc457813880611771565b630db2c7f160e31b8252600482fd5b60405163345f469960e01b815260048101959095526024850152604484018290526064840192909252939b50929950965060209187915060849082905afa9485156106b8578295611e60575b5081611e38612710611e3088614b8e565b04809761356a565b98893411611e4e575b6001909138808080611d81565b9150611e5a893461358d565b91611e41565b9094506020813d602011611e8c575b81611e7c602093836132e9565b810103126109a757519338611e1f565b3d9150611e6f565b60019650611d7a565b62be12ab60e31b8952600489fd5b9092506020813d602011611ed7575b81611ec7602093836132e9565b810103126109a757519138611d5e565b3d9150611eba565b6040513d8b823e3d90fd5b985098509450612710611efc34614b8e565b0494611f08863461358d565b97611f138b88615000565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b1561127257604051630d0e30db60e41b815285816004818e865af180156120f2576120de575b5060405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381166004830152602482018c905292906020816044818a875af180156120d3578c8c8f92938a97969594612080575b5091602095939161202b959360405194611fe486613281565b8552308886015261271060408601526060850152608084015260a083015260018060a01b031660c08201526040519485809481936304e45aaf60e01b835260048301614a57565b03926001600160a01b03165af190811561122257849161204e575b509838611757565b90506020813d602011612078575b81612069602093836132e9565b810103126109a7575138612046565b3d915061205c565b93949596505050506020813d6020116120cb575b816120a1602093836132e9565b81010312611b8f579260209261202b928e8e8e6120be8c99614a4a565b5091939550919395611fcb565b3d9150612094565b6040513d89823e3d90fd5b856120eb919692966132e9565b9338611f65565b6040513d88823e3d90fd5b639fabe1c160e01b8252600482fd5b6303c2e61b60e61b8152600490fd5b63b7c0802f60e01b8152600490fd5b50346103055780600319360112610305576020600c54604051908152f35b50346103055760203660031901126103055760ff60035460a81c1660028110156106e657156106d75761217d60043533614c38565b80f35b50346103055780600319360112610305576006546001600160a01b031633036113a55760035460ff8116156121dd5760ff19166003557fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169338180a180f35b638dfc202b60e01b8252600482fd5b503461030557806003193601126103055760405190806008549061220f82613463565b8085529160018116908115610d60575060011461223657610cf284610cde818603826132e9565b60088152600080516020615c1b833981519152939250905b80821061226757509091508101602001610cde82610cce565b91926001816020925483858801015201910190929161224e565b50346103055780600319360112610305576020600a54604051908152f35b50346103055780600319360112610305576020600b54604051908152f35b50346103055760203660031901126103055760035460ff8160a81c166002811015610b1f5760011461239757600080516020615bfb83398151915254600b54600d5460405163345f469960e01b81526004808201949094526024810192909252913560448201526064810191909152906020908290818060848101039160081c6001600160a01b03165afa9081156106b8578291612361575b602082604051908152f35b90506020813d60201161238f575b8161237c602093836132e9565b8101031261030357602091505138612356565b3d915061236f565b63032c737760e31b8252600482fd5b503461030557806003193601126103055760206040516b033b2e3c9fd0803ce80000008152f35b5034610305578060031936011261030557602060405160128152f35b5034610305578060031936011261030557602060ff60035460a81c166124126040518092613440565bf35b506101603660031901126103055761242a61323f565b612432613255565b9061243b61326b565b606435926001600160a01b03841680850361126e576084356001600160401b038111611b8f5761246f903690600401613425565b9460a4356001600160401b0381116111a05761248f903690600401613425565b9560c4356001600160401b038111612d8a576124af903690600401613425565b9461010435936101243596600080516020615c5b833981519152549960ff8b60401c16159a6001600160401b03811680159081612d82575b6001149081612d78575b159081612d6f575b50612d605767ffffffffffffffff198116600117600080516020615c5b833981519152558b612d33575b506001600160a01b038a169284908415612d245715612d15576001600160a01b031615612ced575b6105dc60e43511612cde576103e88711612ccf576b0295be96e6406697200000008911612cc05769d3c21bcecceda10000008910612cc05761258b615780565b612593615780565b8051906001600160401b038211612cac578c82916125bf600080516020615b9b83398151915254613463565b601f8111612c2d575b50602091601f8411600114612bae5792612ba3575b50508160011b916000199060031b1c191617600080516020615b9b833981519152555b8051906001600160401b038211612b8f57819061262b600080516020615bdb83398151915254613463565b601f8111612b11575b506020908d601f8411600114612a925792612a87575b50508160011b916000199060031b1c191617600080516020615bdb833981519152555b612675615780565b61267d615780565b6001600080516020615c3b833981519152556001600160601b0360a01b600654161760065560ff60a81b196003541660035560018060a01b03166001600160601b0360a01b60045416176004558051906001600160401b038211612a735781906126e8600854613463565b601f81116129fe575b50602090601f831160011461298d578a92612982575b50508160011b916000199060031b1c1916176008555b60038054610100600160a81b03191660089290921b610100600160a81b031691909117905560e435600955600a55600b82905561014435600d55600780546001600160a01b0319166001600160a01b03929092169190911790556b0295be96e64066972000000090810390811161296e57600c557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038116903082109081156129675780915b15612961575030905b6001600160a01b031691820361294f576d13c4b57968ceb7aab7ea377e80c9905b6040516309f56ab160e11b815260048101939093526001600160a01b039081166024840152612710604484015290811660648301526020908290608490829088907f0000000000000000000000000000000000000000000000000000000000000000165af190811561122257849161290d575b5060018060a01b03166001600160601b0360a01b6005541617600555346128eb575b506128915780f35b68ff000000000000000019600080516020615c5b8339815191525416600080516020615c5b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b604051612906916128fd6020836132e9565b8482528061359a565b5038612889565b90506020813d602011612947575b81612928602093836132e9565b8101031261121657516001600160a01b03811681036112165738612867565b3d915061291b565b6a0cf330de50b81bb3db441b906127f4565b906127d3565b30916127ca565b634e487b7160e01b84526011600452602484fd5b015190503880612707565b60088b52600080516020615c1b8339815191529250601f1984168b5b8181106129e657509084600195949392106129cd575b505050811b0160085561271d565b015160001960f88460031b161c191690553880806129bf565b929360206001819287860151815501950193016129a9565b90915060088a52601f830160051c600080516020615c1b833981519152019060208410612a5d575b90601f8493920160051c600080516020615c1b83398151915201905b818110612a4f57506126f1565b8b8155849350600101612a42565b600080516020615c1b8339815191529150612a26565b634e487b7160e01b89526041600452602489fd5b01519050388061264a565b600080516020615bdb83398151915281528281209350601f198516905b818110612af95750908460019594939210612ae0575b505050811b01600080516020615bdb8339815191525561266d565b015160001960f88460031b161c19169055388080612ac5565b92936020600181928786015181550195019301612aaf565b600080516020615bdb8339815191528e529091507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c81019160208510612b85575b849392918f91601f0160051c0191905b828210612b77575050612634565b81558493506001018e612b69565b9091508190612b59565b634e487b7160e01b8c52604160045260248cfd5b0151905038806125dd565b600080516020615b9b83398151915281528281209350601f198516905b818110612c155750908460019594939210612bfc575b505050811b01600080516020615b9b83398151915255612600565b015160001960f88460031b161c19169055388080612be1565b92936020600181928786015181550195019301612bcb565b600080516020615b9b83398151915290925291507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c81019160208510612ca2575b918f9291601f8695930160051c01905b818110612c9257506125c8565b9283558493508f92600101612c85565b9091508190612c75565b634e487b7160e01b8d52604160045260248dfd5b63970b6aa760e01b8c5260048cfd5b63a69cac6360e01b8c5260048cfd5b6334264a6760e21b8c5260048cfd5b7f0000000000000000000000000000000000000000000000000000000000000000935061254b565b639fabe1c160e01b8d5260048dfd5b639fabe1c160e01b8e5260048efd5b68ffffffffffffffffff19166801000000000000000117600080516020615c5b8339815191525538612523565b63f92ee8a960e01b8d5260048dfd5b905015386124f9565b303b1591506124f1565b8d91506124e7565b8880fd5b50346103055780600319360112610305576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461030557606036600319011261030557612ded61323f565b612df5613255565b60443591612e0281614b55565b338552602052604084205460018101612e21575b50610bbb9350614dc1565b838110612e86576001600160a01b03821615612e72573315612e5e57836040610bbb96612e4d85614b55565b338252602052209103905538612e16565b634a1406b160e11b85526004859052602485fd5b63e602df0560e01b85526004859052602485fd5b637dc7a0d960e11b8552336004526024526044839052606484fd5b50346103055780600319360112610305576020600080516020615bfb83398151915254604051908152f35b50346103055780600319360112610305576005546040516001600160a01b039091168152602090f35b503461030557806003193601126103055760206040517f6a7a1f86a59803730a57e6c8042dbe662f862f51e25ea9a70d4ab8f5415f9ae18152f35b503461030557608036600319011261030557612f4a61323f565b50612f53613255565b506064356001600160401b03811161030357612f739036906004016133f8565b50506005546001600160a01b03163303612f9957604051630a85bd0160e11b8152602090f35b634b60273560e01b8152600490fd5b50346103055780600319360112610305576020600d54604051908152f35b503461030557604036600319011261030557612fe061323f565b60243590331561305a576001600160a01b0316918215613046576040829161300733614b55565b85825260205220556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b81526004819052602490fd5b63e602df0560e01b83526004839052602483fd5b50346103055780600319360112610305576040519080600080516020615b9b833981519152549061309e82613463565b8085529160018116908115610d6057506001146130c557610cf284610cde818603826132e9565b600080516020615b9b83398151915281527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b80821061311557509091508101602001610cde82610cce565b9192600181602092548385880101520191019092916130fc565b50346103055761313e3661335c565b60ff6003949392945460a81c1660028110156105815715610572578261316383614b2e565b5410610563579161323581836132217f8bcd19d56c0183581baf86325a7487003f776e19a1fafcf537a9fe7be4d06bf0966131bb60209760018060a01b03166000526002602052604060002080549060018201905590565b988361321c8c6040518b810191507f6a7a1f86a59803730a57e6c8042dbe662f862f51e25ea9a70d4ab8f5415f9ae1825260018060a01b0384169d8e604083015289606083015260808201528460a082015260a0815261050b60c0826132e9565b614bfc565b61322d82600c5461356a565b600c55614c38565b604051908152a280f35b600435906001600160a01b03821682036109a757565b602435906001600160a01b03821682036109a757565b604435906001600160a01b03821682036109a757565b60e081019081106001600160401b0382111761329c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761329c57604052565b61016081019081106001600160401b0382111761329c57604052565b90601f801991011681019081106001600160401b0382111761329c57604052565b6001600160401b03811161329c57601f01601f191660200190565b9291926133318261330a565b9161333f60405193846132e9565b8294818452818301116109a7578281602093846000960137010152565b9060806003198301126109a757600435916024356001600160a01b03811681036109a7579160443591606435906001600160401b0382116109a757806023830112156109a7578160246133b493600401359101613325565b90565b919082519283825260005b8481106133e3575050826000602080949584010152601f8019910116010190565b806020809284010151828286010152016133c2565b9181601f840112156109a7578235916001600160401b0383116109a757602083818601950101116109a757565b9080601f830112156109a7578160206133b493359101613325565b90600282101561344d5752565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613493575b602083101461347d57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613472565b600092918154916134ad83613463565b808352926001811690811561350357506001146134c957505050565b60009081526020812093945091925b8383106134e9575060209250010190565b6001816020929493945483858701015201910191906134d8565b915050602093945060ff929192191683830152151560051b010190565b60c435906001600160a01b03821682036109a757565b906020808351928381520192019060005b8181106135545750505090565b8251845260209384019390920191600101613547565b9190820180921161357757565b634e487b7160e01b600052601160045260246000fd5b9190820391821161357757565b90916000926135a7614f59565b60ff60035460a81c169392600285101561344d57846140135764174876e8003410614002576001600160a01b038116928315613ff15760009182809781956001839214613dff575b6003549060ff8260a81c166002811015613deb5715613bd6575b50509088939291613677575b50600080516020615b7b833981519152939161363361365f92614b2e565b5490600080516020615bfb833981519152549060ff60035460a81c1692604051968796339a3489614ae5565b0390a4906001600080516020615c3b83398151915255565b6003805460ff60a81b1916600160a81b179055919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811691479190833b15611c7557604051630d0e30db60e41b81528a8160048187895af18015613bcb578b90613bb4575b50506136f2306153d5565b61371d837f000000000000000000000000000000000000000000000000000000000000000086615900565b6137477f0000000000000000000000000000000000000000000000000000000000000000306157ae565b30841015613bad57815b30851015613ba7575030905b30851015613b955783905b30861015613b8e576aa56fa5b99019a5c8000000905b600554604051633850c7bd60e01b81526001600160a01b03909116919060e081600481865afa918215613b8157908f95949392918692613aae575b5050516001600160a01b031697301115613a9d576d13c4b57968ceb7aab7ea377e80c95b6001600160a01b0316908189036139fe575b50506004965060405194613802866132cd565b6001600160a01b039081168652938416602086019081526127106040808801918252620d899f1960608901908152620d89a06080808b0191825260a08b0197885260c08b0196875260e08b018981526101008c01998a52306101208d01908152426101408e019081529551634418b22b60e11b81529c518c169e8d019e909e5295518a1660248c0152935162ffffff1660448b01529051600290810b60648b01529051900b6084890152935160a4880152915160c48701525160e4860152915161010485015294518216610124840152935161014483015290929083906101649082908c907f0000000000000000000000000000000000000000000000000000000000000000165af19182156110205790899493929189926139ad575b5061365f928261363392600080516020615b7b833981519152989694600e5561397d60018060a01b03600554169260ff60035460a81c16906040519384526aa56fa5b99019a5c8000000602085015260408401526060830190613440565b7f88265359c6a4aa115b11bdd73f8cfe77eb54845737d7dcd9b631064f974b55cd60803092a39250509193613615565b9150919293506080813d6080116139f6575b816139cc608093836132e9565b810103126111a057602081519101516001600160801b038116036111a0578893929161365f61391f565b3d91506139bf565b6040929882949560c49285519687958694630251596160e31b865230600487015211602485015260646044850152606484015260a060848401528160a48401525af18015613a9257908c9291613a57575b8087916137ef565b604080929495969793503d8311613a8b575b613a7381836132e9565b81010312613a8757939291908a9038613a4f565b8a80fd5b503d613a69565b6040513d8e823e3d90fd5b6a0cf330de50b81bb3db441b6137dd565b9150919293945060e0823d60e011613b79575b81613ace60e093836132e9565b81010312613b75575060405190613ae482613281565b80516001600160a01b0381168103613b7157825260208101518060020b8103613b71576020830152613b1860408201615412565b6040830152613b2960608201615412565b6060830152613b3a60808201615412565b608083015260a081015160ff81168103613b715760a08301528e9493929190613b659060c001614a4a565b60c082015238806137b9565b8f80fd5b8e80fd5b3d9150613ac1565b8f604051903d90823e3d90fd5b849061377e565b6aa56fa5b99019a5c800000090613768565b9061375d565b3091613751565b613bbd916132e9565b898112611c7557388a6136e7565b6040513d8d823e3d90fd5b96509850509192509450809181953492612710613bf234614b8e565b0495613bfe873461358d565b600080516020615bfb83398151915254600b54600d5460405163763ba06360e11b815260048101849052602481018390526044810194909452606484018190529c909b60089190911c6001600160a01b031698929091906020816084818d5afa9081156120f2578691613db9575b508099869d613c7b848261358d565b92838114613db0575b8310613cdf575b50505050611d9b9b5091613ca5848a8a9e8f9a9b896153f9565b81613cb7575b50819293949550613609565b8380959697508093949281925af1613ccd614ab5565b5015611dc45790889392913880613cab565b60405163345f469960e01b81526004810194909452602484015260448301829052606483019e909e52909c93995097509095506020918b915060849082905afa958615613da3578196613d6d575b611d9b9950613d49612710613d4189614b8e565b04809861356a565b94853411613d5d575b600138808080613c8b565b50613d68853461358d565b613d52565b95506020893d602011613d9b575b81613d88602093836132e9565b810103126109a757611d9b985195613d2d565b3d9150613d7b565b50604051903d90823e3d90fd5b60019550613c84565b90506020813d602011613de3575b81613dd4602093836132e9565b810103126109a7575138613c6c565b3d9150613dc7565b634e487b7160e01b85526021600452602485fd5b985093509350612710613e1134614b8e565b0493613e1d853461358d565b93613e288287615000565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b15613fed57604051630d0e30db60e41b815283816004818a865af1801561122257613fd9575b5060405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038116600483015260248201889052919060208160448188865af18015611cc6579085939291613f92575b50602091613f339160405190613ef082613281565b8152308482015261271060408201528b60608201528960808201528460a08201528460c08201526040519485809481936304e45aaf60e01b835260048301614a57565b03926001600160a01b03165af1908115613f87578391613f55575b50986135ef565b90506020813d602011613f7f575b81613f70602093836132e9565b810103126109a7575138613f4e565b3d9150613f63565b6040513d85823e3d90fd5b909192506020813d602011613fd1575b81613faf602093836132e9565b81010312611272578492602092613fc8613f3393614a4a565b50915091613edb565b3d9150613fa2565b83613fe6919492946132e9565b9138613e7a565b8280fd5b639fabe1c160e01b60005260046000fd5b6303c2e61b60e61b60005260046000fd5b63b7c0802f60e01b60005260046000fd5b906000608052614032614f59565b60ff60035460a81c1693600281101561480f57600285101561480f578403614a375764174876e8003410614a24576001600160a01b038216918215614a115760805194859485939091849190600114614827575b60035460ff8160a81c16600281101561480f57156145ec575b50506140f0575b6140be600080516020615b7b83398151915292614b2e565b5461365f600080516020615bfb8339815191525460ff60035460a81c16906040519485948b6080519b339a3489614ae5565b6003805460ff60a81b1916600160a81b1790557f0000000000000000000000000000000000000000000000000000000000000000476001600160a01b038216803b1561443e57604051630d0e30db60e41b81526080518160048186865af1801561444c576145d0575b50614163306153d5565b7f000000000000000000000000000000000000000000000000000000000000000090614190838383615900565b61419a82306157ae565b308110156145c957835b308210156145c3575030905b308110156145b15783905b308110156145aa576aa56fa5b99019a5c8000000905b600554604051633850c7bd60e01b81526001600160a01b039091169060e081600481855afa90811561444c57608051916144ec575b50516001600160a01b0316913011156144db576d13c4b57968ceb7aab7ea377e80c95b6001600160a01b031691828103614459575b5050506040519561424b876132cd565b600160a01b600190031686526020860192600160a01b60019003168352604086019161271083526060870191620d899f1983526080880191620d89a0835260a0890190815260c0890191825260e089019260805184526101008a019460805186526101208b01963088526101408c0198428a52604051809d634418b22b60e11b8252600160a01b600190039051169060040152600160a01b6001900390511660248d01525162ffffff1660448c01525160020b60648b01525160020b60848a01525160a48901525160c48801525160e487015251610104860152600160a01b60019003905116610124850152516101448401528260805191600160a01b6001900316815a9361016492608095f191821561444c57608051926143ef575b509281600080516020615b7b833981519152946140be93600e556143c160018060a01b03600554169260ff60035460a81c16906040519384526aa56fa5b99019a5c8000000602085015260408401526060830190613440565b7f88265359c6a4aa115b11bdd73f8cfe77eb54845737d7dcd9b631064f974b55cd60803092a39250506140a6565b9150926080823d608011614444575b8161440b608093836132e9565b8101031261443e57602082519201516001600160801b0381160361443e5792600080516020615b7b833981519152614368565b60805180fd5b3d91506143fe565b6040513d608051823e3d90fd5b60c4839160409384519586948593630251596160e31b855230600486015211602484015260646044840152606483015260a0608483015260805160a4830152608051905af1801561444c576144b0575b808061423b565b604090813d83116144d4575b6144c681836132e9565b8101031261443e57386144a9565b503d6144bc565b6a0cf330de50b81bb3db441b614229565b905060e0813d60e0116145a2575b8161450760e093836132e9565b8101031261443e576040519061451c82613281565b80516001600160a01b038116810361443e57825260208101518060020b810361443e57602083015261455060408201615412565b604083015261456160608201615412565b606083015261457260808201615412565b608083015260a081015160ff8116810361443e5760a08301526145979060c001614a4a565b60c082015238614206565b3d91506144fa565b84906141d1565b6aa56fa5b99019a5c8000000906141bb565b906141b0565b30936141a4565b6080516145dc916132e9565b60805160001261443e5738614159565b60805134995061466b98509095509091508061271061460a8a614b8e565b0495614616873461358d565b90600080516020615bfb83398151915254906020600b5493600d5460a052604051809d819263763ba06360e11b835260a051908888600486019094939260609260808301968352602083015260408201520152565b0381600885901c6001600160a01b03165afa9a8b1561444c576080519b6147db575b508a614699838561358d565b908181146147d2575b81106146f5575b50505050916146c0600087611d9b8b9c9b896153f9565b811561409f57600080809381935af16146d7614ab5565b50156146e457388061409f565b630db2c7f160e31b60005260046000fd5b60405163345f469960e01b815260a05160048201949094526024810194909452604484018190526064840192909252939a5098509550602091869150818060848101039160081c6001600160a01b03165afa9384156147c657600094614792575b5061476e61271061476686614b8e565b04809561356a565b96873411614782575b6001388080806146a9565b5061478d873461358d565b614777565b90936020823d6020116147be575b816147ad602093836132e9565b810103126103055750519238614756565b3d91506147a0565b6040513d6000823e3d90fd5b600195506146a2565b909a506020813d602011614807575b816147f7602093836132e9565b810103126109a75751993861468d565b3d91506147ea565b634e487b7160e01b6080515260216004526024608051fd5b96509450915061271061483934614b8e565b0491614845833461358d565b9461485260805185615000565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b1561443e57604051630d0e30db60e41b8152608051816004818b865af1801561444c576149ff575b5060405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038116600483015260248201899052919060208180604481010381608051865af1801561444c576149bd575b506040516149629260209261491c83613281565b82523083830152612710604083015288606083015289608083015260805160a083015260805160c083015260405180809581946304e45aaf60e01b835260048301614a57565b608051919003926001600160a01b03165af190811561444c576080519161498b575b5096614086565b90506020813d6020116149b5575b816149a6602093836132e9565b810103126109a7575138614984565b3d9150614999565b906020823d6020116149f7575b816149d7602093836132e9565b8101031261443e57614962926149ee602093614a4a565b50925090614908565b3d91506149ca565b608051614a0b916132e9565b386148a6565b639fabe1c160e01b608051526004608051fd5b6303c2e61b60e61b608051526004608051fd5b63b7c0802f60e01b608051526004608051fd5b519081151582036109a757565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b3d15614ae0573d90614ac68261330a565b91614ad460405193846132e9565b82523d6000602084013e565b606090565b93614b1f93614b2c989a99979360e097938752602087015260408601526060850152608084015261010060a08401526101008301906133b7565b9560c08201520190613440565b565b6001600160a01b03166000908152600080516020615bbb8339815191526020526040902090565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b9060648202918083046064149015171561357757565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614b2c57614bf960ff60035460a81c16604051614bee6020826132e9565b600081523333614024565b50565b909291421015614c2757614c0f9261555a565b15614c1657565b638baa579f60e01b60005260046000fd5b630819bdcd60e01b60005260046000fd5b6001600160a01b03168015614dab5760ff60035460a81c16600281101561344d571580614d98575b614d8757600091818352600080516020615bbb8339815191526020526040832054818110614d6e5790807facd163ad35eba509604b38d1c03e07dae8ba7611d3001578ef3fe6e7683f4ee292848652600080516020615bbb83398151915260205203604085205580600080516020615bfb8339815191525403600080516020615bfb8339815191525583837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020604051858152a3828452600080516020615bbb833981519152602081815260408087205487805292825280872054600080516020615bfb83398151915254825195865292850193909352830191909152606082015280608081015b0390a3565b6064939263391434e360e21b8452600452602452604452fd5b630522bdf560e31b60005260046000fd5b506005546001600160a01b031615614c60565b634b637e8f60e11b600052600060045260246000fd5b6001600160a01b0316908115614dab576001600160a01b0316918215614f435760ff60035460a81c16600281101561344d571580614f2f575b614d8757600090828252600080516020615bbb8339815191526020526040822054818110614f175790808392857facd163ad35eba509604b38d1c03e07dae8ba7611d3001578ef3fe6e7683f4ee29552600080516020615bbb833981519152602052036040832055848252600080516020615bbb8339815191526020526040822081815401905584847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020604051858152a3838252600080516020615bbb833981519152602052614d6960408084205493878152600080516020615bbb8339815191526020522054600080516020615bfb8339815191525490604051948594859094939260609260808301968352602083015260408201520152565b60649363391434e360e21b8452600452602452604452fd5b506005546001600160a01b03168314614dfa565b63ec442f0560e01b600052600060045260246000fd5b6002600080516020615c3b8339815191525414614f84576002600080516020615c3b83398151915255565b633ee5aeb560e01b60005260046000fd5b81810291818304149015171561357757612710900490565b805115614fba5760200190565b634e487b7160e01b600052603260045260246000fd5b805160011015614fba5760400190565b805160021015614fba5760600190565b805160031015614fba5760800190565b6000906001600160a01b038316156153ad575b80159160018317156153995761502b60095483614f95565b93615038600a5484614f95565b93611d4c8402938404611d4c14171561538557848201808311610c635761506d906150688661271087049261356a565b61356a565b60405160a0939161507e85836132e9565b60048252601f198501602083018136823760405161509c88826132e9565b6004815282366020830137604051926150b589856132e9565b600484523660208501376006546001600160a01b03166150d486614fad565b52856150df82614fad565b526341a2209560e11b6150f184614fad565b526004546001600160a01b031661510786614fd0565b528a61511282614fd0565b526316c0467b60e01b61512484614fd0565b5261512e85614fe0565b6001600160a01b03881690528961514482614fe0565b5263775684f560e11b61515684614fe0565b5261516085614ff0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169052612710890461519a82614ff0565b52631d5d47eb60e21b6151ac84614ff0565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561126e57939185939160405195869463300def9560e01b86526084860190608060048801525180915260a486019290875b8181106153605750505084820360031901602486015261522a9190613536565b60031984820301604485015260208083519283815201920190855b81811061533a5750505082810360031981016064850152908490526020019082906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156106b857907fd41a12ab0dd99cf69d45813a5b5b1fa4456d2cf84745b2fa9d396f5a95311b279493929161532a575b5050600654600454604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116825260006020830152918101999099526060890197909752612710909504608088015290851695938516941692a4565b81615334916132e9565b386152c3565b82516001600160e01b031916845288965087955060209384019390920191600101615245565b82516001600160a01b031685528a98508997506020948501949092019160010161520a565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b81526011600452602490fd5b7f00000000000000000000000000000000000000000000000000000000000000009250615013565b6001600160a01b03811615614f43576aa56fa5b99019a5c8000000614b2c91615622565b906001600160a01b03821615614f4357614b2c91615622565b519061ffff821682036109a757565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480615514575b1561547c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261550e60c0826132e9565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614615453565b60ff6003541661554957565b63d93c066560e01b60005260046000fd5b9190823b615595579061556c91615a5a565b50600481101561344d5715918261558257505090565b6001600160a01b03918216911614919050565b916000926155cc6155da85946040519283916020830195630b135d3f60e11b875260248401526040604484015260648301906133b7565b03601f1981018352826132e9565b51915afa6155e6614ab5565b81615614575b816155f5575090565b90506020818051810103126109a75760200151630b135d3f60e11b1490565b9050602081511015906155ec565b60ff60035460a81c16600281101561344d571580615769575b614d87577facd163ad35eba509604b38d1c03e07dae8ba7611d3001578ef3fe6e7683f4ee260009161567c84600080516020615bfb8339815191525461356a565b600080516020615bfb833981519152556001600160a01b031692831583146157455780600080516020615bfb8339815191525403600080516020615bfb833981519152555b83837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020604051858152a3828052600080516020615bbb833981519152602081815260408086205487875292825280862054600080516020615bfb8339815191525482519586529285019390935283019190915260608201528060808101614d69565b838352600080516020615bbb833981519152602052604083208181540190556156c1565b506005546001600160a01b0382811691161461563b565b60ff600080516020615c5b8339815191525460401c161561579d57565b631afcd79f60e31b60005260046000fd5b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529391929190821690602084604481855afa9384156147c6576000946158cc575b506aa56fa5b99019a5c800000084018094116135775760405163095ea7b360e01b60208281019182526001600160a01b03909316602483015260448201959095529360009061584f86606481015b03601f1981018852876132e9565b85519082865af1903d60005190836158ad575b5050501561586f57505050565b6158a8614b2c936040519063095ea7b360e01b6020830152602482015260006044820152604481526158a26064826132e9565b82615b1f565b615b1f565b919250906158c257503b15155b388080615862565b60019150146158ba565b90936020823d6020116158f8575b816158e7602093836132e9565b8101031261030557505192386157f3565b3d91506158da565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529490831691602081604481865afa9081156147c65760009161598b575b506158419461584f61595860209460009461356a565b60405163095ea7b360e01b8682019081526001600160a01b03909416602482015260448101919091529687906064820190565b90506020813d6020116159b7575b816159a6602093836132e9565b810103126109a75751615841615942565b3d9150615999565b60ff8114615a095760ff811690601f82116159f85760408051926159e382856132e9565b6020808552840191601f190136833783525290565b632cd44ac360e21b60005260046000fd5b506040516133b481615a1c81600061349d565b03826132e9565b60ff8114615a475760ff811690601f82116159f85760408051926159e382856132e9565b506040516133b481615a1c81600161349d565b8151919060418303615a8b57615a8492506020820151906060604084015193015160001a90615a96565b9192909190565b505060009160029190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615b13579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa156147c6576000516001600160a01b03811615615b075790600090600090565b50600090600190600090565b50505060009160039190565b906000602091828151910182855af1156147c6576000513d615b7157506001600160a01b0381163b155b615b505750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b60011415615b4956fe7d3caae0f548abdff209058c753356d40ab778eb8ddbae48da926b275a1740c452c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0452c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220dad57f006b524e3110634ed05344eb3fd24274a9db62f517a882a82731d6403364736f6c634300081b0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00000000000000000000000000a679568586ab40ce14b187bc1993dac1ba1372c600000000000000000000000047604ee7c659dcbcd5c2c5ef56588a4f5f2539b4000000000000000000000000420000000000000000000000000000000000000600000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f10000000000000000000000002626664c2603336e57b271c5c0b26f421741e481
0x000000000000000000000000a679568586ab40ce14b187bc1993dac1ba1372c600000000000000000000000047604ee7c659dcbcd5c2c5ef56588a4f5f2539b4000000000000000000000000420000000000000000000000000000000000000600000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f10000000000000000000000002626664c2603336e57b271c5c0b26f421741e481
----Decoded View------------Arg [0] : _protocolFeeRecipient (address): 0xa679568586Ab40Ce14B187Bc1993DAc1Ba1372C6Arg [1] : _protocolRewards (address): 0x47604ee7C659DcbCD5C2c5eF56588a4F5f2539b4Arg [2] : _weth (address): 0x4200000000000000000000000000000000000006Arg [3] : _nonfungiblePositionManager (address): 0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1Arg [4] : _swapRouter (address): 0x2626664c2603336E57B271c5C0b26F421741e481
----Encoded View------------Arg [0] : 0x000000000000000000000000a679568586ab40ce14b187bc1993dac1ba1372c6Arg [1] : 0x00000000000000000000000047604ee7c659dcbcd5c2c5ef56588a4f5f2539b4Arg [2] : 0x0000000000000000000000004200000000000000000000000000000000000006Arg [3] : 0x00000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f1Arg [4] : 0x0000000000000000000000002626664c2603336e57b271c5c0b26f421741e481