[ { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "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": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "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": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "allowedDelegateRegistry", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "spaceId", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "delegate", "type": "address" } ], "name": "OffChainVotingDelegation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "delegate", "type": "address" } ], "name": "OnChainVotingDelegation", "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": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "TransferOwnership", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "auctionParams", "outputs": [ { "internalType": "uint256", "name": "relStrike", "type": "uint256" }, { "internalType": "uint256", "name": "tenor", "type": "uint256" }, { "internalType": "uint256", "name": "earliestExerciseTenor", "type": "uint256" }, { "internalType": "uint256", "name": "relPremiumStart", "type": "uint256" }, { "internalType": "uint256", "name": "relPremiumFloor", "type": "uint256" }, { "internalType": "uint256", "name": "decayDuration", "type": "uint256" }, { "internalType": "uint256", "name": "minSpot", "type": "uint256" }, { "internalType": "uint256", "name": "maxSpot", "type": "uint256" }, { "internalType": "uint256", "name": "decayStartTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "borrowedUnderlyingAmounts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currAsk", "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": "exerciseFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "relBid", "type": "uint256" }, { "internalType": "address", "name": "optionReceiver", "type": "address" }, { "internalType": "uint256", "name": "_refSpot", "type": "uint256" }, { "internalType": "bytes[]", "name": "_oracleData", "type": "bytes[]" }, { "internalType": "address", "name": "distPartner", "type": "address" } ], "name": "handleAuctionBid", "outputs": [ { "components": [ { "internalType": "enum DataTypes.BidStatus", "name": "status", "type": "uint8" }, { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "address", "name": "underlyingToken", "type": "address" }, { "internalType": "uint256", "name": "strike", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint256", "name": "earliestExercise", "type": "uint256" }, { "internalType": "uint256", "name": "premium", "type": "uint256" }, { "internalType": "address", "name": "premiumToken", "type": "address" }, { "internalType": "uint256", "name": "protocolFee", "type": "uint256" }, { "internalType": "uint256", "name": "distPartnerFee", "type": "uint256" }, { "internalType": "uint256", "name": "oracleSpotPrice", "type": "uint256" }, { "internalType": "uint256", "name": "currAsk", "type": "uint256" } ], "internalType": "struct DataTypes.BidPreview", "name": "preview", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "address", "name": "underlyingReceiver", "type": "address" }, { "internalType": "uint256", "name": "underlyingBorrowAmount", "type": "uint256" } ], "name": "handleBorrow", "outputs": [ { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "uint256", "name": "collateralAmount", "type": "uint256" }, { "internalType": "uint256", "name": "collateralFeeAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "exerciser", "type": "address" }, { "internalType": "address", "name": "underlyingReceiver", "type": "address" }, { "internalType": "uint256", "name": "underlyingExerciseAmount", "type": "uint256" }, { "internalType": "bool", "name": "payInSettlementToken", "type": "bool" }, { "internalType": "bytes[]", "name": "oracleData", "type": "bytes[]" } ], "name": "handleExercise", "outputs": [ { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "uint256", "name": "settlementAmount", "type": "uint256" }, { "internalType": "uint256", "name": "exerciseFeeAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "spaceId", "type": "bytes32" }, { "internalType": "address", "name": "delegate", "type": "address" } ], "name": "handleOffChainVoting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegate", "type": "address" } ], "name": "handleOnChainVoting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "address", "name": "collateralReceiver", "type": "address" }, { "internalType": "uint256", "name": "underlyingRepayAmount", "type": "uint256" } ], "name": "handleRepay", "outputs": [ { "internalType": "address", "name": "underlyingToken", "type": "address" }, { "internalType": "uint256", "name": "unlockedCollateralAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "handleWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_exerciseFee", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "underlyingToken", "type": "address" }, { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "uint256", "name": "notional", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "relStrike", "type": "uint256" }, { "internalType": "uint256", "name": "tenor", "type": "uint256" }, { "internalType": "uint256", "name": "earliestExerciseTenor", "type": "uint256" }, { "internalType": "uint256", "name": "relPremiumStart", "type": "uint256" }, { "internalType": "uint256", "name": "relPremiumFloor", "type": "uint256" }, { "internalType": "uint256", "name": "decayDuration", "type": "uint256" }, { "internalType": "uint256", "name": "minSpot", "type": "uint256" }, { "internalType": "uint256", "name": "maxSpot", "type": "uint256" }, { "internalType": "uint256", "name": "decayStartTime", "type": "uint256" } ], "internalType": "struct DataTypes.AuctionParams", "name": "auctionParams", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "borrowCap", "type": "uint256" }, { "internalType": "address", "name": "oracle", "type": "address" }, { "internalType": "bool", "name": "premiumTokenIsUnderlying", "type": "bool" }, { "internalType": "bool", "name": "votingDelegationAllowed", "type": "bool" }, { "internalType": "address", "name": "allowedDelegateRegistry", "type": "address" } ], "internalType": "struct DataTypes.AdvancedSettings", "name": "advancedSettings", "type": "tuple" } ], "internalType": "struct DataTypes.AuctionInitialization", "name": "_auctionInitialization", "type": "tuple" } ], "name": "initializeAuction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "optionReceiver", "type": "address" }, { "internalType": "uint256", "name": "_exerciseFee", "type": "uint256" }, { "components": [ { "components": [ { "internalType": "address", "name": "underlyingToken", "type": "address" }, { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "uint256", "name": "notional", "type": "uint256" }, { "internalType": "uint256", "name": "strike", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint256", "name": "earliestExercise", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "borrowCap", "type": "uint256" }, { "internalType": "address", "name": "oracle", "type": "address" }, { "internalType": "bool", "name": "premiumTokenIsUnderlying", "type": "bool" }, { "internalType": "bool", "name": "votingDelegationAllowed", "type": "bool" }, { "internalType": "address", "name": "allowedDelegateRegistry", "type": "address" } ], "internalType": "struct DataTypes.AdvancedSettings", "name": "advancedSettings", "type": "tuple" } ], "internalType": "struct DataTypes.OptionInfo", "name": "optionInfo", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "premium", "type": "uint256" }, { "internalType": "uint256", "name": "validUntil", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct DataTypes.RFQQuote", "name": "rfqQuote", "type": "tuple" } ], "internalType": "struct DataTypes.RFQInitialization", "name": "_rfqInitialization", "type": "tuple" } ], "name": "initializeRFQMatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isAuction", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "optionInfo", "outputs": [ { "internalType": "address", "name": "underlyingToken", "type": "address" }, { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "uint256", "name": "notional", "type": "uint256" }, { "internalType": "uint256", "name": "strike", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint256", "name": "earliestExercise", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "borrowCap", "type": "uint256" }, { "internalType": "address", "name": "oracle", "type": "address" }, { "internalType": "bool", "name": "premiumTokenIsUnderlying", "type": "bool" }, { "internalType": "bool", "name": "votingDelegationAllowed", "type": "bool" }, { "internalType": "address", "name": "allowedDelegateRegistry", "type": "address" } ], "internalType": "struct DataTypes.AdvancedSettings", "name": "advancedSettings", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "optionMinted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "premiumPaid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "relBid", "type": "uint256" }, { "internalType": "uint256", "name": "_refSpot", "type": "uint256" }, { "internalType": "bytes[]", "name": "_oracleData", "type": "bytes[]" }, { "internalType": "address", "name": "distPartner", "type": "address" } ], "name": "previewBid", "outputs": [ { "components": [ { "internalType": "enum DataTypes.BidStatus", "name": "status", "type": "uint8" }, { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "address", "name": "underlyingToken", "type": "address" }, { "internalType": "uint256", "name": "strike", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint256", "name": "earliestExercise", "type": "uint256" }, { "internalType": "uint256", "name": "premium", "type": "uint256" }, { "internalType": "address", "name": "premiumToken", "type": "address" }, { "internalType": "uint256", "name": "protocolFee", "type": "uint256" }, { "internalType": "uint256", "name": "distPartnerFee", "type": "uint256" }, { "internalType": "uint256", "name": "oracleSpotPrice", "type": "uint256" }, { "internalType": "uint256", "name": "currAsk", "type": "uint256" } ], "internalType": "struct DataTypes.BidPreview", "name": "preview", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rfqInitialization", "outputs": [ { "components": [ { "internalType": "address", "name": "underlyingToken", "type": "address" }, { "internalType": "address", "name": "settlementToken", "type": "address" }, { "internalType": "uint256", "name": "notional", "type": "uint256" }, { "internalType": "uint256", "name": "strike", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint256", "name": "earliestExercise", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "borrowCap", "type": "uint256" }, { "internalType": "address", "name": "oracle", "type": "address" }, { "internalType": "bool", "name": "premiumTokenIsUnderlying", "type": "bool" }, { "internalType": "bool", "name": "votingDelegationAllowed", "type": "bool" }, { "internalType": "address", "name": "allowedDelegateRegistry", "type": "address" } ], "internalType": "struct DataTypes.AdvancedSettings", "name": "advancedSettings", "type": "tuple" } ], "internalType": "struct DataTypes.OptionInfo", "name": "optionInfo", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "premium", "type": "uint256" }, { "internalType": "uint256", "name": "validUntil", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct DataTypes.RFQQuote", "name": "rfqQuote", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "router", "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": "totalBorrowed", "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": "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506040805160208082018352600080835283519182019093529182529060036200003c8382620001ba565b5060046200004b8282620001ba565b50620000599150506200005f565b62000286565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b05760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001105780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200013e57607f821691505b6020821081036200015f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b5576000816000526020600020601f850160051c81016020861015620001905750805b601f850160051c820191505b81811015620001b1578281556001016200019c565b5050505b505050565b81516001600160401b03811115620001d657620001d662000113565b620001ee81620001e7845462000129565b8462000165565b602080601f8311600181146200022657600084156200020d5750858301515b600019600386901b1c1916600185901b178555620001b1565b600085815260208120601f198616915b82811015620002575788860151825594840194600190910190840162000236565b5085821015620002765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6134c880620002966000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637f29f7401161010f578063d0e8dcff116100a2578063f0aa49d211610071578063f0aa49d21461057a578063f2fde38b1461058e578063f4bc3e37146105a1578063f887ea40146105b457600080fd5b8063d0e8dcff1461051d578063d1c699aa14610530578063dd62ed3e14610539578063df1d444e1461057257600080fd5b8063a9059cbb116100de578063a9059cbb146104b6578063b53512f2146104c9578063c17723f9146104e9578063c405c6b0146104fd57600080fd5b80637f29f7401461043e5780638da5cb5b14610470578063952485901461049b57806395d89b41146104ae57600080fd5b806331cd4e62116101875780635b6a251b116101565780635b6a251b146103e65780635c8ad611146103ef578063702221511461040257806370a082311461041557600080fd5b806331cd4e62146103245780634c19386c1461035c57806351b10f1314610365578063568f02f81461037857600080fd5b806323b872dd116101c357806323b872dd1461025d5780632844e1e0146102705780632bb92f7a146102f9578063313ce5671461030f57600080fd5b806306fdde03146101f5578063095ea7b31461021357806318160ddd146102365780631f7e9a6514610248575b600080fd5b6101fd6105c7565b60405161020a9190612632565b60405180910390f35b61022661022136600461265a565b610659565b604051901515815260200161020a565b6002545b60405190815260200161020a565b61025b610256366004612686565b610673565b005b61022661026b3660046126e3565b6109bd565b600e54600f546010546011546012546013546040805160a08101825260145481526015546001600160a01b03818116602084015260ff600160a01b83048116151594840194909452600160a81b90910490921615156060820152601654821660808201526102e697821696909116949392919087565b60405161020a9796959493929190612724565b6103016109e3565b60405161020a9291906127a1565b60055460405160ff909116815260200161020a565b6103376103323660046129c2565b610b2e565b604080516001600160a01b03909416845260208401929092529082015260600161020a565b61023a600a5481565b61025b610373366004612a41565b610e00565b601754601854601954601a54601b54601c54601d54601e54601f546103a298979695949392919089565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200161020a565b61023a60085481565b61025b6103fd366004612a71565b610ef9565b6103376104103660046126e3565b610fde565b61023a610423366004612a71565b6001600160a01b031660009081526020819052604090205490565b61045161044c3660046126e3565b611136565b604080516001600160a01b03909316835260208301919091520161020a565b600c54610483906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b61025b6104a9366004612a8e565b61126a565b6101fd611540565b6102266104c436600461265a565b61154f565b61023a6104d7366004612a71565b600d6020526000908152604090205481565b600c5461022690600160a01b900460ff1681565b61051061050b366004612b15565b61155d565b60405161020a9190612bb0565b61025b61052b3660046126e3565b6119ed565b61023a60095481565b61023a610547366004612c70565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61023a611ab2565b600c5461022690600160a81b900460ff1681565b61025b61059c366004612a71565b611b33565b6105106105af366004612c9e565b611bca565b600b54610483906001600160a01b031681565b6060600680546105d690612d08565b80601f016020809104026020016040519081016040528092919081815260200182805461060290612d08565b801561064f5780601f106106245761010080835404028352916020019161064f565b820191906000526020600020905b81548152906001019060200180831161063257829003601f168201915b5050505050905090565b600033610667818585611cd8565b60019150505b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156106be5750825b905060008267ffffffffffffffff1660011480156106db5750303b155b9050811580156106e9575080155b156107075760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561073b57845468ff00000000000000001916680100000000000000001785555b61074b6040870160208801612a71565b6001600160a01b03166107616020880188612a71565b6001600160a01b03160361077457600080fd5b856040013560000361078557600080fd5b606086013560000361079657600080fd5b60808601356000036107a757600080fd5b6107b860a087013562015180612d58565b608087013510156107c857600080fd5b60c086013515806107db575060e0860135155b806107ed575060e086013560c0870135105b156107f757600080fd5b61014086013515806108125750610120860135610140870135105b1561081c57600080fd5b60006108306101c088016101a08901612a71565b6001600160a01b03160361084357600080fd5b670de0b6b3a7640000610180870135111561085d57600080fd5b61086a6020870187612a71565b600e80546001600160a01b0319166001600160a01b039290921691909117905561089a6040870160208801612a71565b600f80546001600160a01b0319166001600160a01b03929092169190911790556040860135601055610180860160146108d38282612d6b565b50506060860135601755608086013560185560a086013560195560c0860135601a5560e0860135601b55610100860135601c55610120860135601d55610140860135601e55610160860135601f55600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b17905561096789898961096260208b018b612a71565b611cea565b83156109b257845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6000336109cb858285611ee5565b6109d6858585611f81565b60019150505b9392505050565b6040805160e081018252602080546001600160a01b0390811683526021548116838301526022548385015260235460608085019190915260245460808086019190915260255460a0808701919091528651908101875260265481526027548085168287015260ff600160a01b820481161515838a0152600160a81b909104161515818401526028549093169083015260c084019190915283519081018452602980548252602a5482840152602b8054949593949293919291840191610aa790612d08565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad390612d08565b8015610b205780601f10610af557610100808354040283529160200191610b20565b820191906000526020600020905b815481529060010190602001808311610b0357829003601f168201915b505050505081525050905082565b600b54600090819081906001600160a01b03163314610b4c57600080fd5b600c54600160a81b900460ff16610b6257600080fd5b601254421180610b73575060135442105b15610b7d57600080fd5b601054861115610b8c57600080fd5b600e54601154604080517f313ce56700000000000000000000000000000000000000000000000000000000815290516001600160a01b0390931692600091849163313ce567916004808201926020929091908290030181865afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b9190612e12565b60ff1690506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c849190612e12565b600f546001600160a01b0316975060ff169050610ca282600a612f19565b610cac8b85612f25565b610cb69190612f3c565b9550670de0b6b3a764000060095487610ccf9190612f25565b610cd99190612f3c565b9450600089610dc757610ced82600a612f19565b610cf884600a612f19565b610d029190612f25565b60155460405163517382cf60e11b81526001600160a01b039091169063a2e7059e90610d36908c908a908f90600401612f5e565b602060405180830381865afa158015610d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d779190612fdf565b610d818d87612f25565b610d8b9190612f25565b610d959190612f3c565b90508a811180610da3575080155b15610dad57600080fd5b600c54610dc7906001600160a01b03878116911683611fe0565b610de68c610dd5838e612ff8565b6001600160a01b0388169190611fe0565b610df08d8c612060565b5050505050955095509592505050565b600c546001600160a01b03163314610e1757600080fd5b6016546001600160a01b03168015610e2e57600080fd5b6040517fbd86e508000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03838116602483015282169063bd86e50890604401600060405180830381600087803b158015610e9157600080fd5b505af1158015610ea5573d6000803e3d6000fd5b5050604080516001600160a01b0385811682526020820188905286168183015290517fa8e9ed9d5a3dbe1d9fe6d227405bddc7076d509b3d1a7149862baa1d10ece8929350908190036060019150a1505050565b600c546001600160a01b03163314610f1057600080fd5b601554600160a81b900460ff16610f2657600080fd5b600e546040517f5c19a95c0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690635c19a95c90602401600060405180830381600087803b158015610f8657600080fd5b505af1158015610f9a573d6000803e3d6000fd5b50506040516001600160a01b03841681527f97272ae3625415c9e42454bb806ca07e49c86e720ecae7d9f22c54479e6a2e249250602001905060405180910390a150565b600b54600090819081906001600160a01b03163314610ffc57600080fd5b600c54600160a81b900460ff1661101257600080fd5b601254421180611023575060135442105b1561102d57600080fd5b8360000361103a57600080fd5b60145460105461104a9190612f25565b670de0b6b3a764000085600a546110619190612d58565b61106b9190612f25565b111561107657600080fd5b600f546010546011546001600160a01b03909216945090611098908690612f25565b6110a29190612f3c565b9150670de0b6b3a7640000600954836110bb9190612f25565b6110c59190612f3c565b905083600a60008282546110d99190612d58565b90915550506001600160a01b0386166000908152600d602052604081208054869290611106908490612d58565b9091555061111690508685612060565b600e5461112d906001600160a01b03168686611fe0565b93509350939050565b600b5460009081906001600160a01b0316331461115257600080fd5b600c54600160a81b900460ff1661116857600080fd5b601254421180611179575060135442105b1561118357600080fd5b8260000361119057600080fd5b600a54158061119f5750601454155b156111a957600080fd5b6001600160a01b0385166000908152600d60205260409020548311156111ce57600080fd5b600e546010546011546001600160a01b039092169350906111f0908590612f25565b6111fa9190612f3c565b905082600a600082825461120e9190612ff8565b90915550506001600160a01b0385166000908152600d60205260408120805485929061123b908490612ff8565b9091555061124b9050858461209a565b600f54611262906001600160a01b03168583611fe0565b935093915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112b55750825b905060008267ffffffffffffffff1660011480156112d25750303b155b9050811580156112e0575080155b156112fe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561133257845468ff00000000000000001916680100000000000000001785555b6113426040870160208801612a71565b6001600160a01b03166113586020880188612a71565b6001600160a01b03160361136b57600080fd5b604086013560000361137c57600080fd5b606086013560000361138d57600080fd5b60808601354211806113b257506113ab60a087013562015180612d58565b6080870135105b156113bc57600080fd5b601454670de0b6b3a764000010156113d357600080fd5b8560206113e0828261317e565b5050602054600e80546001600160a01b03199081166001600160a01b0393841617909155602154600f80548316918416919091179055602254601081905560235460115560245460125560255460135560265460145560275460158054600160a81b80840460ff9081161515820260ff60a81b19600160a01b8088049390931615159092027fffffffffffffffffffffff000000000000000000000000000000000000000000909416958916959095179290921782169390931790915560285460168054909516951694909417909255600c80549093169091179091556029546008556114ce90899061209a565b6020546114e9908b908b908a906001600160a01b0316611cea565b831561153457845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6060600780546105d690612d08565b600033610667818585611f81565b6115dd604080516101808101909152806000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b60006115e7611ab2565b600c54909150600160a01b900460ff1661160d5761160560056120d0565b9150506119e5565b600c54600160a81b900460ff16156116295761160560036120d0565b8086101561163b5761160560046120d0565b600e54600f5460155460405163517382cf60e11b81526001600160a01b039384169392831692600092169063a2e7059e9061167e90869086908c90600401612f5e565b602060405180830381865afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf9190612fdf565b9050808810156116de576116d360016120d0565b9450505050506119e5565b601d548110806116ef5750601e5481115b156116fe576116d360026120d0565b6010546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906001600160a01b038616906370a0823190602401602060405180830381865afa158015611760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117849190612fdf565b10156117a05761179460066120d0565b955050505050506119e5565b601554600160a01b900460ff1660008161185857856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118169190612e12565b61182190600a6132bd565b670de0b6b3a764000085611835868b612f25565b61183f9190612f25565b6118499190612f3c565b6118539190612f3c565b611875565b670de0b6b3a764000061186b8489612f25565b6118759190612f3c565b90506000670de0b6b3a7640000601760000154866118939190612f25565b61189d9190612f3c565b6018549091506000906118b09042612d58565b6019549091506000906118c39042612d58565b600b546040517f34c9b8580000000000000000000000000000000000000000000000000000000081526001600160a01b038f8116600483015260248201889052929350600092839216906334c9b858906044016040805180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195691906132cc565b604080516101808101909152919350915080600081526020018b6001600160a01b031681526020018c6001600160a01b03168152602001868152602001858152602001848152602001878152602001886119b0578b6119b2565b8c5b6001600160a01b031681526020018381526020018281526020018a81526020018d8152509c505050505050505050505050505b949350505050565b600b546001600160a01b03163314801590611a135750600c546001600160a01b03163314155b15611a1d57600080fd5b600c54600160a81b900460ff168015611a3857506012544211155b15611a4257600080fd5b611a566001600160a01b0383168483611fe0565b816001600160a01b0316836001600160a01b0316336001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f784604051611aa591815260200190565b60405180910390a4505050565b601f54601c546000919042821115611ace575050601a54919050565b611ad88183612d58565b421015611b29576000611aeb8342612ff8565b601b54601a54919250908383611b018484612ff8565b611b0b9190612f25565b611b159190612f3c565b611b1f9082612ff8565b9550505050505090565b5050601b54919050565b600c546001600160a01b0316338114611b4b57600080fd5b816001600160a01b0316816001600160a01b031603611b6957600080fd5b600c80546001600160a01b0319166001600160a01b03848116918217909255604080519284168352602083019190915233917f6954f1cdad46901994f29d9b1f78744c873c527bad04d294b4954cc8caf367da910160405180910390a25050565b611c4a604080516101808101909152806000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b600b546001600160a01b03163314611c6157600080fd5b611c6d8685858561155d565b9050600081516006811115611c8457611c84612b78565b14611c8e57600080fd5b6060810151601155608081015160125560a0810151601355600c805460ff60a81b1916600160a81b17905560c0810151600855601054611ccf90869061209a565b95945050505050565b611ce583838360016121e0565b505050565b600b80546001600160a01b038087166001600160a01b031992831617909255600c805486841692169190911790556009839055604080517f06fdde0300000000000000000000000000000000000000000000000000000000815290516000928416916306fdde0391600480830192869291908290030181865afa158015611d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d9d91908101906132f0565b90506000826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611ddf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e0791908101906132f0565b905081604051602001611e1a919061335e565b60405160208183030381529060405260069081611e3791906133a3565b5080604051602001611e49919061335e565b60405160208183030381529060405260079081611e6691906133a3565b50826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec99190612e12565b6005805460ff191660ff92909216919091179055505050505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611f7b5781811015611f6c576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b611f7b848484840360006121e0565b50505050565b6001600160a01b038316611fab57604051634b637e8f60e11b815260006004820152602401611f63565b6001600160a01b038216611fd55760405163ec442f0560e01b815260006004820152602401611f63565b611ce58383836122e7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611ce590849061242a565b6001600160a01b03821661208a57604051634b637e8f60e11b815260006004820152602401611f63565b612096826000836122e7565b5050565b6001600160a01b0382166120c45760405163ec442f0560e01b815260006004820152602401611f63565b612096600083836122e7565b612150604080516101808101909152806000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b60405180610180016040528083600681111561216e5761216e612b78565b815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152509050919050565b6001600160a01b038416612223576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401611f63565b6001600160a01b038316612266576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401611f63565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015611f7b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516122d991815260200190565b60405180910390a350505050565b6001600160a01b0383166123125780600260008282546123079190612d58565b9091555061239d9050565b6001600160a01b0383166000908152602081905260409020548181101561237e576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401611f63565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166123b9576002805482900390556123d8565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161241d91815260200190565b60405180910390a3505050565b600061243f6001600160a01b038416836124a6565b905080516000141580156124645750808060200190518101906124629190613463565b155b15611ce5576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611f63565b60606109dc8383600084600080856001600160a01b031684866040516124cc9190613480565b60006040518083038185875af1925050503d8060008114612509576040519150601f19603f3d011682016040523d82523d6000602084013e61250e565b606091505b509150915061251e868383612528565b9695505050505050565b60608261253d576125388261259d565b6109dc565b815115801561255457506001600160a01b0384163b155b15612596576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611f63565b50806109dc565b8051156125ad5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60005b838110156125fd5781810151838201526020016125e5565b50506000910152565b6000815180845261261e8160208601602086016125e2565b601f01601f19169290920160200192915050565b6020815260006109dc6020830184612606565b6001600160a01b03811681146125df57600080fd5b6000806040838503121561266d57600080fd5b823561267881612645565b946020939093013593505050565b60008060008084860361028081121561269e57600080fd5b85356126a981612645565b945060208601356126b981612645565b935060408601359250610220605f19820112156126d557600080fd5b509295919450926060019150565b6000806000606084860312156126f857600080fd5b833561270381612645565b9250602084013561271381612645565b929592945050506040919091013590565b6001600160a01b03888116825287811660208084019190915260408084018990526060808501899052608080860189905260a08601889052865160c087015292860151841660e086015290850151151561010085015284015115156101208401528301511661014082015261016081015b98975050505050505050565b60006101806001600160a01b038086511684528060208701511660208501525060408501516040840152606085015160608401526080850151608084015260a085015160a084015260c085015161283960c08501828051825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b50806101608401528351818401525060208301516101a0830152604083015160606101c0840152611ccf6101e0840182612606565b80151581146125df57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128bb576128bb61287c565b604052919050565b600067ffffffffffffffff8211156128dd576128dd61287c565b50601f01601f191660200190565b600082601f8301126128fc57600080fd5b8135602067ffffffffffffffff808311156129195761291961287c565b8260051b612928838201612892565b938452858101830193838101908886111561294257600080fd5b84880192505b85831015612795578235848111156129605760008081fd5b8801603f81018a136129725760008081fd5b858101356040612989612984836128c3565b612892565b8281528c8284860101111561299e5760008081fd5b828285018a8301376000928101890192909252508352509184019190840190612948565b600080600080600060a086880312156129da57600080fd5b85356129e581612645565b945060208601356129f581612645565b9350604086013592506060860135612a0c8161286e565b9150608086013567ffffffffffffffff811115612a2857600080fd5b612a34888289016128eb565b9150509295509295909350565b60008060408385031215612a5457600080fd5b823591506020830135612a6681612645565b809150509250929050565b600060208284031215612a8357600080fd5b81356109dc81612645565b600080600080600060a08688031215612aa657600080fd5b8535612ab181612645565b94506020860135612ac181612645565b93506040860135612ad181612645565b925060608601359150608086013567ffffffffffffffff811115612af457600080fd5b86016101808189031215612b0757600080fd5b809150509295509295909350565b60008060008060808587031215612b2b57600080fd5b8435935060208501359250604085013567ffffffffffffffff811115612b5057600080fd5b612b5c878288016128eb565b9250506060850135612b6d81612645565b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b60078110612bac57634e487b7160e01b600052602160045260246000fd5b9052565b600061018082019050612bc4828451612b8e565b6020830151612bde60208401826001600160a01b03169052565b506040830151612bf960408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151612c3c60e08401826001600160a01b03169052565b5061010083810151908301526101208084015190830152610140808401519083015261016092830151929091019190915290565b60008060408385031215612c8357600080fd5b8235612c8e81612645565b91506020830135612a6681612645565b600080600080600060a08688031215612cb657600080fd5b853594506020860135612cc881612645565b935060408601359250606086013567ffffffffffffffff811115612ceb57600080fd5b612cf7888289016128eb565b9250506080860135612b0781612645565b600181811c90821680612d1c57607f821691505b602082108103612d3c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561066d5761066d612d42565b81358155600181016020830135612d8181612645565b81546001600160a01b0319166001600160a01b038216178255506040830135612da98161286e565b81546060850135612db98161286e565b60ff60a81b81151560a81b1660ff60a01b84151560a01b1661ffff60a01b19841617178455505050506080820135612df081612645565b6002820180546001600160a01b0319166001600160a01b038316179055505050565b600060208284031215612e2457600080fd5b815160ff811681146109dc57600080fd5b600181815b80851115612e70578160001904821115612e5657612e56612d42565b80851615612e6357918102915b93841c9390800290612e3a565b509250929050565b600082612e875750600161066d565b81612e945750600061066d565b8160018114612eaa5760028114612eb457612ed0565b600191505061066d565b60ff841115612ec557612ec5612d42565b50506001821b61066d565b5060208310610133831016604e8410600b8410161715612ef3575081810a61066d565b612efd8383612e35565b8060001904821115612f1157612f11612d42565b029392505050565b60006109dc8383612e78565b808202811582820484141761066d5761066d612d42565b600082612f5957634e487b7160e01b600052601260045260246000fd5b500490565b6000606082016001600160a01b0380871684526020818716602086015260606040860152829150855180845260808601925060808160051b87010193506020870160005b82811015612fd057607f19888703018552612fbe868351612606565b95509383019390830190600101612fa2565b50939998505050505050505050565b600060208284031215612ff157600080fd5b5051919050565b8181038181111561066d5761066d612d42565b60008235605e1983360301811261302157600080fd5b9190910192915050565b601f821115611ce5576000816000526020600020601f850160051c810160208610156130545750805b601f850160051c820191505b8181101561307357828155600101613060565b505050505050565b8135815560016020808401356001840155600283016040850135601e198636030181126130a757600080fd5b8501803567ffffffffffffffff8111156130c057600080fd5b80360384830113156130d157600080fd5b6130e5816130df8554612d08565b8561302b565b6000601f82116001811461311b576000831561310357508382018601355b600019600385901b1c1916600184901b1785556109b2565b600085815260209020601f19841690835b8281101561314b5786850189013582559388019390890190880161312c565b508482101561316a5760001960f88660031b161c198885880101351681555b50505050600190811b019091555050505050565b813561318981612645565b81546001600160a01b0319166001600160a01b0382161782555060208201356131b181612645565b6001820180546001600160a01b0319166001600160a01b0383161790555060408201356002820155606082013560038201556080820135600482015560a0820135600582015560c082013560068201556007810160e083013561321381612645565b81546001600160a01b0319166001600160a01b0382161782555061010083013561323c8161286e565b815461012085013561324d8161286e565b60ff60a81b81151560a81b1660ff60a01b84151560a01b1661ffff60a01b198416171784555050505061014082013561328581612645565b6008820180546001600160a01b0319166001600160a01b038316179055506120966132b461016084018461300b565b6009830161307b565b60006109dc60ff841683612e78565b600080604083850312156132df57600080fd5b505080516020909101519092909150565b60006020828403121561330257600080fd5b815167ffffffffffffffff81111561331957600080fd5b8201601f8101841361332a57600080fd5b8051613338612984826128c3565b81815285602083850101111561334d57600080fd5b611ccf8260208301602086016125e2565b7f43616c6c200000000000000000000000000000000000000000000000000000008152600082516133968160058501602087016125e2565b9190910160050192915050565b815167ffffffffffffffff8111156133bd576133bd61287c565b6133d1816133cb8454612d08565b8461302b565b602080601f83116001811461340657600084156133ee5750858301515b600019600386901b1c1916600185901b178555613073565b600085815260208120601f198616915b8281101561343557888601518255948401946001909101908401613416565b50858210156134535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561347557600080fd5b81516109dc8161286e565b600082516130218184602087016125e256fea2646970667358221220c1407629f08f17fc4cdd0c81e39f547dd1921ca7b0a10cc038c312d237f7ac6a64736f6c63430008180033