0 txs
1.1k calls
constructor
No constructor.
functions
availableChallengeNumByChallenge
viewfunction availableChallengeNumByChallenge(string) view returns (uint32)
challengePriceByChallengeOption
viewfunction challengePriceByChallengeOption(string) view returns (uint256)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
fundedNFTAddress
viewfunction fundedNFTAddress() view returns (address)
getUserDailyLimit
viewfunction getUserDailyLimit(address user) view returns (uint256 amountTransferred, uint256 lastReset)
isBlacklisted
viewfunction isBlacklisted(address account) view returns (bool)
isCustomer
viewfunction isCustomer(address) view returns (bool)
managementFeePcnt
viewfunction managementFeePcnt() view returns (uint256)
managementWalletAddress
viewfunction managementWalletAddress() view returns (address)
nonces
viewfunction nonces(address) view returns (uint256)
operatorAddress
viewfunction operatorAddress() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
profitSplitByChallenge
viewfunction profitSplitByChallenge(string) view returns (uint8)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
uniswapRouterV2Address
viewfunction uniswapRouterV2Address() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
usdcContractAddress
viewfunction usdcContractAddress() view returns (address)
addToBlacklist
nonpayablefunction addToBlacklist(address account)
depositETH
payablefunction depositETH(string challenge, string challengeOption) payable
depositUSDC
nonpayablefunction depositUSDC(uint256 amount, string challenge, string challengeOption)
executePayout
nonpayablefunction executePayout(bytes signature, uint256 amount, string challenge, bool refund)
freeChallenge
nonpayablefunction freeChallenge(bytes signature, string challenge)
initialize
nonpayablefunction initialize(address _operator, uint256 _maxWithdraw, uint256 _managementFeePcnt, address _managementWalletAddress, address _fundedNFTAddress, string name, string version)
removeCustomer
nonpayablefunction removeCustomer(address customer)
removeFromBlacklist
nonpayablefunction removeFromBlacklist(address account)
renounceOwnership
nonpayablefunction renounceOwnership()
setChallangeOptions
nonpayablefunction setChallangeOptions(string[] challengeOptionNames, uint256[] challengeOptionPrices)
setChallengeAvailable
nonpayablefunction setChallengeAvailable(string challengeName, uint32 num)
setChallengeOptionPrice
nonpayablefunction setChallengeOptionPrice(string challengeOptionName, uint256 price)
setChallengeProfitSplit
nonpayablefunction setChallengeProfitSplit(string challengeName, uint8 percent)
setChallenges
nonpayablefunction setChallenges(string[] challengeNames, uint8[] challengeProfitSplits, uint32[] availableChallengeNum)
setFundedNFTAddress
nonpayablefunction setFundedNFTAddress(address addr)
setManagementFeePcnt
nonpayablefunction setManagementFeePcnt(uint256 newManagementFeePcnt)
setManagementWalletAddress
nonpayablefunction setManagementWalletAddress(address addr)
setUniswapAddress
nonpayablefunction setUniswapAddress(address addr)
setupChallenges
nonpayablefunction setupChallenges(string[] challengeNames, uint8[] challengeProfitSplits, uint32[] availableChallengeNum, string[] challengeOptionNames, uint256[] challengeOptionPrices)
setUSDCAddress
nonpayablefunction setUSDCAddress(address addr)
transferOperator
nonpayablefunction transferOperator(address newOperator)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
BlacklistedWithdrawAttempt
event BlacklistedWithdrawAttempt(address indexed account)
Deposit
event Deposit(address indexed sender, uint256 amount, string data)
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint64 version)
Log
event Log(address signer, bytes32 digest)
NoNFTWithdrawAttempt
event NoNFTWithdrawAttempt(address indexed account)
OperatorTransferred
event OperatorTransferred(address indexed oldOperator, address indexed newOperator)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Refund
event Refund(address indexed to, string indexed challenge, uint256 value)
StartWithdraw
event StartWithdraw(address indexed to, string indexed challenge, uint256 value)
SwapETHForUSDC
event SwapETHForUSDC(address indexed sender, uint256 ethAmount, uint256 usdcAmount)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
Withdraw
event Withdraw(address indexed to, string indexed challenge, uint256 value)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015601357600080fd5b5060805161397f61003d600039600081816120de01528181612107015261224d015261397f6000f3fe60806040526004361061024a5760003560e01c806377865f9111610139578063be2e51df116100b6578063e5cc6be51161007a578063e5cc6be514610817578063eb55f96d14610837578063ee9586a414610857578063f0c9790614610877578063f2fde38b14610897578063fe575a87146108b757610287565b8063be2e51df14610717578063cc72984b14610737578063d036144914610784578063d940ef4d146107d7578063e29f153b146107f757610287565b80638eb06ccf116100fd5780638eb06ccf146106595780639bb6a41414610679578063aaf5bfc314610699578063ad3cb1cc146106b9578063af8b9203146106f757610287565b806377865f911461057c5780637884e7c6146105cf5780637ecebe00146105ef57806384b0196e1461061c5780638da5cb5b1461064457610287565b806344337ea1116101c75780635c975abb1161018b5780635c975abb146104d05780636b665098146105075780636f0590c2146105275780637001b65514610547578063715018a61461056757610287565b806344337ea1146104485780634a2d4e28146104685780634f1ef2861461048857806352d1902d1461049b578063537df3b6146104b057610287565b806329605e771161020e57806329605e771461038c5780632d5686c1146103ac5780632e015584146103cc578063313ec82d146103ec578063368233c51461043257610287565b806305bea24a146102ba578063127effb2146102f75780631f7d16f7146103175780632841efd01461033757806328fd5e831461034c57610287565b366102875760405162461bcd60e51b815260206004820152600860248201526712539597d0d0531360c21b60448201526064015b60405180910390fd5b60405162461bcd60e51b815260206004820152600860248201526712539597d0d0531360c21b604482015260640161027e565b3480156102c657600080fd5b506009546102da906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561030357600080fd5b50600a546102da906001600160a01b031681565b34801561032357600080fd5b506008546102da906001600160a01b031681565b61034a610345366004612bc1565b6108f0565b005b34801561035857600080fd5b5061037c610367366004612c45565b60006020819052908152604090205460ff1681565b60405190151581526020016102ee565b34801561039857600080fd5b5061034a6103a7366004612c45565b610c1b565b3480156103b857600080fd5b5061034a6103c7366004612ca6565b610c75565b3480156103d857600080fd5b506006546102da906001600160a01b031681565b3480156103f857600080fd5b50610424610407366004612dc5565b805160208183018101805160048252928201919093012091525481565b6040519081526020016102ee565b34801561043e57600080fd5b5061042460055481565b34801561045457600080fd5b5061034a610463366004612c45565b610cb1565b34801561047457600080fd5b5061034a610483366004612e01565b610d30565b61034a610496366004612f07565b610daf565b3480156104a757600080fd5b50610424610dce565b3480156104bc57600080fd5b5061034a6104cb366004612c45565b610deb565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661037c565b34801561051357600080fd5b5061034a610522366004612c45565b610e6a565b34801561053357600080fd5b5061034a610542366004612f64565b610e94565b34801561055357600080fd5b5061034a610562366004612fef565b6113fd565b34801561057357600080fd5b5061034a61146a565b34801561058857600080fd5b506105ba610597366004612c45565b6001600160a01b03166000908152600e6020526040902080546001909101549091565b604080519283526020830191909152016102ee565b3480156105db57600080fd5b5061034a6105ea366004612c45565b61147e565b3480156105fb57600080fd5b5061042461060a366004612c45565b60016020526000908152604090205481565b34801561062857600080fd5b506106316114b2565b6040516102ee9796959493929190613058565b34801561065057600080fd5b506102da61155e565b34801561066557600080fd5b5061034a610674366004612c45565b61158c565b34801561068557600080fd5b5061034a610694366004612c45565b6115d9565b3480156106a557600080fd5b5061034a6106b4366004612c45565b611603565b3480156106c557600080fd5b506106ea604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102ee91906130f0565b34801561070357600080fd5b5061034a610712366004613103565b611637565b34801561072357600080fd5b5061034a6107323660046131b5565b61180d565b34801561074357600080fd5b50610772610752366004612dc5565b805160208183018101805160028252928201919093012091525460ff1681565b60405160ff90911681526020016102ee565b34801561079057600080fd5b506107c261079f366004612dc5565b805160208183018101805160038252928201919093012091525463ffffffff1681565b60405163ffffffff90911681526020016102ee565b3480156107e357600080fd5b506007546102da906001600160a01b031681565b34801561080357600080fd5b5061034a610812366004613232565b61198c565b34801561082357600080fd5b5061034a610832366004613293565b6119de565b34801561084357600080fd5b5061034a6108523660046132e6565b611a43565b34801561086357600080fd5b5061034a61087236600461339d565b611a7b565b34801561088357600080fd5b5061034a6108923660046133e7565b611ae6565b3480156108a357600080fd5b5061034a6108b2366004612c45565b611d13565b3480156108c357600080fd5b5061037c6108d2366004612c45565b6001600160a01b03166000908152600f602052604090205460ff1690565b6108f8611d4e565b60006004838360405161090c929190613453565b90815260200160405180910390205490508060000361095a5760405162461bcd60e51b815260206004820152600a60248201526924a72b2fa7a82a24a7a760b11b604482015260640161027e565b60006003868660405161096e929190613453565b9081526040519081900360200190205463ffffffff16116109c15760405162461bcd60e51b815260206004820152600d60248201526c4e4f545f415641494c41424c4560981b604482015260640161027e565b6040805160028082526060820183526000926020830190803683375050600d54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190613463565b81600081518110610a6257610a62613480565b6001600160a01b039283166020918202929092010152600654825191169082906001908110610a9357610a93613480565b6001600160a01b039283166020918202929092010152600d5460009116637ff36ab534858530610ac54261012c6134ac565b6040518663ffffffff1660e01b8152600401610ae494939291906134bf565b60006040518083038185885af1158015610b02573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b2b919081019061352a565b9050336001600160a01b03167ff2f8ad9c3327e6a139d6951b1623b081828be1b9c2c04e019861168bd06428a43483600181518110610b6c57610b6c613480565b6020026020010151604051610b8b929190918252602082015260400190565b60405180910390a28281600181518110610ba757610ba7613480565b60200260200101511015610bea5760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b604482015260640161027e565b610c123382600181518110610c0157610c01613480565b602002602001015189898989611d91565b50505050505050565b610c23611f01565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed90600090a35050565b600a546001600160a01b03163314610c9f5760405162461bcd60e51b815260040161027e906135d9565b610cab84848484611f33565b50505050565b610cb9611f01565b6001600160a01b0381166000908152600f602052604090205460ff1615610d0c5760405162461bcd60e51b815260206004820152600760248201526613d397d31254d560ca1b604482015260640161027e565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b610d38611f01565b60105460ff1615610d7c5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d2539255115160921b604482015260640161027e565b610d8a8a8a8a8a8a8a611faa565b610d9684848484611f33565b50506010805460ff191660011790555050505050505050565b610db76120d3565b610dc082612178565b610dca8282612180565b5050565b6000610dd8612242565b5060008051602061392a83398151915290565b610df3611f01565b6001600160a01b0381166000908152600f602052604090205460ff16610e495760405162461bcd60e51b815260206004820152600b60248201526a1393d517d3d397d31254d560aa1b604482015260640161027e565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b610e72611f01565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610e9c611d4e565b8282604051610eac929190613453565b604051908190038120600082529033907f1fa071a01976ef5eedc85e0c854f9bdcebd156205d13d111d4fe1d9889afd89e9060200160405180910390a3336000908152600160205260408120805491829190610f07836135f9565b9091555050336000908152600f602052604090205460ff1615610f855760405133907ff3bc16a143e1d099afbe262dd4d015a4b72dff8fbd88c5d077534ed6c2550ca490600090a260405162461bcd60e51b815260206004820152600b60248201526a10931050d2d31254d5115160aa1b604482015260640161027e565b81158015610f995750610f973361228b565b155b15610ffe5760405133907f6a526bd81e34f41ae67b48524c615651b1a8026db4f056662bafcf20a58e2c4390600090a260405162461bcd60e51b815260206004820152600a602482015269121054d7d393d7d3919560b21b604482015260640161027e565b60007f11ec2eebb3de7572c84eba4ffa7ca3e691b72e440df329a54ba1ab86f24c3eb53387848888604051602001611037929190613453565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b03909416938101939093526060830191909152608082015260a081019190915283151560c082015260e00160405160208183030381529060405280519060200120905060006110ab82612323565b905060006110b9828a612356565b604080516001600160a01b0383168152602081018590529192507f22c227465829cb03b9a4f59749925805a01244e82c68e891e42751abb94e6298910160405180910390a161110661155e565b6001600160a01b0316816001600160a01b0316146111565760405162461bcd60e51b815260206004820152600d60248201526c494e565f5349474e415455524560981b604482015260640161027e565b6001600160a01b03811661117c5760405162461bcd60e51b815260040161027e90613612565b876000866111c757600060028a8a604051611198929190613453565b9081526040519081900360200190205460ff1690506111b78b82612380565b92506111c3838c613637565b9150505b6111d03361239f565b600b54336000908152600e60205260409020546111ee908c906134ac565b11156112285760405162461bcd60e51b81526020600482015260096024820152684c494d49545f45584360b81b604482015260640161027e565b336000908152600e6020526040812080548c92906112479084906134ac565b9091555050600c5460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af115801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c1919061364a565b50866113a357600c546001600160a01b031663a9059cbb6112e061155e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561132d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611351919061364a565b508888604051611362929190613453565b6040519081900381208b82529033907f901c03da5d88eb3d62ab4617e7b7d17d86db16356823a7971127d5181a842fef9060200160405180910390a36113f0565b88886040516113b3929190613453565b6040519081900381208b82529033907fa7dd277dca2a71c2100c1ed4323f417f6ca244c15a1ed1c0cd5f5fe621da4e389060200160405180910390a35b5050505050505050505050565b600a546001600160a01b031633146114275760405162461bcd60e51b815260040161027e906135d9565b60055481106114655760405162461bcd60e51b815260206004820152600a6024820152694c4f5745525f4f4e4c5960b01b604482015260640161027e565b600555565b611472611f01565b61147c600061240b565b565b611486611f01565b600780546001600160a01b039092166001600160a01b03199283168117909155600d8054909216179055565b6000606080828080838160008051602061390a83398151915280549091501580156114df57506001810154155b6115235760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161027e565b61152b61247c565b61153361253f565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b611594611f01565b6001600160a01b03811660009081526020819052604090205460ff16156115d6576001600160a01b0381166000908152602081905260409020805460ff191690555b50565b6115e1611f01565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b61160b611f01565b600680546001600160a01b039092166001600160a01b03199283168117909155600c8054909216179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561167c5750825b90506000826001600160401b031660011480156116985750303b155b9050811580156116a6575080155b156116c45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156116ee57845460ff60401b1916600160401b1785555b6116f8878761257e565b61170133612590565b6117096125a1565b6117116125a9565b600b8b905560058a9055600880546001600160a01b03808c166001600160a01b031992831617909255600980548b8416908316179055600a8054928f169282169290921790915560068054821673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48908117909155600780548316737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600d805484169091179055600c80549092161790556010805460ff1916905583156117ff57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b611815611d4e565b336118325760405162461bcd60e51b815260040161027e90613612565b600060048383604051611846929190613453565b90815260200160405180910390205490508086146118935760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b604482015260640161027e565b6000600386866040516118a7929190613453565b9081526040519081900360200190205463ffffffff16116118fa5760405162461bcd60e51b815260206004820152600d60248201526c4e4f545f415641494c41424c4560981b604482015260640161027e565b600c546040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611951573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611975919061364a565b50611984338787878787611d91565b505050505050565b600a546001600160a01b031633146119b65760405162461bcd60e51b815260040161027e906135d9565b80600484846040516119c9929190613453565b90815260405190819003602001902055505050565b600a546001600160a01b03163314611a085760405162461bcd60e51b815260040161027e906135d9565b8060028484604051611a1b929190613453565b908152604051908190036020019020805460ff9290921660ff19909216919091179055505050565b600a546001600160a01b03163314611a6d5760405162461bcd60e51b815260040161027e906135d9565b611984868686868686611faa565b600a546001600160a01b03163314611aa55760405162461bcd60e51b815260040161027e906135d9565b8060038484604051611ab8929190613453565b908152604051908190036020019020805463ffffffff9290921663ffffffff19909216919091179055505050565b611aee611d4e565b33600081815260016020908152604080832054905192937f89864a579f28ab15090a7fca860473fc6ca193f29c88293a3d2ff4f167c81e9f939092611b37918891889101613453565b60405160208183030381529060405280519060200120604051602001611b7f94939291909384526001600160a01b039290921660208401526040830152606082015260800190565b6040516020818303038152906040528051906020012090506000611ba282612323565b90506000611bb08287612356565b604080516001600160a01b0383168152602081018590529192507f22c227465829cb03b9a4f59749925805a01244e82c68e891e42751abb94e6298910160405180910390a1611bfd61155e565b6001600160a01b0316816001600160a01b031614611c4d5760405162461bcd60e51b815260206004820152600d60248201526c494e565f5349474e415455524560981b604482015260640161027e565b6001600160a01b038116611c735760405162461bcd60e51b815260040161027e90613612565b336000908152600160205260408120805491611c8e836135f9565b90915550503360009081526020819052604090205460ff16611cc557336000908152602081905260409020805460ff191660011790555b336001600160a01b03167f643e927b32d5bfd08eccd2fcbd97057ad413850f857a2359639114e8e8dd3d7b60008787604051611d0393929190613690565b60405180910390a2505050505050565b611d1b611f01565b6001600160a01b038116611d4557604051631e4fbdf760e01b81526000600482015260240161027e565b6115d68161240b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561147c5760405163d93c066560e01b815260040160405180910390fd5b6000611d9f86600554612380565b600c5460085460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb906044016020604051808303816000875af1158015611df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1a919061364a565b506001600160a01b03871660009081526020819052604090205460ff16611e5f576001600160a01b0387166000908152602081905260409020805460ff191660011790555b60038585604051611e71929190613453565b908152604051908190036020019020805463ffffffff16906000611e94836136aa565b91906101000a81548163ffffffff021916908363ffffffff16021790555050866001600160a01b03167f643e927b32d5bfd08eccd2fcbd97057ad413850f857a2359639114e8e8dd3d7b878585604051611ef093929190613690565b60405180910390a250505050505050565b33611f0a61155e565b6001600160a01b03161461147c5760405163118cdaa760e01b815233600482015260240161027e565b60005b83811015611fa357828282818110611f5057611f50613480565b905060200201356004868684818110611f6b57611f6b613480565b9050602002810190611f7d91906136ca565b604051611f8b929190613453565b90815260405190819003602001902055600101611f36565b5050505050565b60005b8581101561203b57848482818110611fc757611fc7613480565b9050602002016020810190611fdc9190613710565b6002888884818110611ff057611ff0613480565b905060200281019061200291906136ca565b604051612010929190613453565b908152604051908190036020019020805460ff9290921660ff19909216919091179055600101611fad565b5060005b81811015610c125782828281811061205957612059613480565b905060200201602081019061206e919061372b565b600388888481811061208257612082613480565b905060200281019061209491906136ca565b6040516120a2929190613453565b908152604051908190036020019020805463ffffffff9290921663ffffffff1990921691909117905560010161203f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061215a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661214e60008051602061392a833981519152546001600160a01b031690565b6001600160a01b031614155b1561147c5760405163703e46dd60e11b815260040160405180910390fd5b6115d6611f01565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156121da575060408051601f3d908101601f191682019092526121d791810190613746565b60015b61220257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161027e565b60008051602061392a833981519152811461223357604051632a87526960e21b81526004810182905260240161027e565b61223d83836125b9565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461147c5760405163703e46dd60e11b815260040160405180910390fd5b6009546000906001600160a01b03166122a657506001919050565b6009546040516370a0823160e01b81526001600160a01b0384811660048301529091169060009082906370a0823190602401602060405180830381865afa1580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190613746565b1515949350505050565b600061235061233061260f565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b600080600080612366868661261e565b925092509250612376828261266b565b5090949350505050565b6000606461238e838561375f565b6123989190613776565b9392505050565b60006123ae6201518042613776565b6001600160a01b0383166000908152600e6020526040812060010154919250906123dc906201518090613776565b90508082111561223d5750506001600160a01b03166000908152600e6020526040812090815542600190910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102805460609160008051602061390a833981519152916124bb90613798565b80601f01602080910402602001604051908101604052809291908181526020018280546124e790613798565b80156125345780601f1061250957610100808354040283529160200191612534565b820191906000526020600020905b81548152906001019060200180831161251757829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103805460609160008051602061390a833981519152916124bb90613798565b612586612724565b610dca828261276d565b612598612724565b6115d6816127ce565b61147c612724565b6125b1612724565b61147c6127d6565b6125c282612809565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156126075761223d828261286e565b610dca6128e4565b6000612619612903565b905090565b600080600083516041036126585760208401516040850151606086015160001a61264a88828585612977565b955095509550505050612664565b50508151600091506002905b9250925092565b600082600381111561267f5761267f6137d2565b03612688575050565b600182600381111561269c5761269c6137d2565b036126ba5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156126ce576126ce6137d2565b036126ef5760405163fce698f760e01b81526004810182905260240161027e565b6003826003811115612703576127036137d2565b03610dca576040516335e2f38360e21b81526004810182905260240161027e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661147c57604051631afcd79f60e31b815260040160405180910390fd5b612775612724565b60008051602061390a8339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026127af848261382f565b50600381016127be838261382f565b5060008082556001909101555050565b611d1b612724565b6127de612724565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b806001600160a01b03163b60000361283f57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161027e565b60008051602061392a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161288b91906138ed565b600060405180830381855af49150503d80600081146128c6576040519150601f19603f3d011682016040523d82523d6000602084013e6128cb565b606091505b50915091506128db858383612a46565b95945050505050565b341561147c5760405163b398979f60e01b815260040160405180910390fd5b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61292e612aa2565b612936612b0c565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156129b25750600091506003905082612a3c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612a06573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612a3257506000925060019150829050612a3c565b9250600091508190505b9450945094915050565b606082612a5b57612a5682612b50565b612398565b8151158015612a7257506001600160a01b0384163b155b15612a9b57604051639996b31560e01b81526001600160a01b038516600482015260240161027e565b5092915050565b600060008051602061390a83398151915281612abc61247c565b805190915015612ad457805160209091012092915050565b81548015612ae3579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b600060008051602061390a83398151915281612b2661253f565b805190915015612b3e57805160209091012092915050565b60018201548015612ae3579392505050565b805115612b605780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60008083601f840112612b8b57600080fd5b5081356001600160401b03811115612ba257600080fd5b602083019150836020828501011115612bba57600080fd5b9250929050565b60008060008060408587031215612bd757600080fd5b84356001600160401b03811115612bed57600080fd5b612bf987828801612b79565b90955093505060208501356001600160401b03811115612c1857600080fd5b612c2487828801612b79565b95989497509550505050565b6001600160a01b03811681146115d657600080fd5b600060208284031215612c5757600080fd5b813561239881612c30565b60008083601f840112612c7457600080fd5b5081356001600160401b03811115612c8b57600080fd5b6020830191508360208260051b8501011115612bba57600080fd5b60008060008060408587031215612cbc57600080fd5b84356001600160401b03811115612cd257600080fd5b612cde87828801612c62565b90955093505060208501356001600160401b03811115612cfd57600080fd5b612c2487828801612c62565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612d4757612d47612d09565b604052919050565b600082601f830112612d6057600080fd5b8135602083016000806001600160401b03841115612d8057612d80612d09565b50601f8301601f1916602001612d9581612d1f565b915050828152858383011115612daa57600080fd5b82826020830137600092810160200192909252509392505050565b600060208284031215612dd757600080fd5b81356001600160401b03811115612ded57600080fd5b612df984828501612d4f565b949350505050565b60008060008060008060008060008060a08b8d031215612e2057600080fd5b8a356001600160401b03811115612e3657600080fd5b612e428d828e01612c62565b909b5099505060208b01356001600160401b03811115612e6157600080fd5b612e6d8d828e01612c62565b90995097505060408b01356001600160401b03811115612e8c57600080fd5b612e988d828e01612c62565b90975095505060608b01356001600160401b03811115612eb757600080fd5b612ec38d828e01612c62565b90955093505060808b01356001600160401b03811115612ee257600080fd5b612eee8d828e01612c62565b915080935050809150509295989b9194979a5092959850565b60008060408385031215612f1a57600080fd5b8235612f2581612c30565b915060208301356001600160401b03811115612f4057600080fd5b612f4c85828601612d4f565b9150509250929050565b80151581146115d657600080fd5b600080600080600060808688031215612f7c57600080fd5b85356001600160401b03811115612f9257600080fd5b612f9e88828901612d4f565b9550506020860135935060408601356001600160401b03811115612fc157600080fd5b612fcd88828901612b79565b9094509250506060860135612fe181612f56565b809150509295509295909350565b60006020828403121561300157600080fd5b5035919050565b60005b8381101561302357818101518382015260200161300b565b50506000910152565b60008151808452613044816020860160208601613008565b601f01601f19169290920160200192915050565b60ff60f81b8816815260e06020820152600061307760e083018961302c565b8281036040840152613089818961302c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156130df5783518352602093840193909201916001016130c1565b50909b9a5050505050505050505050565b602081526000612398602083018461302c565b600080600080600080600060e0888a03121561311e57600080fd5b873561312981612c30565b96506020880135955060408801359450606088013561314781612c30565b9350608088013561315781612c30565b925060a08801356001600160401b0381111561317257600080fd5b61317e8a828b01612d4f565b92505060c08801356001600160401b0381111561319a57600080fd5b6131a68a828b01612d4f565b91505092959891949750929550565b6000806000806000606086880312156131cd57600080fd5b8535945060208601356001600160401b038111156131ea57600080fd5b6131f688828901612b79565b90955093505060408601356001600160401b0381111561321557600080fd5b61322188828901612b79565b969995985093965092949392505050565b60008060006040848603121561324757600080fd5b83356001600160401b0381111561325d57600080fd5b61326986828701612b79565b909790965060209590950135949350505050565b803560ff8116811461328e57600080fd5b919050565b6000806000604084860312156132a857600080fd5b83356001600160401b038111156132be57600080fd5b6132ca86828701612b79565b90945092506132dd90506020850161327d565b90509250925092565b600080600080600080606087890312156132ff57600080fd5b86356001600160401b0381111561331557600080fd5b61332189828a01612c62565b90975095505060208701356001600160401b0381111561334057600080fd5b61334c89828a01612c62565b90955093505060408701356001600160401b0381111561336b57600080fd5b61337789828a01612c62565b979a9699509497509295939492505050565b803563ffffffff8116811461328e57600080fd5b6000806000604084860312156133b257600080fd5b83356001600160401b038111156133c857600080fd5b6133d486828701612b79565b90945092506132dd905060208501613389565b6000806000604084860312156133fc57600080fd5b83356001600160401b0381111561341257600080fd5b61341e86828701612d4f565b93505060208401356001600160401b0381111561343a57600080fd5b61344686828701612b79565b9497909650939450505050565b8183823760009101908152919050565b60006020828403121561347557600080fd5b815161239881612c30565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561235057612350613496565b6000608082018683526080602084015280865180835260a08501915060208801925060005b8181101561350b5783516001600160a01b03168352602093840193909201916001016134e4565b50506001600160a01b0395909516604084015250506060015292915050565b60006020828403121561353c57600080fd5b81516001600160401b0381111561355257600080fd5b8201601f8101841361356357600080fd5b80516001600160401b0381111561357c5761357c612d09565b8060051b61358c60208201612d1f565b918252602081840181019290810190878411156135a857600080fd5b6020850194505b838510156135ce578451808352602095860195909350909101906135af565b979650505050505050565b60208082526006908201526504e4f545f4f560d41b604082015260600190565b60006001820161360b5761360b613496565b5060010190565b6020808252600b908201526a494e565f4144445245535360a81b604082015260600190565b8181038181111561235057612350613496565b60006020828403121561365c57600080fd5b815161239881612f56565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8381526040602082015260006128db604083018486613667565b600063ffffffff8216806136c0576136c0613496565b6000190192915050565b6000808335601e198436030181126136e157600080fd5b8301803591506001600160401b038211156136fb57600080fd5b602001915036819003821315612bba57600080fd5b60006020828403121561372257600080fd5b6123988261327d565b60006020828403121561373d57600080fd5b61239882613389565b60006020828403121561375857600080fd5b5051919050565b808202811582820484141761235057612350613496565b60008261379357634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806137ac57607f821691505b6020821081036137cc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fd5b601f82111561223d57806000526020600020601f840160051c8101602085101561380f5750805b601f840160051c820191505b81811015611fa3576000815560010161381b565b81516001600160401b0381111561384857613848612d09565b61385c816138568454613798565b846137e8565b6020601f82116001811461389057600083156138785750848201515b600019600385901b1c1916600184901b178455611fa3565b600084815260208120601f198516915b828110156138c057878501518255602094850194600190920191016138a0565b50848210156138de5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600082516138ff818460208701613008565b919091019291505056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212204bf92f621a8669e048bb3736bdda8a09451a2d3c8001d199bec02bd5efa9bf0864736f6c634300081b0033