0 txs
0 calls
constructor
constructor()
functions
communityCloseTime
viewfunction communityCloseTime() view returns (uint64)
communityOpenTime
viewfunction communityOpenTime() view returns (uint64)
crowdfundingParticipationFeePercentage
viewfunction crowdfundingParticipationFeePercentage() view returns (uint16)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
earlyAccessHours
viewfunction earlyAccessHours() view returns (uint8)
earlyAccessProportion
viewfunction earlyAccessProportion() view returns (uint16)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
fundClaimedAmount
viewfunction fundClaimedAmount() view returns (uint256)
galaxyParticipationFeePercentage
viewfunction galaxyParticipationFeePercentage() view returns (uint16)
galaxyPoolProportion
viewfunction galaxyPoolProportion() view returns (uint16)
getClaimableFundAmount
viewfunction getClaimableFundAmount() view returns (uint256)
getIDOTokenAmountByOfferedCurrency
viewfunction getIDOTokenAmountByOfferedCurrency(uint256 _amount) view returns (uint256)
getPurchaseTokenAmountByTokenAmount
viewfunction getPurchaseTokenAmountByTokenAmount(uint256 _tokenAmount) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
ignitionFactory
viewfunction ignitionFactory() view returns (address)
isFailBeforeTGEDate
viewfunction isFailBeforeTGEDate() view returns (bool)
isOwner
viewfunction isOwner(address sender) view returns (bool)
maxPurchaseAmountForEarlyAccess
viewfunction maxPurchaseAmountForEarlyAccess() view returns (uint256)
maxPurchaseAmountForKYCUser
viewfunction maxPurchaseAmountForKYCUser() view returns (uint256)
offeredCurrency
viewfunction offeredCurrency() view returns (uint256 rate, uint256 decimal)
OWNER_ROLE
viewfunction OWNER_ROLE() view returns (bytes32)
participationFeeAmount
viewfunction participationFeeAmount() view returns (uint256)
participationFeeClaimedStatus
viewfunction participationFeeClaimedStatus() view returns (bool)
paused
viewfunction paused() view returns (bool)
poolPurchasedAmount
viewfunction poolPurchasedAmount(uint8) view returns (uint256)
purchasedAmount
viewfunction purchasedAmount() view returns (uint256)
purchaseToken
viewfunction purchaseToken() view returns (address)
redundantIDOTokensWithdrawn
viewfunction redundantIDOTokensWithdrawn() view returns (bool)
root
viewfunction root() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenFeeClaimedStatus
viewfunction tokenFeeClaimedStatus() view returns (bool)
tokenFeePercentage
viewfunction tokenFeePercentage() view returns (uint16)
totalRaiseAmount
viewfunction totalRaiseAmount() view returns (uint256)
userPurchasedAmount
viewfunction userPurchasedAmount(address) view returns (uint256 principal, uint256 fee, uint256 withdrawn)
vesting
viewfunction vesting() view returns (address)
whaleCloseTime
viewfunction whaleCloseTime() view returns (uint64)
whaleOpenTime
viewfunction whaleOpenTime() view returns (uint64)
whiteListProportion
viewfunction whiteListProportion() view returns (uint16)
__BasePausable__init
nonpayablefunction __BasePausable__init(address owner)
buyTokenInPool
nonpayablefunction buyTokenInPool(uint8 _type, bytes32[] _proof, uint256 _purchaseAmount, uint256 _maxPurchaseBaseOnAllocations, uint256 _poolLimit)
cancelPool
nonpayablefunction cancelPool(bool _permanentDelete)
claimFund
nonpayablefunction claimFund(address _beneficiary)
claimParticipationFee
nonpayablefunction claimParticipationFee(address _beneficiary)
claimTokenFee
nonpayablefunction claimTokenFee(address _beneficiary)
fundIDOToken
nonpayablefunction fundIDOToken(address _IDOToken, bytes signature)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address[2] addrs, uint256[20] uints, address owner)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setClaimableStatus
nonpayablefunction setClaimableStatus(bool _status)
setRoot
nonpayablefunction setRoot(bytes32 _root)
updateTGEDate
nonpayablefunction updateTGEDate(uint64 _newTGEDate)
updateTime
nonpayablefunction updateTime(uint64 _newWhaleCloseTime, uint64 _newCommunityCloseTime)
withdrawPurchasedAmount
nonpayablefunction withdrawPurchasedAmount(address _beneficiary)
withdrawRedundantIDOToken
nonpayablefunction withdrawRedundantIDOToken(address _beneficiary)
events
BuyToken
event BuyToken(address indexed buyer, address indexed pool, uint256 purchaseAmount, uint256 IDOTokenAmount, uint8 poolType)
CancelPool
event CancelPool(address indexed pool, bool permanentDeleteStatus)
ClaimFund
event ClaimFund(address beneficiary, uint256 claimableAmount)
ClaimParticipationFee
event ClaimParticipationFee(address beneficiary, uint256 participationFeeAmount)
ClaimTokenFee
event ClaimTokenFee(address beneficiary, uint256 tokenFee)
EIP712DomainChanged
event EIP712DomainChanged()
FundIDOToken
event FundIDOToken(address IDOToken, uint256 fundAmount)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Unpaused
event Unpaused(address account)
UpdateRoot
event UpdateRoot(bytes32 root)
UpdateTime
event UpdateTime(uint64 whaleOpenTime, uint64 whaleCloseTime, uint64 communityOpenTime, uint64 communityCloseTime)
WithdrawPurchasedAmount
event WithdrawPurchasedAmount(address sender, address beneficiary, uint256 principalAmount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AlreadyClaimTotalAmount
error AlreadyClaimTotalAmount()
AlreadyPrivateFunded
error AlreadyPrivateFunded()
CallerNotAdmin
error CallerNotAdmin()
CallerNotOwner
error CallerNotOwner()
CrowdFundingParticipationFeePercentageNotInRange
error CrowdFundingParticipationFeePercentageNotInRange()
EarlyAccessNotSupported
error EarlyAccessNotSupported()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ExceedMaxPurchaseAmountForKYCUser
error ExceedMaxPurchaseAmountForKYCUser()
ExceedMaxPurchaseAmountForUser
error ExceedMaxPurchaseAmountForUser()
ExceedPoolPurchaseAmountForUser
error ExceedPoolPurchaseAmountForUser()
ExceedTotalRaiseAmount
error ExceedTotalRaiseAmount()
ExpectedPause
error ExpectedPause()
GalaxyParticipationFeePercentageNotInRange
error GalaxyParticipationFeePercentageNotInRange()
InsufficientFundedAmount
error InsufficientFundedAmount()
InvalidClaimableAmount
error InvalidClaimableAmount()
InvalidInitialization
error InvalidInitialization()
InvalidSigner
error InvalidSigner()
InvalidTime
error InvalidTime()
NotAllowedToAdjustTGEDateExceedsAttempts
error NotAllowedToAdjustTGEDateExceedsAttempts()
NotAllowedToAdjustTGEDateTooFar
error NotAllowedToAdjustTGEDateTooFar()
NotAllowedToAllowInvestorToClaim
error NotAllowedToAllowInvestorToClaim()
NotAllowedToCancelAfterLockupTime
error NotAllowedToCancelAfterLockupTime()
NotAllowedToClaimParticipationFee
error NotAllowedToClaimParticipationFee()
NotAllowedToClaimPurchaseToken
error NotAllowedToClaimPurchaseToken()
NotAllowedToClaimTokenFee
error NotAllowedToClaimTokenFee()
NotAllowedToDoAfterEmergencyCancelled
error NotAllowedToDoAfterEmergencyCancelled()
NotAllowedToDoAfterTGEDate
error NotAllowedToDoAfterTGEDate()
NotAllowedToFundBeforeCommunityTime
error NotAllowedToFundBeforeCommunityTime()
NotAllowedToTransferBeforeCommunityClose
error NotAllowedToTransferBeforeCommunityClose()
NotAllowedToTransferBeforeLockupTime
error NotAllowedToTransferBeforeLockupTime()
NotAllowedToTransferBeforeTGEDate
error NotAllowedToTransferBeforeTGEDate()
NotAllowedToWithdrawPurchasedAmount
error NotAllowedToWithdrawPurchasedAmount()
NotEnoughAllowance
error NotEnoughAllowance()
NotFunded
error NotFunded()
NotInitializing
error NotInitializing()
NotInWhaleList
error NotInWhaleList()
PoolIsAlreadyFunded
error PoolIsAlreadyFunded()
RedundantTokensAlreadyWithdrawn
error RedundantTokensAlreadyWithdrawn()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TimeOutToBuyIDOToken
error TimeOutToBuyIDOToken()
WhitelistParticipationFeePercentageNotInRange
error WhitelistParticipationFeePercentageNotInRange()
ZeroAddressNotValid
error ZeroAddressNotValid()
ZeroAmountNotValid
error ZeroAmountNotValid()
ZeroConversionRateNotValid
error ZeroConversionRateNotValid()
creation bytecode
0x60806040526007805460ff60801b1916600160801b1790553480156200002457600080fd5b506200002f62000035565b620000e9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000865760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000e65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615ccb80620000f96000396000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c806373241e7c116101de578063a95c4d621161010f578063ce7c6410116100ad578063e58378bb1161007c578063e58378bb1461080b578063ebf0c71714610820578063f137993914610829578063f1f8044a1461083257600080fd5b8063ce7c6410146107b8578063d547741f146107d2578063dab5f340146107e5578063e3b37f30146107f857600080fd5b8063bb8e3f44116100e9578063bb8e3f4414610768578063c31360741461077b578063c6b3665c1461078e578063cdc5598e146107a357600080fd5b8063a95c4d6214610743578063adaa039c14610756578063b3679bda1461075f57600080fd5b806391d148541161017c578063a217fddf11610156578063a217fddf146106c4578063a236498e146106cc578063a4f276c7146106df578063a558b65c1461072957600080fd5b806391d148541461069c5780639ac8d38b146106af578063a0918c4f146106bc57600080fd5b8063814dfbdb116101b8578063814dfbdb1461065257806384b0196e1461066557806385f8f4be146106805780638a39face1461068957600080fd5b806373241e7c146106025780637837734f14610628578063812567031461063e57600080fd5b80633baa6fca116102b85780635671e8c9116102565780635f319572116102305780635f319572146105b45780636e3b466d146105d45780636e44a6c9146105e75780636e516bbe146105ef57600080fd5b80635671e8c9146105745780635c975abb146105875780635f1c73521461059f57600080fd5b80633d4527b7116102925780633d4527b71461050057806344c63eec146105135780634f93d1ad1461053e57806350a729281461056157600080fd5b80633baa6fca146104c75780633bc270db146104da5780633d3e3763146104ed57600080fd5b8063226d232a116103255780632f54bf6e116102ff5780632f54bf6e1461048457806334fa224b146104975780633644e515146104ac57806336568abe146104b457600080fd5b8063226d232a1461044b578063248a9ca31461045e5780632f2ff15d1461047157600080fd5b806316b86bfe1161036157806316b86bfe146103e85780631acbc823146103fd5780632013b4c4146104065780632186b3681461043857600080fd5b806301ffc9a71461038857806302bb34c8146103b0578063068350b9146103c7575b600080fd5b61039b6103963660046152b7565b610845565b60405190151581526020015b60405180910390f35b6103b9600e5481565b6040519081526020016103a7565b6007546103d59061ffff1681565b60405161ffff90911681526020016103a7565b6103fb6103f63660046152f0565b61087c565b005b6103b9600d5481565b60095461042090600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016103a7565b6103fb6104463660046153a3565b610add565b6103fb6104593660046153a3565b610eea565b6103b961046c3660046153c0565b611428565b6103fb61047f3660046153d9565b61144a565b61039b6104923660046153a3565b61146c565b6007546103d590600160501b900461ffff1681565b6103b9611486565b6103fb6104c23660046153d9565b611495565b600954610420906001600160401b031681565b6103fb6104e8366004615409565b6114cd565b6103fb6104fb3660046154a2565b611bcc565b6103fb61050e3660046154de565b611fac565b601354610526906001600160a01b031681565b6040516001600160a01b0390911681526020016103a7565b60035460045461054c919082565b604080519283526020830191909152016103a7565b600154610526906001600160a01b031681565b6103fb6105823660046154de565b612266565b600080516020615c568339815191525460ff1661039b565b6007546103d590600160701b900461ffff1681565b6103b96105c23660046154fb565b600c6020526000908152604090205481565b60075461039b9062010000900460ff1681565b6103b961238f565b6103fb6105fd3660046153a3565b6123d1565b60075461061690600160801b900460ff1681565b60405160ff90911681526020016103a7565b6007546103d590640100000000900461ffff1681565b60135461039b90600160b01b900460ff1681565b6103fb610660366004615518565b6125f7565b61066d61310c565b6040516103a797969594939291906155bc565b6103b960065481565b6103b96106973660046153c0565b6131bd565b61039b6106aa3660046153d9565b6131e5565b600b5461039b9060ff1681565b61039b61321d565b6103b9600081565b6103b96106da3660046153c0565b61334f565b61070e6106ed3660046153a3565b600f6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103a7565b60095461042090600160801b90046001600160401b031681565b600254610526906001600160a01b031681565b6103b9600a5481565b6103b960085481565b6103fb6107763660046153a3565b61338f565b6103fb6107893660046153a3565b613407565b6007546103d590600160301b900461ffff1681565b6007546103d590600160601b900461ffff1681565b60095461042090600160401b90046001600160401b031681565b6103fb6107e03660046153d9565b61381e565b6103fb6107f33660046153c0565b61383a565b6103fb610806366004615655565b61390d565b6103b9600080516020615bf683398151915281565b6103b960005481565b6103b960055481565b6103fb6108403660046153a3565b613ce0565b60006001600160e01b03198216637965db0b60e01b148061087657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610884613fc6565b61088c613ff9565b600754600160301b900461ffff166108a78733868686614031565b60ff8716610908576009546001600160401b03164210806108d95750600954600160401b90046001600160401b031642115b156108f757604051630bab667960e31b815260040160405180910390fd5b50600754640100000000900461ffff165b60021960ff88160161096c576009546001600160401b031642108061093e5750600954600160401b90046001600160401b031642115b1561095c57604051630bab667960e31b815260040160405180910390fd5b50600754600160401b900461ffff165b60001960ff8816016109915760405163c2f3422960e01b815260040160405180910390fd5b60011960ff8816016109fc57600954600160801b90046001600160401b03164210806109ce5750600954600160c01b90046001600160401b031642115b156109ec57604051630bab667960e31b815260040160405180910390fd5b50600754600160301b900461ffff165b610a0b8686868685878d61431d565b60ff8716610a38573360009081526010602052604081208054869290610a3290849061569e565b90915550505b60021960ff881601610a69573360009081526011602052604081208054869290610a6390849061569e565b90915550505b60011960ff881601610a9a573360009081526012602052604081208054869290610a9490849061569e565b90915550505b60ff87166000908152600c602052604081208054869290610abc90849061569e565b90915550506001600080516020615c7683398151915255505b505050505050565b6001546001600160a01b0316632f54bf6e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5791906156b1565b610b745760405163036c8cf960e11b815260040160405180910390fd5b610b7c613fc6565b6007546301000000900460ff16158015610c0a5750601360009054906101000a90046001600160a01b03166001600160a01b0316637c6543036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0891906156b1565b155b15610c2857604051636af784dd60e11b815260040160405180910390fd5b610c30613ff9565b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa158015610c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9d91906156e5565b505060075492935050506301000000900460ff16158015610d3c57506001546040805163bc87783f60e01b815290516001600160401b038416926001600160a01b03169163bc87783f9160048083019260209291908290030181865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f919061574c565b610d39919061569e565b42105b15610d5a57604051637886cea160e01b815260040160405180910390fd5b6007546301000000900460ff168015610d845750600954600160c01b90046001600160401b031642105b15610da257604051631ee474af60e21b815260040160405180910390fd5b601360009054906101000a90046001600160a01b03166001600160a01b0316639aa74a8c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906156b1565b15610e375760405163d66e246160e01b815260040160405180910390fd5b600b5460ff161515600103610e5f5760405163dbf0a95d60e01b815260040160405180910390fd5b600b805460ff19166001179055600a54600254610e89916001600160a01b0390911690849061442e565b600a54604080516001600160a01b038516815260208101929092527f271b8a9c81b4d02d8aca6c2a2e341a4e3e125356c586780413e857a0fadd766a910160405180910390a150610ee76001600080516020615c7683398151915255565b50565b610ef33361146c565b610f1057604051632e6c18c960e11b815260040160405180910390fd5b610f18613fc6565b6007546301000000900460ff16158015610fa65750601360009054906101000a90046001600160a01b03166001600160a01b0316637c6543036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa491906156b1565b155b15610fc457604051636af784dd60e11b815260040160405180910390fd5b610fcc613ff9565b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103991906156e5565b505060075492935050506301000000900460ff161580156110d857506001546040805163bc87783f60e01b815290516001600160401b038416926001600160a01b03169163bc87783f9160048083019260209291908290030181865afa1580156110a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cb919061574c565b6110d5919061569e565b42105b156110f657604051637886cea160e01b815260040160405180910390fd5b6007546301000000900460ff1680156111205750600954600160c01b90046001600160401b031642105b1561113e57604051631ee474af60e21b815260040160405180910390fd5b601360009054906101000a90046001600160a01b03166001600160a01b0316639aa74a8c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b591906156b1565b156111d35760405163d66e246160e01b815260040160405180910390fd5b601360009054906101000a90046001600160a01b03166001600160a01b03166374478bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124a91906156b1565b61126757604051639cbf808960e01b815260040160405180910390fd5b600061127161238f565b905060008111611294576040516316087e8160e11b815260040160405180910390fd5b80600e54036112b65760405163c23ca7e360e01b815260040160405180910390fd5b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611322919061574c565b81111561139a576002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611371573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611395919061574c565b61139c565b805b905080600e60008282546113b0919061569e565b90915550506002546113cc906001600160a01b0316848361442e565b604080516001600160a01b0385168152602081018390527f0f8819b8888ebff61f219df3a7380d5329e5c298966c09de72e7a1449149b47491015b60405180910390a15050610ee76001600080516020615c7683398151915255565b6000908152600080516020615c36833981519152602052604090206001015490565b61145382611428565b61145c8161448d565b6114668383614497565b50505050565b6000610876600080516020615bf6833981519152836131e5565b6000611490614543565b905090565b6001600160a01b03811633146114be5760405163334bd91960e11b815260040160405180910390fd5b6114c8828261454d565b505050565b6114d63361146c565b6114f357604051632e6c18c960e11b815260040160405180910390fd5b6114fb613fc6565b611503613ff9565b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa15801561154c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157091906156e5565b505050509050806001600160401b0316421061159f57604051630487bd8960e11b815260040160405180910390fd5b601360009054906101000a90046001600160a01b03166001600160a01b0316637c6543036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161691906156b1565b156116345760405163221ede4760e01b815260040160405180910390fd5b60135460408051630edaf7f360e11b815290516000926001600160a01b031691631db5efe69160048083019260209291908290030181865afa15801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190615765565b905060006116b16008546131bd565b90506001600160a01b0382166119e057600954600160c01b90046001600160401b031642116116f357604051634025f6b360e11b815260040160405180910390fd5b6000866001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611733573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261175b9190810190615798565b60405160200161176b9190615844565b6040516020818303038152906040528051906020012090506000876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190615860565b905060006117f3611486565b604080517f52d52760e40624a39bea36339850f64206470d82f714f11095b454fbff6de95260208201526001600160a01b038c16918101919091523060608201526080810185905260ff841660a082015260c0016040516020818303038152906040528051906020012060405160200161188492919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600154601f8c018390048302850183019093528a845293506001600160a01b0390911691632f54bf6e916118ec9185918d908d90819084018382808284376000920191909152506145c992505050565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195491906156b1565b61197157604051632057875960e21b815260040160405180910390fd5b601354604051620c8f6d60e81b81526001600160a01b038b8116600483015290911690630c8f6d0090602401600060405180830381600087803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050506119da600d546131bd565b93505050505b6013546040516370a0823160e01b81526001600160a01b0391821660048201526000918816906370a0823190602401602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061574c565b9050611a6d336013546001600160a01b038a8116929116856145f3565b6013546040516370a0823160e01b81526001600160a01b0391821660048201526000918916906370a0823190602401602060405180830381865afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add919061574c565b9050611ae9838361569e565b8114611b085760405163688a26af60e11b815260040160405180910390fd5b6013546040516301f76b3560e11b815260048101859052600160248201526001600160a01b03909116906303eed66a90604401600060405180830381600087803b158015611b5557600080fd5b505af1158015611b69573d6000803e3d6000fd5b5050604080516001600160a01b038c168152602081018790527ffd1c6e1b2189d312d7360ee69c2e59b038f3f1e637e102efc2c3a833b617958e935001905060405180910390a150505050506114c86001600080516020615c7683398151915255565b6001546001600160a01b0316632f54bf6e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4691906156b1565b611c635760405163036c8cf960e11b815260040160405180910390fd5b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa158015611cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd091906156e5565b505050509050806001600160401b03164210611cff57604051630487bd8960e11b815260040160405180910390fd5b601360009054906101000a90046001600160a01b03166001600160a01b031663164e2c2a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7691906156b1565b8015611df45750601360009054906101000a90046001600160a01b03166001600160a01b0316637c6543036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df491906156b1565b15611e125760405163beffa56560e01b815260040160405180910390fd5b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa158015611e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7f91906156e5565b505060095492935050506001600160401b038086169116101580611eb55750826001600160401b0316846001600160401b031610155b80611ed15750806001600160401b0316836001600160401b0316115b15611eef576040516337bf561360e11b815260040160405180910390fd5b60098054600160401b600160c01b031916600160401b6001600160401b0387811682810267ffffffffffffffff60801b191693909317600160801b938402176001600160c01b038116600160c01b8984168102918217968790556040805193851692851692909217835293860483166020830152938504821693810193909352920490911660608201527feedf049ba2a9e400be9e2a2d93b7e6023411a5c4fd77fe703bc75c2fea691fc39060800160405180910390a150505050565b6001546001600160a01b0316632f54bf6e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202691906156b1565b6120435760405163036c8cf960e11b815260040160405180910390fd5b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa15801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b091906156e5565b505050509050806001600160401b031642106121c5576001546040805163bc87783f60e01b815290516001600160401b038416926001600160a01b03169163bc87783f9160048083019260209291908290030181865afa158015612118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213c919061574c565b612146919061569e565b421115612166576040516306e0252760e51b815260040160405180910390fd5b6013546040516358e0fb5560e01b8152600160048201526001600160a01b03909116906358e0fb5590602401600060405180830381600087803b1580156121ac57600080fd5b505af11580156121c0573d6000803e3d6000fd5b505050505b6121cd61462c565b601354604051635671e8c960e01b8152600060048201526001600160a01b0390911690635671e8c990602401600060405180830381600087803b15801561221357600080fd5b505af1158015612227573d6000803e3d6000fd5b505060405184151581523092507fcf113a21b92df7813071b3bb491583c8469cf02f9b1c0280d4500d339570a17f915060200160405180910390a25050565b6001546001600160a01b0316632f54bf6e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156122bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e091906156b1565b6122fd5760405163036c8cf960e11b815260040160405180910390fd5b80151560010361232d5761230f61321d565b1561232d5760405163098bb09f60e41b815260040160405180910390fd5b601354604051635671e8c960e01b815282151560048201526001600160a01b0390911690635671e8c990602401600060405180830381600087803b15801561237457600080fd5b505af1158015612388573d6000803e3d6000fd5b5050505050565b600754600d546000918291612710916123ae9161ffff9091169061587d565b6123b89190615894565b9050600081600d546123ca91906158b6565b9392505050565b6123d9613ff9565b6123e161321d565b1580156124625750601360009054906101000a90046001600160a01b03166001600160a01b0316639aa74a8c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246091906156b1565b155b1561248057604051638d39ebd960e01b815260040160405180910390fd5b336000908152600f602052604090206002810154156124b257604051638d39ebd960e01b815260040160405180910390fd5b60135460408051635efb0c5d60e11b815233600482015281516000936001600160a01b03169263bdf618ba92602480820193918290030181865afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252291906158c9565b91505060006125308261334f565b8354600185015491925090600083612548838561569e565b61255291906158b6565b90508060000361257557604051631a30ee4d60e11b815260040160405180910390fd5b600280870182905554612592906001600160a01b0316888361442e565b604080513381526001600160a01b038916602082015280820183905290517f06ef36b707e3dba03834e3b12d116525831e552283719e0bb25d309006322a619181900360600190a1505050505050610ee76001600080516020615c7683398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561263c5750825b90506000826001600160401b031660011480156126585750303b155b905081158015612666575080155b156126845760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156126ae57845460ff60401b1916600160401b1785555b604051635c1c862160e01b81526001600160a01b03871660048201527307ba22f60cfd840ea3839140315c56dc4617e6fd90635c1c86219060240160006040518083038186803b15801561270157600080fd5b505af4158015612715573d6000803e3d6000fd5b5050505061275860405180604001604052806004815260200163141bdbdb60e21b815250604051806040016040528060018152602001603160f81b81525061467e565b6127618661338f565b60405163eaa7e47f60e01b81527307ba22f60cfd840ea3839140315c56dc4617e6fd9063eaa7e47f9061279a908b908b906004016158ed565b60006040518083038186803b1580156127b257600080fd5b505af41580156127c6573d6000803e3d6000fd5b505050506127d13390565b600180546001600160a01b0319166001600160a01b0392909216919091179055600061280060208a018a6153a3565b6001600160a01b031603612822576007805463ff000000191663010000001790555b6001546040805163cc6f033360e01b815290516000926001600160a01b03169163cc6f0333916004808301926020929190829003018187875af115801561286d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128919190615765565b601380546001600160a01b0319166001600160a01b03831690811790915590915063edbf4ac2306128c560208d018d6153a3565b60405160e084901b6001600160e01b03191681526001600160a01b039283166004820152911660248201526101808b013560448201526101a08b013560648201526101c08b013560848201526101e08b013560a48201526102008b013560c482015260e401600060405180830381600087803b15801561294457600080fd5b505af1158015612958573d6000803e3d6000fd5b505050507307ba22f60cfd840ea3839140315c56dc4617e6fd635c1c86218a6001600281106129895761298961593c565b60200201602081019061299c91906153a3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b1580156129db57600080fd5b505af41580156129ef573d6000803e3d6000fd5b5050505088600160028110612a0657612a0661593c565b602002016020810190612a1991906153a3565b600280546001600160a01b0319166001600160a01b03929092169190911790558735600655612a4f8860015b6020020135614694565b6007805461ffff191661ffff92909216919091179055612a70886002612a45565b6007805461ffff929092166401000000000265ffff0000000019909216919091179055612a9e886003612a45565b6007805461ffff92909216600160301b0267ffff00000000000019909216919091179055612acd886012612a45565b600760086101000a81548161ffff021916908361ffff160217905550600160009054906101000a90046001600160a01b03166001600160a01b031663d8c128226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b609190615952565b60075461ffff9182166401000000009091049091161080612c0a5750600160009054906101000a90046001600160a01b03166001600160a01b031663884c45096040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf39190615952565b60075461ffff918216640100000000909104909116115b15612c28576040516310a9cc4160e11b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663397a1cb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9f9190615952565b60075461ffff918216600160301b9091049091161080612d475750600160009054906101000a90046001600160a01b03166001600160a01b031663d6de71fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d319190615952565b60075461ffff918216600160301b909104909116115b15612d6557604051631afca5c960e31b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663e70ca6d16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddc9190615952565b60075461ffff918216600160401b9091049091161080612e845750600160009054906101000a90046001600160a01b03166001600160a01b031663b946898c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6e9190615952565b60075461ffff918216600160401b909104909116115b15612ea257604051634d34a83560e11b815260040160405180910390fd5b612ead886004612a45565b6007805461ffff92909216600160501b0261ffff60501b19909216919091179055612ed9886005612a45565b6007805461ffff92909216600160601b0261ffff60601b19909216919091179055612f05886013612a45565b6007805461ffff60701b1916600160701b61ffff9384168102919091179182905560c08b0135600855612710928392600160601b81048216928104821691612f5591600160501b9004168461596d565b612f5f919061596d565b61ffff16600854612f70919061587d565b612f7a919061587d565b612f849190615894565b612f8e9190615894565b600555612f9e60e08901356146c7565b6009805467ffffffffffffffff19166001600160401b0392909216919091179055612fda612fd56101008a013560e08b013561569e565b6146c7565b60098054600160401b600160c01b031916600160401b6001600160401b0393841690810267ffffffffffffffff60801b191691909117600160801b918202179182905561303492612fd5926101208d01359290041661569e565b600980546001600160401b0392909216600160c01b026001600160c01b0390921691909117905561014088013560035561016088013560045561307b6102208901356146fd565b6013805460ff60a81b1916600160a81b60ff938416810291909117918290556001910490911611156130bb576013805460ff60a81b1916600160a81b1790555b50831561310257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60006060808280808381600080516020615c16833981519152805490915015801561313957506001810154155b6131825760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b61318a61472b565b6131926147ee565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6004546000906131ce90600a615a6c565b6003546131db908461587d565b6108769190615894565b6000918252600080516020615c36833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080601360009054906101000a90046001600160a01b03166001600160a01b031663dc25a3006040518163ffffffff1660e01b815260040160a060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906156e5565b5050505090506132b6600080516020615c568339815191525460ff1690565b806133495750601360009054906101000a90046001600160a01b03166001600160a01b0316637c6543036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561330f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333391906156b1565b1580156133495750806001600160401b03164210155b91505090565b60035460009081036133745760405163db701a2760e01b815260040160405180910390fd5b60035460045461338590600a615a6c565b6131db908461587d565b61339761482d565b6001600160a01b0381166133be57604051633bf95ba760e01b815260040160405180910390fd5b6133c6614876565b6133ce61487e565b6133d661488e565b6133ee600080516020615bf683398151915282614497565b50610ee7600080516020615bf68339815191528061489e565b6001546001600160a01b0316632f54bf6e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561345d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348191906156b1565b61349e5760405163036c8cf960e11b815260040160405180910390fd5b6134a6613fc6565b6007546301000000900460ff161580156135345750601360009054906101000a90046001600160a01b03166001600160a01b0316637c6543036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353291906156b1565b155b1561355257604051636af784dd60e11b815260040160405180910390fd5b61355a613ff9565b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa1580156135a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c791906156e5565b505060075492935050506301000000900460ff1615801561366657506001546040805163bc87783f60e01b815290516001600160401b038416926001600160a01b03169163bc87783f9160048083019260209291908290030181865afa158015613635573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613659919061574c565b613663919061569e565b42105b1561368457604051637886cea160e01b815260040160405180910390fd5b6007546301000000900460ff1680156136ae5750600954600160c01b90046001600160401b031642105b156136cc57604051631ee474af60e21b815260040160405180910390fd5b601360009054906101000a90046001600160a01b03166001600160a01b0316639aa74a8c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561371f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374391906156b1565b156137615760405163d66e246160e01b815260040160405180910390fd5b60075462010000900460ff16151560010361378f57604051635dcab31160e01b815260040160405180910390fd5b600754600d54600091612710916137aa9161ffff169061587d565b6137b49190615894565b6007805462ff00001916620100001790556002549091506137df906001600160a01b0316848361442e565b604080516001600160a01b0385168152602081018390527fcb4040dca59670b070ce40b47eb84aff39fa7db8cd83ad903380534add01dffa9101611407565b61382782611428565b6138308161448d565b611466838361454d565b6001546001600160a01b0316632f54bf6e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b491906156b1565b6138d15760405163036c8cf960e11b815260040160405180910390fd5b60008190556040518181527fc8d52687b85ab11e6859cb0b390a9e926e1b348d9796e084f88f88420c176fc6906020015b60405180910390a150565b6001546001600160a01b0316632f54bf6e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613963573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398791906156b1565b6139a45760405163036c8cf960e11b815260040160405180910390fd5b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa1580156139ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1191906156e5565b505050509050806001600160401b03164210613a4057604051630487bd8960e11b815260040160405180910390fd5b6009546001600160401b03808416600160c01b909204161115613a76576040516337bf561360e11b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b03166370e4a6336040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed919061574c565b601354600160a01b900460ff1610613b185760405163dc37e81b60e01b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b03166362c1adc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8f919061574c565b601360009054906101000a90046001600160a01b03166001600160a01b031663e37bcc206040518163ffffffff1660e01b8152600401602060405180830381865afa158015613be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c069190615a78565b6001600160401b0316613c19919061569e565b826001600160401b03161115613c4257604051630181c67960e41b815260040160405180910390fd5b601354604051630e3b37f360e41b81526001600160401b03841660048201526001600160a01b039091169063e3b37f3090602401600060405180830381600087803b158015613c9057600080fd5b505af1158015613ca4573d6000803e3d6000fd5b505060138054600160a01b900460ff16925090506014613cc383615a95565b91906101000a81548160ff021916908360ff160217905550505050565b613ce93361146c565b613d0657604051632e6c18c960e11b815260040160405180910390fd5b601354600160b01b900460ff1615613d3157604051636beab46760e01b815260040160405180910390fd5b6013805460ff60b01b1916600160b01b1790556000613d4e61321d565b15613e375760135460408051630edaf7f360e11b815290516000926001600160a01b031691631db5efe69160048083019260209291908290030181865afa158015613d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc19190615765565b6013546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015613e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2e919061574c565b9150613f649050565b6013546040805162dc25a360e81b815290516000926001600160a01b03169163dc25a3009160048083019260a09291908290030181865afa158015613e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea491906156e5565b505050509050806001600160401b0316421015613ed4576040516356ecb37b60e11b815260040160405180910390fd5b613edf600d546131bd565b601360009054906101000a90046001600160a01b03166001600160a01b0316638488e5e66040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f56919061574c565b613f6091906158b6565b9150505b601354604051631773307960e21b81526001600160a01b0384811660048301526024820184905290911690635dccc1e490604401600060405180830381600087803b158015613fb257600080fd5b505af1158015610ad5573d6000803e3d6000fd5b600080516020615c568339815191525460ff1615613ff75760405163d93c066560e01b815260040160405180910390fd5b565b600080516020615c7683398151915280546001190161402b57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b604051633a4d4bcd60e11b8152600481018490527307ba22f60cfd840ea3839140315c56dc4617e6fd9063749a979a9060240160006040518083038186803b15801561407c57600080fd5b505af4158015614090573d6000803e3d6000fd5b5050505060085483600d546140a5919061569e565b11156140c45760405163d68debb160e01b815260040160405180910390fd5b6006548311156140e757604051633198921960e11b815260040160405180910390fd5b60ff85166141c5576007546008546000916127109161411191600160501b900461ffff169061587d565b61411b9190615894565b90506000821561413b578383101561413457508161413e565b508261413e565b50825b60ff87166000908152600c6020526040902054829061415e90879061569e565b111561417d57604051637423ee2960e11b815260040160405180910390fd5b6001600160a01b03861660009081526010602052604090205481906141a390879061569e565b11156141c257604051632b37c00360e11b815260040160405180910390fd5b50505b60021960ff86160161428657600754600854600091612710916141f391600160701b900461ffff169061587d565b6141fd9190615894565b60ff87166000908152600c6020526040902054909150819061422090869061569e565b111561423f57604051637423ee2960e11b815260040160405180910390fd5b6001600160a01b038516600090815260116020526040902054839061426590869061569e565b111561428457604051632b37c00360e11b815260040160405180910390fd5b505b60001960ff8616016142ab5760405163c2f3422960e01b815260040160405180910390fd5b60011960ff8616016123885760006006548211806142c7575081155b6142d157816142d5565b6006545b6001600160a01b03861660009081526012602052604090205490915081906142fe90869061569e565b1115610ad557604051632b37c00360e11b815260040160405180910390fd5b6006546000907f13e31188d81b941f4c541528790db4031bef078b78d364bde6fc2d4e5ad79e019060ff8416614371577fed4b80c86c7954bdbf516c492acb4a2899eb0ee85b7c74e26d85e55a07562c9591505b60021960ff8516016143a357507faee674c6ada01c6d4ee4067d160ffdacc9cc9aba7ca34516f8c9ff75fdc8d7239050835b60001960ff8516016143d3577fed4b80c86c7954bdbf516c492acb4a2899eb0ee85b7c74e26d85e55a07562c9591505b6143e23383838a898f8f614901565b92508261440257604051637c7efb5360e11b815260040160405180910390fd5b61440e338988876149a5565b50505050505050505050565b6001600080516020615c7683398151915255565b6040516001600160a01b038381166024830152604482018390526114c891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614d08565b610ee78133614d79565b6000600080516020615c368339815191526144b284846131e5565b614532576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556144e83390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610876565b6000915050610876565b5092915050565b6000611490614db2565b6000600080516020615c3683398151915261456884846131e5565b15614532576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610876565b6000806000806145d98686614e26565b9250925092506145e98282614e73565b5090949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526114669186918216906323b872dd9060840161445b565b614634613fc6565b600080516020615c56833981519152805460ff191660011781556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001613902565b61468661482d565b6146908282614f2c565b5050565b600061ffff8211156146c3576040516306dfcc6560e41b81526010600482015260248101839052604401613179565b5090565b60006001600160401b038211156146c357604080516306dfcc6560e41b8152600481019190915260248101839052604401613179565b600060ff8211156146c3576040516306dfcc6560e41b81526008600482015260248101839052604401613179565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020615c168339815191529161476a90615ab4565b80601f016020809104026020016040519081016040528092919081815260200182805461479690615ab4565b80156147e35780601f106147b8576101008083540402835291602001916147e3565b820191906000526020600020905b8154815290600101906020018083116147c657829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1038054606091600080516020615c168339815191529161476a90615ab4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613ff757604051631afcd79f60e31b815260040160405180910390fd5b613ff761482d565b61488661482d565b613ff7614f8d565b61489661482d565b613ff7614fae565b600080516020615c3683398151915260006148b884611428565b600085815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b6040516bffffffffffffffffffffffff19606089901b16602082015260348101879052605481018690526074810185905260948101849052600090819060b4016040516020818303038152906040528051906020012090506149988484808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250549250859150614fb69050565b9998505050505050505050565b6006546001600160a01b0385166000908152600f60205260409020546149cc90859061569e565b11156149eb57604051633198921960e11b815260040160405180910390fd5b6040516353baaca160e11b815260048101849052602481018390526000907307ba22f60cfd840ea3839140315c56dc4617e6fd9063a775594290604401602060405180830381865af4158015614a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a69919061574c565b90506000601360159054906101000a900460ff1660ff16600114614a9657614a91828661569e565b614a98565b845b9050614aa43382614fcc565b601354600160a81b900460ff16158015614abe5750600082115b15614b24576001600160a01b0386166000908152600f602052604081206001018054849290614aee90849061569e565b9250508190555081600a6000828254614b07919061569e565b9091555050600254614b24906001600160a01b03168730856145f3565b614b2e868661505f565b6000614b39866131bd565b601354909150600160a81b900460ff16600103614c4a57614b5d61069784886158b6565b90506000614b6a846131bd565b6013546001546040805163f108e22560e01b815290519394506001600160a01b039283169363419544a0939092169163f108e225916004808201926020929091908290030181865afa158015614bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614be89190615765565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b158015614c3057600080fd5b505af1158015614c44573d6000803e3d6000fd5b50505050505b60135460405163020caa2560e51b81526001600160a01b038981166004830152602482018490529091169063419544a090604401600060405180830381600087803b158015614c9857600080fd5b505af1158015614cac573d6000803e3d6000fd5b5050604080518981526020810185905260ff88168183015290513093506001600160a01b038b1692507f6666857ade20eaaed88e2671721b22c45635cc01006796336554a69f926be2f99181900360600190a350505050505050565b600080602060008451602086016000885af180614d2b576040513d6000823e3d81fd5b50506000513d91508115614d43578060011415614d50565b6001600160a01b0384163b155b1561146657604051635274afe760e01b81526001600160a01b0385166004820152602401613179565b614d8382826131e5565b6146905760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401613179565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614ddd615081565b614de56150eb565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008060008351604103614e605760208401516040850151606086015160001a614e528882858561512f565b955095509550505050614e6c565b50508151600091506002905b9250925092565b6000826003811115614e8757614e87615672565b03614e90575050565b6001826003811115614ea457614ea4615672565b03614ec25760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115614ed657614ed6615672565b03614ef75760405163fce698f760e01b815260048101829052602401613179565b6003826003811115614f0b57614f0b615672565b03614690576040516335e2f38360e21b815260048101829052602401613179565b614f3461482d565b600080516020615c168339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102614f6e8482615b36565b5060038101614f7d8382615b36565b5060008082556001909101555050565b614f9561482d565b600080516020615c56833981519152805460ff19169055565b61441a61482d565b600082614fc385846151fe565b14949350505050565b600254604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301528392169063dd62ed3e90604401602060405180830381865afa15801561501c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615040919061574c565b101561469057604051634fd3af0760e01b815260040160405180910390fd5b600254615077906001600160a01b03168330846145f3565b6146908282615241565b6000600080516020615c168339815191528161509b61472b565b8051909150156150b357805160209091012092915050565b815480156150c2579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020615c16833981519152816151056147ee565b80519091501561511d57805160209091012092915050565b600182015480156150c2579392505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561516a57506000915060039050826151f4565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156151be573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166151ea575060009250600191508290506151f4565b9250600091508190505b9450945094915050565b600081815b84518110156152395761522f828683815181106152225761522261593c565b602002602001015161528b565b9150600101615203565b509392505050565b6001600160a01b0382166000908152600f60205260408120805483929061526990849061569e565b9250508190555080600d6000828254615282919061569e565b90915550505050565b60008183106152a75760008281526020849052604090206123ca565b5060009182526020526040902090565b6000602082840312156152c957600080fd5b81356001600160e01b0319811681146123ca57600080fd5b60ff81168114610ee757600080fd5b60008060008060008060a0878903121561530957600080fd5b8635615314816152e1565b955060208701356001600160401b038082111561533057600080fd5b818901915089601f83011261534457600080fd5b81358181111561535357600080fd5b8a60208260051b850101111561536857600080fd5b979a60209290920199509697604081013597506060810135965060800135945092505050565b6001600160a01b0381168114610ee757600080fd5b6000602082840312156153b557600080fd5b81356123ca8161538e565b6000602082840312156153d257600080fd5b5035919050565b600080604083850312156153ec57600080fd5b8235915060208301356153fe8161538e565b809150509250929050565b60008060006040848603121561541e57600080fd5b83356154298161538e565b925060208401356001600160401b038082111561544557600080fd5b818601915086601f83011261545957600080fd5b81358181111561546857600080fd5b87602082850101111561547a57600080fd5b6020830194508093505050509250925092565b6001600160401b0381168114610ee757600080fd5b600080604083850312156154b557600080fd5b82356154c08161548d565b915060208301356153fe8161548d565b8015158114610ee757600080fd5b6000602082840312156154f057600080fd5b81356123ca816154d0565b60006020828403121561550d57600080fd5b81356123ca816152e1565b60008060006102e0848603121561552e57600080fd5b604084018581111561553f57600080fd5b8493506102c085018681111561555457600080fd5b909250356155618161538e565b809150509250925092565b60005b8381101561558757818101518382015260200161556f565b50506000910152565b600081518084526155a881602086016020860161556c565b601f01601f19169290920160200192915050565b60ff60f81b881681526000602060e060208401526155dd60e084018a615590565b83810360408501526155ef818a615590565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561564357835183529284019291840191600101615627565b50909c9b505050505050505050505050565b60006020828403121561566757600080fd5b81356123ca8161548d565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561087657610876615688565b6000602082840312156156c357600080fd5b81516123ca816154d0565b805161ffff811681146156e057600080fd5b919050565b600080600080600060a086880312156156fd57600080fd5b85516157088161548d565b9450615716602087016156ce565b935060408601516157268161548d565b60608701519093506157378161548d565b80925050608086015190509295509295909350565b60006020828403121561575e57600080fd5b5051919050565b60006020828403121561577757600080fd5b81516123ca8161538e565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156157aa57600080fd5b81516001600160401b03808211156157c157600080fd5b818401915084601f8301126157d557600080fd5b8151818111156157e7576157e7615782565b604051601f8201601f19908116603f0116810190838211818310171561580f5761580f615782565b8160405282815287602084870101111561582857600080fd5b61583983602083016020880161556c565b979650505050505050565b6000825161585681846020870161556c565b9190910192915050565b60006020828403121561587257600080fd5b81516123ca816152e1565b808202811582820484141761087657610876615688565b6000826158b157634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561087657610876615688565b600080604083850312156158dc57600080fd5b505080516020909101519092909150565b6102c08101818460005b600281101561592957813561590b8161538e565b6001600160a01b0316835260209283019291909101906001016158f7565b5050506102808360408401379392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561596457600080fd5b6123ca826156ce565b61ffff82811682821603908082111561453c5761453c615688565b600181815b808511156159c35781600019048211156159a9576159a9615688565b808516156159b657918102915b93841c939080029061598d565b509250929050565b6000826159da57506001610876565b816159e757506000610876565b81600181146159fd5760028114615a0757615a23565b6001915050610876565b60ff841115615a1857615a18615688565b50506001821b610876565b5060208310610133831016604e8410600b8410161715615a46575081810a610876565b615a508383615988565b8060001904821115615a6457615a64615688565b029392505050565b60006123ca83836159cb565b600060208284031215615a8a57600080fd5b81516123ca8161548d565b600060ff821660ff8103615aab57615aab615688565b60010192915050565b600181811c90821680615ac857607f821691505b602082108103615ae857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156114c8576000816000526020600020601f850160051c81016020861015615b175750805b601f850160051c820191505b81811015610ad557828155600101615b23565b81516001600160401b03811115615b4f57615b4f615782565b615b6381615b5d8454615ab4565b84615aee565b602080601f831160018114615b985760008415615b805750858301515b600019600386901b1c1916600185901b178555610ad5565b600085815260208120601f198616915b82811015615bc757888601518255948401946001909101908401615ba8565b5085821015615be55787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214ea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220c054e1d30ebb62bd2aa74f4b9d36f3685b1451ef9ce43d5aca8d73d3ac37e21164736f6c63430008170033