[ { "inputs": [ { "internalType": "contract IWETH9", "name": "WETH_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AmountExceedsMaxFlashLoan", "type": "error" }, { "inputs": [], "name": "ApproveFromZeroAddress", "type": "error" }, { "inputs": [], "name": "ApproveToZeroAddress", "type": "error" }, { "inputs": [], "name": "BurnAmountExceedsBalance", "type": "error" }, { "inputs": [], "name": "BurnFromZeroAddress", "type": "error" }, { "inputs": [], "name": "CallerIsNotTheOwner", "type": "error" }, { "inputs": [], "name": "CantRescueAssetToken", "type": "error" }, { "inputs": [], "name": "DecreasedAllowanceBelowZero", "type": "error" }, { "inputs": [], "name": "ETHSent", "type": "error" }, { "inputs": [], "name": "EligibilityAlreadySet", "type": "error" }, { "inputs": [], "name": "HoldingsUpdationFailed", "type": "error" }, { "inputs": [], "name": "IdNotFound", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientETHSent", "type": "error" }, { "inputs": [], "name": "InvalidReturnValue", "type": "error" }, { "inputs": [], "name": "InvalidToken", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintingDisabled", "type": "error" }, { "inputs": [], "name": "NFTAlreadyOwned", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NotEligible", "type": "error" }, { "inputs": [], "name": "NotManager", "type": "error" }, { "inputs": [], "name": "NotNFTOwner", "type": "error" }, { "inputs": [], "name": "NotOwner", "type": "error" }, { "inputs": [], "name": "Paused", "type": "error" }, { "inputs": [], "name": "PremiumLimitExceeded", "type": "error" }, { "inputs": [], "name": "RedeemDisabled", "type": "error" }, { "inputs": [], "name": "SwapDisabled", "type": "error" }, { "inputs": [], "name": "TokenLengthMismatch", "type": "error" }, { "inputs": [], "name": "TooManyItems", "type": "error" }, { "inputs": [], "name": "TransferAmountExceedsBalance", "type": "error" }, { "inputs": [], "name": "TransferAmountIsZero", "type": "error" }, { "inputs": [], "name": "TransferFromZeroAddress", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "UnableToSendETH", "type": "error" }, { "inputs": [], "name": "WrongToken", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "moduleIndex", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "eligibilityAddr", "type": "address" } ], "name": "EligibilityDeployed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "EnableMintUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "EnableRedeemUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "EnableSwapUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "wethFees", "type": "uint256" } ], "name": "FeesDistributed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "manager", "type": "address" } ], "name": "ManagerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" } ], "name": "MetadataUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "address", "name": "depositor", "type": "address" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "depositor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "wethPremium", "type": "uint256" } ], "name": "PremiumShared", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "specificIds", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" } ], "name": "Redeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "specificIds", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "address", "name": "depositor", "type": "address" } ], "name": "Swapped", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "vaultId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "assetAddress", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "is1155", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "allowAllItems", "type": "bool" } ], "name": "VaultInit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "assetAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "numItems", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" } ], "name": "VaultShutdown", "type": "event" }, { "inputs": [], "name": "WETH", "outputs": [ { "internalType": "contract IWETH9", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "assetAddress_", "type": "address" }, { "internalType": "bool", "name": "is1155_", "type": "bool" }, { "internalType": "bool", "name": "allowAllItems_", "type": "bool" } ], "name": "__NFTXVault_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allHoldings", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "allValidNFTs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "allowAllItems", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "assetAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "moduleIndex", "type": "uint256" }, { "internalType": "bytes", "name": "initData", "type": "bytes" } ], "name": "deployEligibilityStorage", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "depositInfo1155", "outputs": [ { "internalType": "uint256", "name": "qty", "type": "uint256" }, { "internalType": "address", "name": "depositor", "type": "address" }, { "internalType": "uint48", "name": "timestamp", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "depositInfo1155Length", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableVaultFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eligibilityStorage", "outputs": [ { "internalType": "contract INFTXEligibility", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableRedeem", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableSwap", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "finalizeVault", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "flashFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC3156FlashBorrowerUpgradeable", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "flashLoan", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "holdingsContains", "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": [], "name": "is1155", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "maxFlashLoan", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "address", "name": "depositor", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "vTokensMinted", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "holdingsIndex", "type": "uint256" } ], "name": "nftIdAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155BatchReceived", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "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": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "pointerIndex1155", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "idsOut", "type": "uint256[]" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "wethAmount", "type": "uint256" }, { "internalType": "uint256", "name": "vTokenPremiumLimit", "type": "uint256" }, { "internalType": "bool", "name": "forceFees", "type": "bool" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "ethFees", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum INFTXVaultV3.TokenType", "name": "tt", "type": "uint8" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "rescueTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintFee_", "type": "uint256" }, { "internalType": "uint256", "name": "redeemFee_", "type": "uint256" }, { "internalType": "uint256", "name": "swapFee_", "type": "uint256" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "manager_", "type": "address" } ], "name": "setManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enableMint_", "type": "bool" }, { "internalType": "bool", "name": "enableRedeem_", "type": "bool" }, { "internalType": "bool", "name": "enableSwap_", "type": "bool" } ], "name": "setVaultFeatures", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "setVaultMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "shutdown", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "idsIn", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "idsOut", "type": "uint256[]" }, { "internalType": "address", "name": "depositor", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "vTokenPremiumLimit", "type": "uint256" }, { "internalType": "bool", "name": "forceFees", "type": "bool" } ], "name": "swap", "outputs": [ { "internalType": "uint256", "name": "ethFees", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenDepositInfo", "outputs": [ { "internalType": "uint48", "name": "timestamp", "type": "uint48" }, { "internalType": "address", "name": "depositor", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalHoldings", "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateDelegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "vTokenAmount", "type": "uint256" } ], "name": "vTokenToETH", "outputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vaultFactory", "outputs": [ { "internalType": "contract INFTXVaultFactoryV3", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vaultFees", "outputs": [ { "internalType": "uint256", "name": "mintFee", "type": "uint256" }, { "internalType": "uint256", "name": "redeemFee", "type": "uint256" }, { "internalType": "uint256", "name": "swapFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vaultId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162005e0e38038062005e0e833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051615d49620000c56000396000818161098501528181612cb501528181612d4e01528181612e2c01528181612f9b0152818161371f015281816137b40152613dca0152615d496000f3fe6080604052600436106103805760003560e01c80636b948a35116101d1578063b6c958b011610102578063d9d98ce4116100a0578063e9ec2e991161006f578063e9ec2e9914610b42578063f1d20dd414610b57578063f23a6e6114610b77578063f2fde38b14610ba357600080fd5b8063d9d98ce414610a9c578063dd62ed3e14610abc578063e0a8b97a14610b02578063e78458c414610b2257600080fd5b8063c3cb8c14116100dc578063c3cb8c1414610a26578063cec10c1114610a3b578063d0ebdbe714610a5b578063d8a06f7314610a7b57600080fd5b8063b6c958b0146109c7578063b8517b78146109da578063bc197c81146109fa57600080fd5b80639c5155461161016f578063a457c2d711610149578063a457c2d714610933578063a9059cbb14610953578063ad5c464814610973578063af1c5bbd146109a757600080fd5b80639c5155461461089a578063a1db8493146108e5578063a3f1ebea1461091357600080fd5b806372188e3f116101ab57806372188e3f146108165780638da5cb5b146108465780638f878a431461086457806395d89b411461088557600080fd5b80636b948a35146107a957806370a08231146107cb578063715018a61461080157600080fd5b8063313ce567116102b657806354dc4de8116102545780635cffe9de116102235780635cffe9de146107415780636040853514610761578063613255ab14610776578063659a1fe81461079657600080fd5b806354dc4de8146106b257806354f78d7f146106d257806354fd4d50146106f25780635877aee61461072157600080fd5b806341c5c7641161029057806341c5c7641461061c57806344b28d591461064a57806345a0b6521461066c578063481c6a751461068c57600080fd5b8063313ce567146105c957806333194c0a146105e557806339509351146105fc57600080fd5b806318160ddd1161032357806323b872dd116102fd57806323b872dd1461055257806325705d8d146105725780632969144814610594578063296fc49e146105b657600080fd5b806318160ddd1461048957806318499039146104a85780631ba46cfd1461051957600080fd5b806306f26dc21161035f57806306f26dc2146103f357806306fdde031461040e578063095ea7b314610430578063150b7a021461045057600080fd5b80625181611461038557806301ffc9a71461039c578063061873e8146103d1575b600080fd5b34801561039157600080fd5b5061039a610bc3565b005b3480156103a857600080fd5b506103bc6103b7366004614d60565b610c36565b60405190151581526020015b60405180910390f35b3480156103dd57600080fd5b506101c7546103bc90600160b01b900460ff1681565b3480156103ff57600080fd5b506101c6546103bc9060ff1681565b34801561041a57600080fd5b50610423610c6d565b6040516103c89190614de2565b34801561043c57600080fd5b506103bc61044b366004614e0a565b610cff565b34801561045c57600080fd5b5061047061046b366004614eed565b610d17565b6040516001600160e01b031990911681526020016103c8565b34801561049557600080fd5b506067545b6040519081526020016103c8565b3480156104b457600080fd5b506104f36104c3366004614f59565b6101cb6020526000908152604090205465ffffffffffff811690660100000000000090046001600160a01b031682565b6040805165ffffffffffff90931683526001600160a01b039091166020830152016103c8565b34801561052557600080fd5b506101c35461053a906001600160a01b031681565b6040516001600160a01b0390911681526020016103c8565b34801561055e57600080fd5b506103bc61056d366004614f72565b610d28565b34801561057e57600080fd5b50610587610d4e565b6040516103c89190614fb3565b3480156105a057600080fd5b506101c7546103bc90600160b81b900460ff1681565b61049a6105c436600461505a565b610de9565b3480156105d557600080fd5b50604051601281526020016103c8565b3480156105f157600080fd5b5061049a6101c55481565b34801561060857600080fd5b506103bc610617366004614e0a565b611017565b34801561062857600080fd5b5061049a610637366004614f59565b60009081526101cc602052604090205490565b34801561065657600080fd5b506101c7546103bc90600160a81b900460ff1681565b34801561067857600080fd5b5061049a610687366004614f59565b611056565b34801561069857600080fd5b506101c65461053a9061010090046001600160a01b031681565b3480156106be57600080fd5b506103bc6106cd366004614f59565b611064565b3480156106de57600080fd5b5061039a6106ed3660046150d6565b611072565b3480156106fe57600080fd5b50604080518082019091526006815265076332e302e360d41b6020820152610423565b34801561072d57600080fd5b5061053a61073c366004615163565b61115d565b34801561074d57600080fd5b506103bc61075c3660046151af565b6112eb565b34801561076d57600080fd5b5061039a611310565b34801561078257600080fd5b5061049a610791366004615222565b611427565b61049a6107a436600461523f565b61144f565b3480156107b557600080fd5b506101c7546103bc90600160a01b900460ff1681565b3480156107d757600080fd5b5061049a6107e6366004615222565b6001600160a01b031660009081526065602052604090205490565b34801561080d57600080fd5b5061039a611542565b34801561082257600080fd5b5061082b611556565b604080519384526020840192909252908201526060016103c8565b34801561085257600080fd5b506033546001600160a01b031661053a565b34801561087057600080fd5b506101c75461053a906001600160a01b031681565b34801561089157600080fd5b506104236115d9565b3480156108a657600080fd5b506108ba6108b53660046152c6565b6115e8565b604080519384526001600160a01b03909216602084015265ffffffffffff16908201526060016103c8565b3480156108f157600080fd5b5061049a610900366004614f59565b6101cd6020526000908152604090205481565b34801561091f57600080fd5b5061039a61092e3660046152e8565b61163e565b34801561093f57600080fd5b506103bc61094e366004614e0a565b61173d565b34801561095f57600080fd5b506103bc61096e366004614e0a565b61179d565b34801561097f57600080fd5b5061053a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109b357600080fd5b5061039a6109c2366004615330565b6117ab565b61049a6109d53660046153c9565b61194b565b3480156109e657600080fd5b5061049a6109f5366004614f59565b611bd4565b348015610a0657600080fd5b50610470610a15366004615516565b63bc197c8160e01b95945050505050565b348015610a3257600080fd5b5061039a611bee565b348015610a4757600080fd5b5061039a610a563660046155c4565b611c00565b348015610a6757600080fd5b5061039a610a76366004615222565b611c86565b348015610a8757600080fd5b506101c45461053a906001600160a01b031681565b348015610aa857600080fd5b5061049a610ab7366004614e0a565b611cf8565b348015610ac857600080fd5b5061049a610ad73660046155f0565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b348015610b0e57600080fd5b5061039a610b1d366004615629565b611d2d565b348015610b2e57600080fd5b5061039a610b3d366004615695565b611da8565b348015610b4e57600080fd5b5061049a61216b565b348015610b6357600080fd5b506103bc610b7236600461573e565b61217d565b348015610b8357600080fd5b50610470610b92366004615773565b63f23a6e6160e01b95945050505050565b348015610baf57600080fd5b5061039a610bbe366004615222565b612223565b610bcb61225b565b6101c4546101c5546040516360c1795960e11b81526001600160a01b039092169163c182f2b291610c029160040190815260200190565b600060405180830381600087803b158015610c1c57600080fd5b505af1158015610c30573d6000803e3d6000fd5b50505050565b60006001600160e01b03198216630271189760e51b1480610c6757506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060688054610c7c906157dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca8906157dc565b8015610cf55780601f10610cca57610100808354040283529160200191610cf5565b820191906000526020600020905b815481529060010190602001808311610cd857829003601f168201915b5050505050905090565b600033610d0d8185856122cd565b5060019392505050565b630a85bd0160e11b5b949350505050565b600033610d3685828561237d565b610d418585856123da565b60019150505b9392505050565b60606000610d5d6101c86124cf565b905060008167ffffffffffffffff811115610d7a57610d7a614e36565b604051908082528060200260200182016040528015610da3578160200160208202803683370190505b50905060005b82811015610de257610dbd6101c8826124d9565b828281518110610dcf57610dcf615810565b6020908102919091010152600101610da9565b5092915050565b6000610df36124e5565b610dfd600261253e565b6101c754600160b01b900460ff16610e285760405163032aa90b60e41b815260040160405180910390fd5b60008415610e56573415610e4f5760405163203e5c3360e01b815260040160405180910390fd5b5083610e59565b50345b600087610e7733610e7283670de0b6b3a764000061583c565b6125e1565b6000610e81611556565b509150610e909050828261583c565b6101c4549093506001600160a01b03169150600090508580610f1757506040516306df336560e51b81523360048201526001600160a01b0383169063dbe66ca090602401602060405180830381865afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f15919061585b565b155b90506000806000610f6a8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8761269f565b92509250925089831115610f915760405163725214ff60e11b815260040160405180910390fd5b610faf876000341186610fa5576000610fa7565b885b868686612b5d565b97503415610fc157610fc134896130b0565b7fddf3c6319e89d061b877ebc529b0fd59410499b5bf683cffa46d5807dd13c6008e8e8e604051610ff4939291906158ae565b60405180910390a15050505050505061100d600160c955565b9695505050505050565b3360008181526066602090815260408083206001600160a01b0387168452909152812054909190610d0d90829086906110519087906158db565b6122cd565b6000610c676101c8836124d9565b6000610c676101c8836130ce565b61107a61225b565b6101c7805461ffff60a81b1916600160a81b85151590810260ff60b01b191691909117600160b01b851515021760ff60b81b1916600160b81b84151502179091556040519081527fc604be2f834727754dc1ec1225c14d1ecde48e7d12fa7b745dfb137a3db998bd9060200160405180910390a160405182151581527f9cb1d0c0b8d946b3eb09abb16f0a2546f919a9bff8ced6d73c2a1a36a4ff95219060200160405180910390a160405181151581527f8f4dc19a0a35d805af4e9053cf101831ab5200b9b57fd5c953cee436833b892b9060200160405180910390a1505050565b600061116761225b565b6101c7546001600160a01b031615611192576040516344a30fbf60e01b815260040160405180910390fd5b6101c45460408051630a63bfd560e11b815290516000926001600160a01b0316916314c77faa9160048083019260209291908290030181865afa1580156111dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120191906158f3565b90506000816001600160a01b031663576ff9088787876040518463ffffffff1660e01b815260040161123593929190615939565b6020604051808303816000875af1158015611254573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127891906158f3565b6101c7805474ffffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040805189815260208101929092529192507fe14c63b3d4272158635bee1d1b95b51bb8de042ee95a15cbfaf2865b4d0af811910160405180910390a195945050505050565b60006112f7600461253e565b61130486868686866130e6565b90505b95945050505050565b61131861225b565b6c447e69651d841bd8d104bed4936001600160a01b03166330ff31406101c460009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac91906158f3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152600160448201526064016020604051808303816000875af1158015611400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114249190615953565b50565b60006001600160a01b0382163014611440576000610c67565b606754610c679060001961596c565b60006114596124e5565b611463600161253e565b6101c754600160a81b900460ff1661148e5760405163af79b43760e01b815260040160405180910390fd5b600061149d8489898989613251565b90506114b181670de0b6b3a764000061583c565b91506114bd83836135d4565b60006114c7611556565b50509050600082826114d9919061583c565b905060006114e78234613666565b90506114f334826130b0565b7ff03937e99971e84e889dea1d728cb1c06a82314f012c0d203598c3d30fff4bd98b8b8b8b8a8c60405161152c96959493929190615983565b60405180910390a15050505061100d600160c955565b61154a6138c1565b61155460006138ec565b565b6101c4546101c554604051632206137960e01b81526004810191909152600091829182916001600160a01b031690632206137990602401606060405180830381865afa1580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce91906159d1565b925092509250909192565b606060698054610c7c906157dc565b6101cc602052816000526040600020818154811061160557600080fd5b6000918252602090912060029091020180546001909101549092506001600160a01b0381169150600160a01b900465ffffffffffff1683565b6116466138c1565b6000670de0b6b3a764000061165a60675490565b61166491906159ff565b905060048111156116885760405163d6ce581160e01b815260040160405180910390fd5b6116d3838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506101c4548892506001600160a01b0316905061269f565b50506101c354604080516001600160a01b03928316815260208101859052918716908201527f1f6d756c685d4969a551099165b59f836b4d2cc7e036e623f0248c28bff91db5915060600160405180910390a150506101c380546001600160a01b03191690555050565b3360008181526066602090815260408083206001600160a01b0387168452909152812054909190838110156117855760405163189dd6af60e31b815260040160405180910390fd5b61179282868684036122cd565b506001949350505050565b600033610d0d8185856123da565b6117b36138c1565b6101c3546001600160a01b03908116908616036117e3576040516309cef98160e01b815260040160405180910390fd5b60008660028111156117f7576117f7615a21565b03611883576040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118679190615953565b905061187d6001600160a01b038716338361393e565b50611943565b600186600281111561189757611897615a21565b036118da578260005b818110156118d3576118cb87338888858181106118bf576118bf615810565b90506020020135613990565b6001016118a0565b5050611943565b604051631759616b60e11b81526001600160a01b03861690632eb2c2d69061191090309033908990899089908990600401615a37565b600060405180830381600087803b15801561192a57600080fd5b505af115801561193e573d6000803e3d6000fd5b505050505b505050505050565b60006119556124e5565b61195f600361253e565b6101c754600160b81b900460ff1661198a57604051630527cf7960e11b815260040160405180910390fd5b6101c65460009060ff1615611a13578a60005b81811015611a0c578b8b828181106119b7576119b7615810565b905060200201356000036119de5760405163c4c8a67760e01b815260040160405180910390fd5b8b8b828181106119f0576119f0615810565b9050602002013583611a0291906158db565b925060010161199d565b5050611a16565b50895b808714611a36576040516322d2bba960e21b815260040160405180910390fd5b506000611a41611556565b925060009150611a539050888361583c565b6101c4549091506001600160a01b031660008580611ad657506040516306df336560e51b81523360048201526001600160a01b0383169063dbe66ca090602401602060405180830381865afa158015611ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad4919061585b565b155b90506000806000611b1d8e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f925089915061269f9050565b92509250925089831115611b445760405163725214ff60e11b815260040160405180910390fd5b611b5634600186610fa5576000610fa7565b975050505050505050611b6c858c8c8c8c613251565b50611b7734826130b0565b7fc7f0d2d89a4f78b0df43fe593f76318f25e022d249bef3e8eb923d1b168c4faf8b8b8b8b8b8b8a8c604051611bb4989796959493929190615a96565b60405180910390a1611bc6600160c955565b9a9950505050505050505050565b6101c454600090610de2906001600160a01b031683613b71565b611bf661225b565b6115546000611c86565b611c0861225b565b6101c4546101c554604051639814f40f60e01b815260048101919091526024810185905260448101849052606481018390526001600160a01b0390911690639814f40f90608401600060405180830381600087803b158015611c6957600080fd5b505af1158015611c7d573d6000803e3d6000fd5b50505050505050565b611c8e61225b565b6101c6805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038416908102919091179091556040519081527f60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa699060200160405180910390a150565b60006001600160a01b0383163014611d2357604051635079ff7560e11b815260040160405180910390fd5b610d478383613e25565b611d3561225b565b610c3084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f88018190048102820181019092528681529250869150859081908401838280828437600092019190915250613e7992505050565b600054610100900460ff1615808015611dc85750600054600160ff909116105b80611de25750303b158015611de2575060005460ff166001145b611e4a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611e6d576000805461ff0019166101001790555b611e75613ed0565b611ee888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250613eff92505050565b6001600160a01b038416611f0f5760405163d92e233d60e01b815260040160405180910390fd5b6101c380546001600160a01b03199081166001600160a01b038716179091556101c4805433921682179055604080516304c94c4160e31b8152905163264a6208916004808201926020929091908290030181865afa158015611f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f999190615953565b6101c58190556101c6805460ff19168515159081179091556101c7805460ff60a01b1916600160a01b86151590810291909117909155604080516001600160a01b038916815260208101939093528201527f18ecce5c418b882a3d89e5b6cc8100dc3383309b8e78525266fe1283a7f934d69060600160405180910390a26120246001806001611072565b6c447e69651d841bd8d104bed4936001600160a01b03166330ff3140336001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a291906158f3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152600160448201526064016020604051808303816000875af11580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211a9190615953565b508015612161576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b60006121786101c86124cf565b905090565b6101c754600090600160a01b900460ff161561219b57506001919050565b6101c7546001600160a01b0316806121b65750600092915050565b6040516384ca9f8560e01b81526001600160a01b038216906384ca9f85906121e2908690600401614fb3565b602060405180830381865afa1580156121ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d47919061585b565b61222b6138c1565b6001600160a01b03811661225257604051633a247dd760e11b815260040160405180910390fd5b611424816138ec565b6101c65461010090046001600160a01b031661229c576033546001600160a01b03163314611554576040516330cd747160e01b815260040160405180910390fd5b6101c65461010090046001600160a01b031633146115545760405163607e454560e11b815260040160405180910390fd5b6001600160a01b0383166122f45760405163eb3b083560e01b815260040160405180910390fd5b6001600160a01b03821661231b5760405163076e33c360e31b815260040160405180910390fd5b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152606660209081526040808320938616835292905220546000198114610c3057818110156123cd576040516313be252b60e01b815260040160405180910390fd5b610c3084848484036122cd565b6001600160a01b03831661240157604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b03821661242857604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b0383166000908152606560205260409020548181101561246257604051635dd58b8b60e01b815260040160405180910390fd5b6001600160a01b0380851660008181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c29086815260200190565b60405180910390a3610c30565b6000610c67825490565b6000610d478383613f30565b600260c954036125375760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611e41565b600260c955565b6101c45460405163f6aacfb160e01b8152600481018390526001600160a01b039091169063f6aacfb190602401602060405180830381865afa158015612588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ac919061585b565b80156125c357506033546001600160a01b03163314155b15611424576040516313d0ff5960e31b815260040160405180910390fd5b6001600160a01b0382166126085760405163b817eee760e01b815260040160405180910390fd5b6001600160a01b0382166000908152606560205260409020548181101561264257604051630bba337f60e11b815260040160405180910390fd5b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612370565b505050565b6101c6546101c354604080516368d052e960e01b81529051600093606093849360ff909216926001600160a01b039182169287928916916368d052e9916004808201926020929091908290030181865afa158015612701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127259190615953565b90506000876001600160a01b0316631362ba226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278b9190615953565b9050895167ffffffffffffffff8111156127a7576127a7614e36565b6040519080825280602002602001820160405280156127d0578160200160208202803683370190505b509550895167ffffffffffffffff8111156127ed576127ed614e36565b604051908082528060200260200182016040528015612816578160200160208202803683370190505b508a5190955060005b81811015612b455760008c828151811061283b5761283b615810565b602002602001015190508615612a5a5760008181526101ca60205260408120549081900361287c57604051631820c31160e31b815260040160405180910390fd5b61288760018261596c565b60008381526101ca602052604090205560018190036128c9576128ac6101c883613f5a565b6128c957604051634f213e5760e01b815260040160405180910390fd5b50604051637921219560e11b81523060048201526001600160a01b038d81166024830152604482018390526001606483015260a06084830152600060a483015287169063f242432a9060c401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b50505060008281526101cd60209081526040808320546101cc90925282208054919350908390811061297757612977615810565b60009182526020909120600290910201805490915061299760018261596c565b825560018190036129be576129ad8360016158db565b60008581526101cd60205260409020555b60018201546000906129e090600160a01b900465ffffffffffff168a8a613f66565b90506129ec818f6158db565b9d50808d8781518110612a0157612a01615810565b602090810291909101015260018301548c516001600160a01b03909116908d9088908110612a3157612a31615810565b60200260200101906001600160a01b031690816001600160a01b03168152505050505050612b3c565b60008181526101cb6020908152604080832081518083019092525465ffffffffffff811680835266010000000000009091046001600160a01b0316928201929092529190612aa9908888613f66565b9050612ab5818d6158db565b9b50808b8581518110612aca57612aca615810565b60200260200101818152505081602001518a8581518110612aed57612aed615810565b6001600160a01b0390921660209283029190910190910152612b116101c884613f5a565b612b2e57604051634f213e5760e01b815260040160405180910390fd5b612b39888f85613990565b50505b5060010161281f565b50612b4f8b613f7b565b505050505093509350939050565b600080600080871180612b705750600086115b156130a4576101c454612b94906001600160a01b0316670de0b6b3a7640000613b71565b909250905081156130a4576000670de0b6b3a7640000612bb4848a61583c565b612bbe91906159ff565b90506000808815612c8057670de0b6b3a7640000612bdc868b61583c565b612be691906159ff565b9150670de0b6b3a76400006101c460009054906101000a90046001600160a01b03166001600160a01b031663f3746ca96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c699190615953565b612c73908461583c565b612c7d91906159ff565b90505b612c8a82846158db565b9550858c1015612cad5760405163311c9fd160e01b815260040160405180910390fd5b8a15612d2c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d0e57600080fd5b505af1158015612d22573d6000803e3d6000fd5b5050505050612dc5565b6040516323b872dd60e01b8152336004820152306024820152604481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc3919061585b565b505b8751600090815b81811015612f655760008b8281518110612de857612de8615810565b60200260200101511115612f5d5760008c8c8381518110612e0b57612e0b615810565b602002602001015186612e1e919061583c565b612e2891906159ff565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb8c8481518110612e6b57612e6b615810565b6020026020010151836040518363ffffffff1660e01b8152600401612ea59291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015612ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee8919061585b565b50612ef381856158db565b93507f6145d458e7bea9ad415c7534924b89223228b66d9db99bd80f9889d213da059c8b8381518110612f2857612f28615810565b602002602001015182604051612f539291906001600160a01b03929092168252602082015260400190565b60405180910390a1505b600101612dcc565b506000612f72838a61596c565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015612fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300a919061585b565b506040518181527f8959421a1320789a49eeec01a4750caf8a30733c3db14f000d84484df89300f99060200160405180910390a16101c5546040516391c05b0b60e01b815260048101919091526001600160a01b038816906391c05b0b90602401600060405180830381600087803b15801561308557600080fd5b505af1158015613099573d6000803e3d6000fd5b505050505050505050505b50509695505050505050565b60006130bc828461596c565b9050801561269a5761269a3382613feb565b60008181526001830160205260408120541515610d47565b60006130f185611427565b84111561311157604051631b8e3c7960e11b815260040160405180910390fd5b600061311d8686611cf8565b905061312987866135d4565b6040516323e30c8b60e01b81527f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9906001600160a01b038916906323e30c8b906131819033908b908b9088908c908c90600401615afb565b6020604051808303816000875af11580156131a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c49190615953565b146131e2576040516303a6a98b60e41b815260040160405180910390fd5b60006131ec61405f565b905061320288306131fd858a6158db565b61237d565b81158061321657506001600160a01b038116155b1561322e5761322988610e7284896158db565b613243565b61323888876125e1565b6132438882846123da565b506001979650505050505050565b600061328f85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061217d92505050565b6132ac57604051637c75aa6f60e11b815260040160405180910390fd5b6101c65460ff166133a7576101c3546001600160a01b03168460005b8181101561339d5760008888838181106132e4576132e4615810565b9050602002013590506132f7848261412f565b6133036101c88261448f565b61332057604051634f213e5760e01b815260040160405180910390fd5b60408051808201825265ffffffffffff42811682526001600160a01b03808e16602080850191825260009687526101cb9052939094209151825493519094166601000000000000027fffffffffffff00000000000000000000000000000000000000000000000000009093169316929092171790556001016132c8565b5091506113079050565b6101c354604051631759616b60e11b81526001600160a01b0390911690632eb2c2d6906133e290339030908a908a908a908a90600401615a37565b600060405180830381600087803b1580156133fc57600080fd5b505af1158015613410573d6000803e3d6000fd5b50600092508691508290505b818110156135c957600088888381811061343857613438615810565b905060200201359050600087878481811061345557613455615810565b9050602002013590508060000361347f5760405163c4c8a67760e01b815260040160405180910390fd5b60008281526101ca602052604081205490036134be576134a16101c88361448f565b6134be57604051634f213e5760e01b815260040160405180910390fd5b60008281526101ca6020526040812080548392906134dd9084906158db565b909155506134ed905081866158db565b94506101cc600083815260200190815260200160002060405180606001604052808381526020018d6001600160a01b031681526020014265ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505050826001019250505061341c565b508192505050611307565b6001600160a01b0382166135fa57604051622e076360e81b815260040160405180910390fd5b806067600082825461360c91906158db565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b5050565b6101c4546040516306df336560e51b81523360048201526000916001600160a01b031690819063dbe66ca090602401602060405180830381865afa1580156136b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d6919061585b565b156136e5576000915050610c67565b60006136f18286613b71565b909350905082156138b9578284101561371d5760405163311c9fd160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561377857600080fd5b505af115801561378c573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038581166004830152602482018890527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015613801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613825919061585b565b506040518381527f8959421a1320789a49eeec01a4750caf8a30733c3db14f000d84484df89300f99060200160405180910390a16101c5546040516391c05b0b60e01b815260048101919091526001600160a01b038216906391c05b0b90602401600060405180830381600087803b1580156138a057600080fd5b505af11580156138b4573d6000803e3d6000fd5b505050505b505092915050565b6033546001600160a01b0316331461155457604051633e8be92f60e01b815260040160405180910390fd5b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261269a90849061449b565b60606001600160a01b03841673b47e3cd837ddf8e4c57f05d70ab865de6e193bbb148015906139dc57506001600160a01b0384167306012c8cf97bead5deae237070f9587f8e7a266d14155b15613a34576040513060248201526001600160a01b03841660448201526064810183905260840160408051601f198184030181529190526020810180516001600160e01b0316632142170760e11b1790529050613aef565b73b47e3cd837ddf8e4c57f05d70ab865de6e193bba196001600160a01b03851601613aa6576040516001600160a01b03841660248201526044810183905260640160408051601f198184030181529190526020810180516001600160e01b03166322dca8bb60e21b1790529050613aef565b6040516001600160a01b03841660248201526044810183905260640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b17905290505b600080856001600160a01b031683604051613b0a9190615b40565b6000604051808303816000865af19150503d8060008114613b47576040519150601f19603f3d011682016040523d82523d6000602084013e613b4c565b606091505b5091509150818190611c7d5760405162461bcd60e51b8152600401611e419190614de2565b600080836001600160a01b0316630d43e8ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd691906158f3565b90506000816001600160a01b0316631eae8f916040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3c91906158f3565b9050600080826001600160a01b0316632a9c99e930866001600160a01b03166334c53b896040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb39190615b5c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015262ffffff1660248201526044016040805180830381865afa158015613d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d249190615b81565b9150915080613d395760009450505050613e1e565b6101c45460405163d444a47d60e01b81526001600160a01b038481166004830152600092169063d444a47d90602401602060405180830381865afa158015613d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da99190615953565b905080600003613dc0576000955050505050613e1e565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301015613e0757613e008782600160601b61456d565b9550613e19565b613e1687600160601b8361456d565b95505b505050505b9250929050565b600080600080613e33611556565b919450925090508280831115613e465750815b80821115613e515750805b670de0b6b3a7640000613e64828861583c565b613e6e91906159ff565b979650505050505050565b6068613e858382615bf6565b506069613e928282615bf6565b507f30f5c4b652f95e2a697bda3258896c421eee4f29adce8fe38060f47f7aed91ad8282604051613ec4929190615cb6565b60405180910390a15050565b600054610100900460ff16613ef75760405162461bcd60e51b8152600401611e4190615cdb565b61155461461f565b600054610100900460ff16613f265760405162461bcd60e51b8152600401611e4190615cdb565b613662828261464f565b6000826000018281548110613f4757613f47615810565b9060005260206000200154905092915050565b6000610d47838361468f565b6000610d208465ffffffffffff168484614782565b6101c7546001600160a01b031680613f91575050565b604051632f17cda960e11b81526001600160a01b03821690635e2f9b5290613fbd908590600401614fb3565b600060405180830381600087803b158015613fd757600080fd5b505af1158015611943573d6000803e3d6000fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614038576040519150601f19603f3d011682016040523d82523d6000602084013e61403d565b606091505b505090508061269a5760405163260e7d5b60e11b815260040160405180910390fd5b6101c45460408051630d43e8ad60e01b815290516000926001600160a01b031691630d43e8ad9160048083019260209291908290030181865afa1580156140aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ce91906158f3565b6001600160a01b03166374a1b0b06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561410b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217891906158f3565b60606001600160a01b03831673b47e3cd837ddf8e4c57f05d70ab865de6e193bbb1480159061417b57506001600160a01b0383167306012c8cf97bead5deae237070f9587f8e7a266d14155b15614270576101c3546040516331a9108f60e11b81526004810184905230916001600160a01b031690636352211e90602401602060405180830381865afa1580156141ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ee91906158f3565b6001600160a01b031603614226576142086101c8836130ce565b1561269a57604051631d1a087d60e31b815260040160405180910390fd5b6040513360248201523060448201526064810183905260840160408051601f198184030181529190526020810180516001600160e01b0316632142170760e11b179052905061440d565b73b47e3cd837ddf8e4c57f05d70ab865de6e193bba196001600160a01b038416016143c7576000826040516024016142aa91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316630b02f02d60e31b1790525190915060009081906001600160a01b038716906142f3908590615b40565b600060405180830381855afa9150503d806000811461432e576040519150601f19603f3d011682016040523d82523d6000602084013e614333565b606091505b509150915060008180602001905181019061434e91906158f3565b905082158061436657506001600160a01b0381163314155b1561438457604051631022318760e21b815260040160405180910390fd5b6040516024810187905260440160408051601f198184030181529190526020810180516001600160e01b031663104c9fd360e31b179052945061440d9350505050565b6040513360248201523060448201526064810183905260840160408051601f198184030181529190526020810180516001600160e01b03166323b872dd60e01b17905290505b600080846001600160a01b0316836040516144289190615b40565b6000604051808303816000865af19150503d8060008114614465576040519150601f19603f3d011682016040523d82523d6000602084013e61446a565b606091505b50915091508181906119435760405162461bcd60e51b8152600401611e419190614de2565b6000610d4783836147da565b60006144f0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148299092919063ffffffff16565b80519091501561269a578080602001905181019061450e919061585b565b61269a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611e41565b60008080600019858709858702925082811083820303915050806000036145a6576000841161459b57600080fd5b508290049050610d47565b8084116145b257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600054610100900460ff166146465760405162461bcd60e51b8152600401611e4190615cdb565b611554336138ec565b600054610100900460ff166146765760405162461bcd60e51b8152600401611e4190615cdb565b60686146828382615bf6565b50606961269a8282615bf6565b600081815260018301602052604081205480156147785760006146b360018361596c565b85549091506000906146c79060019061596c565b905081811461472c5760008660000182815481106146e7576146e7615810565b906000526020600020015490508087600001848154811061470a5761470a615810565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061473d5761473d615d26565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c67565b6000915050610c67565b60008061478f854261596c565b9050600061479d8583614838565b905060006147ad610e10866159ff565b86901c90508082106147cd576147c3818361596c565b9350505050610d47565b5060009695505050505050565b600081815260018301602052604081205461482157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c67565b506000610c67565b6060610d2084846000856148d2565b600080610e10614850670de0b6b3a76400008561583c565b61485a91906159ff565b90506000614870670de0b6b3a7640000836159ff565b905084811c6000614889670de0b6b3a76400008461583c565b614893908561596c565b90506000670de0b6b3a76400006148ad836201000061583c565b6148b791906159ff565b905060006148c582856149a2565b9998505050505050505050565b6060824710156149335760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611e41565b600080866001600160a01b0316858760405161494f9190615b40565b60006040518083038185875af1925050503d806000811461498c576040519150601f19603f3d011682016040523d82523d6000602084013e614991565b606091505b5091509150613e6e87838387614cc2565b600060018316156149d557670de0b6b3a76400006149c8670de0ad151d0941808461583c565b6149d291906159ff565b91505b6002831615614a0657670de0b6b3a76400006149f9670de0a376995968008461583c565b614a0391906159ff565b91505b6004831615614a3757670de0b6b3a7640000614a2a670de09039a5fa51008461583c565b614a3491906159ff565b91505b6008831615614a6857670de0b6b3a7640000614a5b670de069c00f3e12008461583c565b614a6591906159ff565b91505b6010831615614a9957670de0b6b3a7640000614a8c670de01cce21c944008461583c565b614a9691906159ff565b91505b6020831615614aca57670de0b6b3a7640000614abd670ddf82ef46ce10008461583c565b614ac791906159ff565b91505b6040831615614afb57670de0b6b3a7640000614aee670dde4f458f8e8d808461583c565b614af891906159ff565b91505b6080831615614b2c57670de0b6b3a7640000614b1f670ddbe84213d5f0808461583c565b614b2991906159ff565b91505b610100831615614b5e57670de0b6b3a7640000614b51670dd71b7aa6df5b808461583c565b614b5b91906159ff565b91505b610200831615614b9057670de0b6b3a7640000614b83670dcd86e7f28cde008461583c565b614b8d91906159ff565b91505b610400831615614bc257670de0b6b3a7640000614bb5670dba71a3084ad6808461583c565b614bbf91906159ff565b91505b610800831615614bf457670de0b6b3a7640000614be7670d94961b13dbde808461583c565b614bf191906159ff565b91505b611000831615614c2657670de0b6b3a7640000614c19670d4a171c35c983808461583c565b614c2391906159ff565b91505b612000831615614c5857670de0b6b3a7640000614c4b670cb9da519ccfb7008461583c565b614c5591906159ff565b91505b614000831615614c8a57670de0b6b3a7640000614c7d670bab76d59c18d6808461583c565b614c8791906159ff565b91505b618000831615614cbc57670de0b6b3a7640000614caf6709d025defee4df808461583c565b614cb991906159ff565b91505b50919050565b60608315614d31578251600003614d2a576001600160a01b0385163b614d2a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611e41565b5081610d20565b610d208383815115614d465781518083602001fd5b8060405162461bcd60e51b8152600401611e419190614de2565b600060208284031215614d7257600080fd5b81356001600160e01b031981168114610d4757600080fd5b60005b83811015614da5578181015183820152602001614d8d565b83811115610c305750506000910152565b60008151808452614dce816020860160208601614d8a565b601f01601f19169290920160200192915050565b602081526000610d476020830184614db6565b6001600160a01b038116811461142457600080fd5b60008060408385031215614e1d57600080fd5b8235614e2881614df5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614e7557614e75614e36565b604052919050565b600082601f830112614e8e57600080fd5b813567ffffffffffffffff811115614ea857614ea8614e36565b614ebb601f8201601f1916602001614e4c565b818152846020838601011115614ed057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614f0357600080fd5b8435614f0e81614df5565b93506020850135614f1e81614df5565b925060408501359150606085013567ffffffffffffffff811115614f4157600080fd5b614f4d87828801614e7d565b91505092959194509250565b600060208284031215614f6b57600080fd5b5035919050565b600080600060608486031215614f8757600080fd5b8335614f9281614df5565b92506020840135614fa281614df5565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015614feb57835183529284019291840191600101614fcf565b50909695505050505050565b60008083601f84011261500957600080fd5b50813567ffffffffffffffff81111561502157600080fd5b6020830191508360208260051b8501011115613e1e57600080fd5b801515811461142457600080fd5b80356150558161503c565b919050565b60008060008060008060a0878903121561507357600080fd5b863567ffffffffffffffff81111561508a57600080fd5b61509689828a01614ff7565b90975095505060208701356150aa81614df5565b9350604087013592506060870135915060808701356150c88161503c565b809150509295509295509295565b6000806000606084860312156150eb57600080fd5b83356150f68161503c565b925060208401356151068161503c565b915060408401356151168161503c565b809150509250925092565b60008083601f84011261513357600080fd5b50813567ffffffffffffffff81111561514b57600080fd5b602083019150836020828501011115613e1e57600080fd5b60008060006040848603121561517857600080fd5b83359250602084013567ffffffffffffffff81111561519657600080fd5b6151a286828701615121565b9497909650939450505050565b6000806000806000608086880312156151c757600080fd5b85356151d281614df5565b945060208601356151e281614df5565b935060408601359250606086013567ffffffffffffffff81111561520557600080fd5b61521188828901615121565b969995985093965092949392505050565b60006020828403121561523457600080fd5b8135610d4781614df5565b6000806000806000806080878903121561525857600080fd5b863567ffffffffffffffff8082111561527057600080fd5b61527c8a838b01614ff7565b9098509650602089013591508082111561529557600080fd5b506152a289828a01614ff7565b90955093505060408701356152b681614df5565b915060608701356150c881614df5565b600080604083850312156152d957600080fd5b50508035926020909101359150565b6000806000604084860312156152fd57600080fd5b833561530881614df5565b9250602084013567ffffffffffffffff81111561532457600080fd5b6151a286828701614ff7565b6000806000806000806080878903121561534957600080fd5b86356003811061535857600080fd5b9550602087013561536881614df5565b9450604087013567ffffffffffffffff8082111561538557600080fd5b6153918a838b01614ff7565b909650945060608901359150808211156153aa57600080fd5b506153b789828a01614ff7565b979a9699509497509295939492505050565b60008060008060008060008060008060e08b8d0312156153e857600080fd5b8a3567ffffffffffffffff8082111561540057600080fd5b61540c8e838f01614ff7565b909c509a5060208d013591508082111561542557600080fd5b6154318e838f01614ff7565b909a50985060408d013591508082111561544a57600080fd5b506154578d828e01614ff7565b90975095505060608b013561546b81614df5565b935060808b013561547b81614df5565b925060a08b0135915061549060c08c0161504a565b90509295989b9194979a5092959850565b600082601f8301126154b257600080fd5b8135602067ffffffffffffffff8211156154ce576154ce614e36565b8160051b6154dd828201614e4c565b92835284810182019282810190878511156154f757600080fd5b83870192505b84831015613e6e578235825291830191908301906154fd565b600080600080600060a0868803121561552e57600080fd5b853561553981614df5565b9450602086013561554981614df5565b9350604086013567ffffffffffffffff8082111561556657600080fd5b61557289838a016154a1565b9450606088013591508082111561558857600080fd5b61559489838a016154a1565b935060808801359150808211156155aa57600080fd5b506155b788828901614e7d565b9150509295509295909350565b6000806000606084860312156155d957600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561560357600080fd5b823561560e81614df5565b9150602083013561561e81614df5565b809150509250929050565b6000806000806040858703121561563f57600080fd5b843567ffffffffffffffff8082111561565757600080fd5b61566388838901615121565b9096509450602087013591508082111561567c57600080fd5b5061568987828801615121565b95989497509550505050565b600080600080600080600060a0888a0312156156b057600080fd5b873567ffffffffffffffff808211156156c857600080fd5b6156d48b838c01615121565b909950975060208a01359150808211156156ed57600080fd5b506156fa8a828b01615121565b909650945050604088013561570e81614df5565b9250606088013561571e8161503c565b9150608088013561572e8161503c565b8091505092959891949750929550565b60006020828403121561575057600080fd5b813567ffffffffffffffff81111561576757600080fd5b610d20848285016154a1565b600080600080600060a0868803121561578b57600080fd5b853561579681614df5565b945060208601356157a681614df5565b93506040860135925060608601359150608086013567ffffffffffffffff8111156157d057600080fd5b6155b788828901614e7d565b600181811c908216806157f057607f821691505b602082108103614cbc57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561585657615856615826565b500290565b60006020828403121561586d57600080fd5b8151610d478161503c565b81835260006001600160fb1b0383111561589157600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040815260006158c2604083018587615878565b90506001600160a01b0383166020830152949350505050565b600082198211156158ee576158ee615826565b500190565b60006020828403121561590557600080fd5b8151610d4781614df5565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000611307604083018486615910565b60006020828403121561596557600080fd5b5051919050565b60008282101561597e5761597e615826565b500390565b60808152600061599760808301888a615878565b82810360208401526159aa818789615878565b9150506001600160a01b038085166040840152808416606084015250979650505050505050565b6000806000606084860312156159e657600080fd5b8351925060208401519150604084015190509250925092565b600082615a1c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b60006001600160a01b03808916835280881660208401525060a06040830152615a6460a083018688615878565b8281036060840152615a77818587615878565b8381036080909401939093525050600081526020019695505050505050565b60a081526000615aaa60a083018a8c615878565b8281036020840152615abd81898b615878565b90508281036040840152615ad2818789615878565b9150506001600160a01b0380851660608401528084166080840152509998505050505050505050565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a06080830152615b3460a083018486615910565b98975050505050505050565b60008251615b52818460208701614d8a565b9190910192915050565b600060208284031215615b6e57600080fd5b815162ffffff81168114610d4757600080fd5b60008060408385031215615b9457600080fd5b8251615b9f81614df5565b602084015190925061561e8161503c565b601f82111561269a57600081815260208120601f850160051c81016020861015615bd75750805b601f850160051c820191505b8181101561194357828155600101615be3565b815167ffffffffffffffff811115615c1057615c10614e36565b615c2481615c1e84546157dc565b84615bb0565b602080601f831160018114615c595760008415615c415750858301515b600019600386901b1c1916600185901b178555611943565b600085815260208120601f198616915b82811015615c8857888601518255948401946001909101908401615c69565b5085821015615ca65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000615cc96040830185614db6565b82810360208401526113078185614db6565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fdfea164736f6c634300080f000a000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2