0 txs
96 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
Bascule
viewfunction Bascule() view returns (address)
calcUnstakeRequestAmount
viewfunction calcUnstakeRequestAmount(bytes scriptPubkey, uint256 amount) view returns (uint256 amountAfterFee, bool isAboveDust)
CLAIMER_ROLE
viewfunction CLAIMER_ROLE() view returns (bytes32)
consortium
viewfunction consortium() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultAdmin
viewfunction defaultAdmin() view returns (address)
defaultAdminDelay
viewfunction defaultAdminDelay() view returns (uint48)
defaultAdminDelayIncreaseWait
viewfunction defaultAdminDelayIncreaseWait() view returns (uint48)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getAssetRouter
viewfunction getAssetRouter() view returns (address)
getFeeDigest
viewfunction getFeeDigest(uint256 fee, uint256 expiry) view returns (bytes32)
getMintFee
viewfunction getMintFee() view returns (uint256)
getRedeemFee
viewfunction getRedeemFee() view returns (uint256)
getRedeemForBtcMinAmount
viewfunction getRedeemForBtcMinAmount() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTreasury
viewfunction getTreasury() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isNative
purefunction isNative() pure returns (bool)
isRedeemsEnabled
viewfunction isRedeemsEnabled() view returns (bool)
MINTER_ROLE
viewfunction MINTER_ROLE() view returns (bytes32)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
toNativeCommission
viewfunction toNativeCommission() view returns (uint64)
totalSupply
viewfunction totalSupply() view returns (uint256)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
batchMint
nonpayablefunction batchMint(address[] to, uint256[] amount)
batchMintV1
nonpayablefunction batchMintV1(bytes[] payload, bytes[] proof)
batchMintV1WithFee
nonpayablefunction batchMintV1WithFee(bytes[] mintPayload, bytes[] proof, bytes[] feePayload, bytes[] userSignature)
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
burn
nonpayablefunction burn(address from, uint256 amount)
burn
nonpayablefunction burn(uint256 amount)
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
changeAssetRouter
nonpayablefunction changeAssetRouter(address newVal)
changeBascule
nonpayablefunction changeBascule(address newVal)
changeConsortium
nonpayablefunction changeConsortium(address newVal)
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
changeNameAndSymbol
nonpayablefunction changeNameAndSymbol(string name_, string symbol_)
changeRedeemFee
nonpayablefunction changeRedeemFee(uint256 newVal)
changeRedeemForBtcMinAmount
nonpayablefunction changeRedeemForBtcMinAmount(uint256 newVal)
changeTreasuryAddress
nonpayablefunction changeTreasuryAddress(address newValue)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address consortium_, address treasury_, string name_, string symbol_, address initialOwner, uint48 initialOwnerDelay)
mint
nonpayablefunction mint(address to, uint256 amount)
mintV1
nonpayablefunction mintV1(bytes rawPayload, bytes proof)
mintV1WithFee
nonpayablefunction mintV1WithFee(bytes mintPayload, bytes proof, bytes feePayload, bytes userSignature)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeemForBtc
nonpayablefunction redeemForBtc(bytes scriptPubkey, uint256 amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
toggleRedeemsForBtc
nonpayablefunction toggleRedeemsForBtc()
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AssetRouterChanged
event AssetRouterChanged(address indexed newVal, address indexed prevVal)
BasculeChanged
event BasculeChanged(address indexed prevVal, address indexed newVal)
BatchMintSkipped
event BatchMintSkipped(bytes32 indexed payloadHash, bytes payload)
BurnCommissionChanged
event BurnCommissionChanged(uint64 indexed prevValue, uint64 indexed newValue)
ConsortiumChanged
event ConsortiumChanged(address indexed prevVal, address indexed newVal)
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
DustFeeRateChanged
event DustFeeRateChanged(uint256 indexed oldRate, uint256 indexed newRate)
EIP712DomainChanged
event EIP712DomainChanged()
FeeChanged
event FeeChanged(uint256 indexed oldFee, uint256 indexed newFee)
FeeCharged
event FeeCharged(uint256 indexed fee, bytes userSignature)
Initialized
event Initialized(uint64 version)
MintProofConsumed
event MintProofConsumed(address indexed recipient, bytes32 indexed payloadHash, bytes payload)
NameAndSymbolChanged
event NameAndSymbolChanged(string name, string symbol)
Paused
event Paused(address account)
RedeemFeeChanged
event RedeemFeeChanged(uint256 indexed oldFee, uint256 indexed newFee)
RedeemRequest
event RedeemRequest(address indexed from, uint256 indexed nonce, uint256 amount, uint256 fee, bytes payload)
RedeemsForBtcEnabled
event RedeemsForBtcEnabled(bool)
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)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
TreasuryAddressChanged
event TreasuryAddressChanged(address indexed prevValue, address indexed newValue)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlEnforcedDefaultAdminDelay
error AccessControlEnforcedDefaultAdminDelay(uint48 schedule)
AccessControlEnforcedDefaultAdminRules
error AccessControlEnforcedDefaultAdminRules()
AccessControlInvalidDefaultAdmin
error AccessControlInvalidDefaultAdmin(address defaultAdmin)
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
Actions_ZeroAddress
error Actions_ZeroAddress()
AssetRouterNotSet
error AssetRouterNotSet()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC2612ExpiredSignature
error ERC2612ExpiredSignature(uint256 deadline)
ERC2612InvalidSigner
error ERC2612InvalidSigner(address signer, address owner)
ExpectedPause
error ExpectedPause()
FeeGreaterThanAmount
error FeeGreaterThanAmount()
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidAction
error InvalidAction(bytes4 expected, bytes4 actual)
InvalidDestinationToken
error InvalidDestinationToken(address expected, address actual)
InvalidFeeApprovalSignature
error InvalidFeeApprovalSignature()
InvalidInitialization
error InvalidInitialization()
InvalidMintAmount
error InvalidMintAmount()
InvalidPayloadSize
error InvalidPayloadSize(uint256 expected, uint256 actual)
NonEqualLength
error NonEqualLength(uint256 a, uint256 b)
NotInitializing
error NotInitializing()
PayloadAlreadyUsed
error PayloadAlreadyUsed()
RedeemForBtcDisabled
error RedeemForBtcDisabled()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
UserSignatureExpired
error UserSignatureExpired(uint256 expiry)
WrongChainId
error WrongChainId()
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
ZeroFee
error ZeroFee()
ZeroTxId
error ZeroTxId()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6147b980620000e66000396000f3fe608060405234801561001057600080fd5b50600436106103fc5760003560e01c806380e787df11610215578063b743ab4f11610125578063d547741f116100b8578063e63ab1e911610087578063e63ab1e914610885578063f5b541a6146108ac578063fc5f18d3146108d3578063fe38ae87146108fa578063fe9c6aa61461090d57600080fd5b8063d547741f1461084f578063d602b9fd14610862578063d6a02b6a1461086a578063dd62ed3e1461087257600080fd5b8063cefc1429116100f4578063cefc1429146107f1578063cf6eefb7146107f9578063d505accf14610827578063d53913931461083a57600080fd5b8063b743ab4f146107ae578063c6d98f1a146107ce578063cc8463c8146107d6578063ccf63381146107de57600080fd5b806395d89b41116101a8578063a217fddf11610177578063a217fddf1461075a578063a6f353f014610762578063a9059cbb14610775578063af25311d14610788578063b6c441e81461079b57600080fd5b806395d89b41146107105780639ad18765146107185780639dc29fac14610720578063a1eda53c1461073357600080fd5b806384ef8ffc116101e457806384ef8ffc146106da5780638da5cb5b146106e257806391d14854146106ea57806394359200146106fd57600080fd5b806380e787df1461067c5780638307f738146106a45780638456cb59146106b757806384b0196e146106bf57600080fd5b80633b19e84a11610310578063649a5ec7116102a357806373cfc6b21161027257806373cfc6b21461063f5780637a5caab3146106465780637dea53c41461064e5780637ecebe00146106565780637f56945e1461066957600080fd5b8063649a5ec7146105fe578063685731071461061157806370723ae01461062457806370a082311461062c57600080fd5b80634a09bd49116102df5780634a09bd49146105ad57806356712139146105c05780635c975abb146105d3578063634e93da146105eb57600080fd5b80633b19e84a1461055f5780633f4ba83a1461057f57806340c10f191461058757806342966c681461059a57600080fd5b806318160ddd116103935780632f2ff15d116103625780632f2ff15d1461050f57806330b93d8514610522578063313ce567146105355780633644e5151461054457806336568abe1461054c57600080fd5b806318160ddd146104b05780631beda7e3146104e157806323b872dd146104e9578063248a9ca3146104fc57600080fd5b8063089bb99a116103cf578063089bb99a1461046f578063095ea7b3146104825780630aa6220b146104955780630fd3f6e51461049d57600080fd5b806301ffc9a714610401578063022d63fb146104295780630639beeb1461044557806306fdde031461045a575b600080fd5b61041461040f366004613adb565b610915565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff9091168152602001610420565b610458610453366004613b43565b610940565b005b610462610b3e565b6040516104209190613c4c565b61045861047d366004613ca0565b610be7565b610414610490366004613d20565b610c6c565b610458610c84565b6104586104ab366004613d4c565b610c9a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610420565b6104d3610e01565b6104146104f7366004613dab565b610e81565b6104d361050a366004613dec565b610ea7565b61045861051d366004613e05565b610ec9565b610458610530366004613e35565b610ef5565b60405160088152602001610420565b6104d3610f9d565b61045861055a366004613e05565b610fac565b610567611075565b6040516001600160a01b039091168152602001610420565b610458611091565b610458610595366004613d20565b6110a4565b6104586105a8366004613dec565b6110c6565b6104586105bb366004613e80565b6110d0565b6104586105ce366004613e80565b6110e4565b6000805160206147648339815191525460ff16610414565b6104586105f9366004613e80565b6110f8565b61045861060c366004613eb8565b61110c565b61045861061f366004613d4c565b611120565b610414611144565b6104d361063a366004613e80565b6111c4565b6001610414565b6104d36111f7565b6104586112a4565b6104d3610664366004613e80565b61131c565b610458610677366004613e80565b611327565b61068f61068a366004613e35565b61133b565b60408051928352901515602083015201610420565b6104586106b2366004613ca0565b6113ce565b610458611411565b6106c7611443565b6040516104209796959493929190613ed3565b6105676114ef565b610567611515565b6104146106f8366004613e05565b61151f565b61045861070b366004613dec565b611557565b61046261156b565b6105676115aa565b61045861072e366004613d20565b6115c3565b61073b6115e5565b6040805165ffffffffffff938416815292909116602083015201610420565b6104d3600081565b610458610770366004613e80565b61166a565b610414610783366004613d20565b61167e565b6104d3610796366004613f6c565b61168c565b6104586107a9366004613f8e565b6116f2565b6107b6611737565b6040516001600160401b039091168152602001610420565b6104d36117ae565b61042e61182f565b6104586107ec36600461403d565b6118bf565b610458611acf565b610801611b0f565b604080516001600160a01b03909316835265ffffffffffff909116602083015201610420565b6104586108353660046140f3565b611b3d565b6104d360008051602061472483398151915281565b61045861085d366004613e05565b611c8a565b610458611cb2565b610567611cc5565b6104d361088036600461416a565b611ce1565b6104d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6104d37f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6104d37f11a8cb5a02bd6c42679835e867ef2118ba78f088f8300511420c6603c21d9c7881565b610458610908366004613dec565b611d2b565b610567611d3f565b60006001600160e01b031982166318a4c3c360e11b148061093a575061093a82611d5b565b92915050565b7f11a8cb5a02bd6c42679835e867ef2118ba78f088f8300511420c6603c21d9c7861096a81611d90565b6109748887611d9a565b61097e8885611d9a565b6109888883611d9a565b60005b88811015610b3257600060028b8b848181106109a9576109a9614198565b90506020028101906109bb91906141ae565b6040516109c99291906141f4565b602060405180830381855afa1580156109e6573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610a099190614204565b9050610a13611dc4565b6000828152600791909101602052604090205460ff1615610a9057807f199445030f34ba18eca81d4647be9cf6943287dd1a58d150f9cf093111240bff8c8c85818110610a6257610a62614198565b9050602002810190610a7491906141ae565b604051610a82929190614246565b60405180910390a250610b2a565b610b288b8b84818110610aa557610aa5614198565b9050602002810190610ab791906141ae565b8b8b86818110610ac957610ac9614198565b9050602002810190610adb91906141ae565b8b8b88818110610aed57610aed614198565b9050602002810190610aff91906141ae565b8b8b8a818110610b1157610b11614198565b9050602002810190610b2391906141ae565b611de8565b505b60010161098b565b50505050505050505050565b606060006000805160206146c48339815191525b9050806003018054610b639061425a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8f9061425a565b8015610bdc5780601f10610bb157610100808354040283529160200191610bdc565b820191906000526020600020905b815481529060010190602001808311610bbf57829003601f168201915b505050505091505090565b6000610bf281611d90565b610c6585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611f6792505050565b5050505050565b600033610c7a81858561202b565b5060019392505050565b6000610c8f81611d90565b610c97612038565b50565b610ca48382611d9a565b60005b83811015610c655760006002868684818110610cc557610cc5614198565b9050602002810190610cd791906141ae565b604051610ce59291906141f4565b602060405180830381855afa158015610d02573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d259190614204565b9050610d2f611dc4565b6000828152600791909101602052604090205460ff1615610dac57807f199445030f34ba18eca81d4647be9cf6943287dd1a58d150f9cf093111240bff878785818110610d7e57610d7e614198565b9050602002810190610d9091906141ae565b604051610d9e929190614246565b60405180910390a250610df9565b610df7868684818110610dc157610dc1614198565b9050602002810190610dd391906141ae565b868686818110610de557610de5614198565b90506020028101906106b291906141ae565b505b600101610ca7565b600080610e0c611dc4565b60080154604051637f09b62760e11b81523060048201526001600160a01b039091169063fe136c4e90602401606060405180830381865afa158015610e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7991906142a4565b509392505050565b600033610e8f858285612045565b610e9a8585856120a5565b60019150505b9392505050565b6000908152600080516020614744833981519152602052604090206001015490565b81610ee757604051631fe1e13d60e11b815260040160405180910390fd5b610ef18282612104565b5050565b6000610eff611dc4565b60088101549091506001600160a01b0316610f2d57604051638977141160e01b815260040160405180910390fd5b60088101546001600160a01b03166337a9bdc933308787876040518663ffffffff1660e01b8152600401610f659594939291906142d9565b600060405180830381600087803b158015610f7f57600080fd5b505af1158015610f93573d6000803e3d6000fd5b5050505050505050565b6000610fa7612120565b905090565b60008051602061470483398151915282158015610fe15750610fcc6114ef565b6001600160a01b0316826001600160a01b0316145b1561106657600080610ff1611b0f565b90925090506001600160a01b038216151580611013575065ffffffffffff8116155b8061102657504265ffffffffffff821610155b15611053576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b5050805465ffffffffffff60a01b191681555b611070838361212a565b505050565b600061107f611dc4565b600101546001600160a01b0316919050565b600061109c81611d90565b610c9761215d565b6000805160206147248339815191526110bc81611d90565b61107083836121bd565b610c9733826121f3565b60006110db81611d90565b610ef182612229565b60006110ef81611d90565b610ef182612289565b600061110381611d90565b610ef1826122f9565b600061111781611d90565b610ef18261236c565b60008051602061472483398151915261113881611d90565b610c65858585856123dc565b60008061114f611dc4565b60080154604051637f09b62760e11b81523060048201526001600160a01b039091169063fe136c4e90602401606060405180830381865afa158015611198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bc91906142a4565b949350505050565b6000806000805160206146c48339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600080611202611dc4565b60088101549091506001600160a01b031661123057604051638977141160e01b815260040160405180910390fd5b600881015460405163156796db60e01b81523060048201526001600160a01b039091169063156796db90602401602060405180830381865afa15801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190614204565b91505090565b60006112af81611d90565b6112b7611dc4565b60080160009054906101000a90046001600160a01b03166001600160a01b03166342d05b9b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561130857600080fd5b505af1158015610c65573d6000803e3d6000fd5b600061093a82612441565b600061133281611d90565b610ef18261246a565b6000806000611348611dc4565b6008810154604051630aba905f60e41b81529192506001600160a01b03169063aba905f0906113819030908a908a908a90600401614318565b6040805180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c1919061434e565b9250925050935093915050565b6113d66124d7565b6113e284848484612521565b61140b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61143b81611d90565b610c9761255b565b600060608082808083816000805160206146e4833981519152805490915015801561147057506001810154155b6114b45760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161104a565b6114bc6125a4565b6114c46125e3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000806000805160206147048339815191525b600101546001600160a01b031692915050565b6000610fa76114ef565b6000918252600080516020614744833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061156281611d90565b610ef1826125fb565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060916000805160206146c483398151915291610b639061425a565b60006115b4611dc4565b546001600160a01b0316919050565b6000805160206147248339815191526115db81611d90565b61107083836121f3565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840154600090600160d01b900465ffffffffffff16600080516020614704833981519152811580159061163f57504265ffffffffffff831610155b61164b57600080611661565b6001810154600160a01b900465ffffffffffff16825b92509250509091565b600061167581611d90565b610ef18261264a565b600033610c7a8185856120a5565b604080517f40ac9f6aa27075e64c1ed1ea2e831b20b8c25efdeb6b79fd0cf683c9a9c50725602082015246918101919091526060810183905260808101829052600090610ea09060a0015b604051602081830303815290604052805190602001206126b3565b7f11a8cb5a02bd6c42679835e867ef2118ba78f088f8300511420c6603c21d9c7861171c81611d90565b61172c8989898989898989611de8565b505050505050505050565b6000611741611dc4565b60080154604051635698732f60e01b81523060048201526001600160a01b0390911690635698732f90602401602060405180830381865afa15801561178a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa79190614390565b6000806117b9611dc4565b60080154604051637f09b62760e11b81523060048201526001600160a01b039091169063fe136c4e90602401606060405180830381865afa158015611802573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182691906142a4565b50909392505050565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015460009060008051602061470483398151915290600160d01b900465ffffffffffff16801580159061188957504265ffffffffffff8216105b6118a3578154600160d01b900465ffffffffffff166118b8565b6001820154600160a01b900465ffffffffffff165b9250505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156119045750825b90506000826001600160401b031660011480156119205750303b155b90508115801561192e575080155b1561194c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561197657845460ff60401b1916600160401b1785555b61198086886126e0565b6119a860405180602001604052806000815250604051806020016040528060008152506126f2565b6119b0612704565b6119b8612714565b6119f78b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061272492505050565b611a7a8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600081840152601f19601f820116905080830192505050505050508f8f61274f565b8315611ac057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000611ad9611b0f565b509050336001600160a01b03821614611b0757604051636116401160e11b815233600482015260240161104a565b610c97612773565b600080516020614704833981519152546001600160a01b03811691600160a01b90910465ffffffffffff1690565b83421115611b615760405163313c898160e11b81526004810185905260240161104a565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611bcd8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611c28826126b3565b90506000611c3882878787612810565b9050896001600160a01b0316816001600160a01b031614611c7f576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161104a565b610b328a8a8a61202b565b81611ca857604051631fe1e13d60e11b815260040160405180910390fd5b610ef1828261283e565b6000611cbd81611d90565b610c9761285a565b6000611ccf611dc4565b600201546001600160a01b0316919050565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6000611d3681611d90565b610ef182612865565b6000611d49611dc4565b600801546001600160a01b0316919050565b60006001600160e01b03198216637965db0b60e01b148061093a57506301ffc9a760e01b6001600160e01b031983161461093a565b610c97813361289f565b808214610ef157604051633f9b6c7760e21b8152600481018390526024810182905260440161104a565b7fb773c428c0cecc1b857b133b10e11481edd580cedc90e62754fff20b7c0d600090565b600080611df78a8a8a8a6128d8565b9092509050611e0e868663205d72a560e21b61296c565b6000611e5a611e20876004818b6143b9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129c892505050565b90506000611e666111f7565b90506000611e72612a97565b90506000611e84838560000151612aa2565b9050848110611ea657604051632405ab8160e11b815260040160405180910390fd5b8351602080860151604051600093611efd936116d7937f40ac9f6aa27075e64c1ed1ea2e831b20b8c25efdeb6b79fd0cf683c9a9c50725934693920193845260208401929092526040830152606082015260800190565b9050611f0b81888b8b612ab8565b508015611f1d57611f1d8683836120a5565b807fcd0d4a9ad4b364951764307d0ae7b0d2ea482965b258e2e2452ef396c53b20f08989604051611f4f929190614246565b60405180910390a25050505050505050505050505050565b6000805160206146c48339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611fa1848261442b565b5060048101611fb0838261442b565b506000805160206146e48339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611feb858261442b565b507f4d807d72b2a493ff2c4e338967d3f82d3352481258457d12a4506a1762a44c69848460405161201d9291906144ea565b60405180910390a150505050565b6110708383836001612b16565b612043600080612bfd565b565b60006120518484611ce1565b9050600019811461140b578181101561209657604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161104a565b61140b84848484036000612b16565b6001600160a01b0383166120cf57604051634b637e8f60e11b81526000600482015260240161104a565b6001600160a01b0382166120f95760405163ec442f0560e01b81526000600482015260240161104a565b611070838383612cea565b61210d82610ea7565b61211681611d90565b61140b8383612cf5565b6000610fa7612d64565b6001600160a01b03811633146121535760405163334bd91960e11b815260040160405180910390fd5b6110708282612dd8565b612165612e31565b600080516020614764833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6001600160a01b0382166121e75760405163ec442f0560e01b81526000600482015260240161104a565b610ef160008383612cea565b6001600160a01b03821661221d57604051634b637e8f60e11b81526000600482015260240161104a565b610ef182600083612cea565b6000612233611dc4565b6008810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907ff5f95b10b00195043307580900c3d9806c3fee7e80e71bc2d85302891605e20090600090a3505050565b61229281612e61565b600061229c611dc4565b80546040519192506001600160a01b03808516929116907f146dd8feba84cdc776f012478adc764591d6c0c9570adbc49ff09c648282a0a090600090a380546001600160a01b0319166001600160a01b0392909216919091179055565b600061230361182f565b61230c42612e88565b612316919061452e565b90506123228282612ebf565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b600061237782612f4c565b61238042612e88565b61238a919061452e565b90506123968282612bfd565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6123e68382611d9a565b60005b83811015610c655761243985858381811061240657612406614198565b905060200201602081019061241b9190613e80565b84848481811061242d5761242d614198565b905060200201356121bd565b6001016123e9565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006111d7565b6000612474611dc4565b60028101546040519192506001600160a01b03808516929116907fa0317ebf02283589c190260fcd549e3a6de71bef31204aeb5417c07fb65c089490600090a360020180546001600160a01b0319166001600160a01b0392909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161251b57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b61252d848484846128d8565b505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b612563612f94565b600080516020614764833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361219f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060916000805160206146e483398151915291610b639061425a565b606060006000805160206146e4833981519152610b52565b612603611dc4565b60080154604051624a1ac960e91b8152600481018390526001600160a01b03909116906394359200906024015b600060405180830381600087803b15801561130857600080fd5b61265381612e61565b600061265d611dc4565b6001810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f4fc6e7a37aea21888550b60360992adb6a9b3b4da644d63e9f3a420c2d86e28290600090a3505050565b600061093a6126c0612120565b8360405161190160f01b8152600281019290925260228201526042902090565b6126e8612fc5565b610ef1828261300e565b6126fa612fc5565b610ef18282613077565b61270c612fc5565b6120436130c8565b61271c612fc5565b6120436130e9565b61272c612fc5565b610c9781604051806040016040528060018152602001603160f81b8152506130f1565b612757612fc5565b6127618484611f67565b61276a82612289565b61140b8161264a565b60008051602061470483398151915260008061278d611b0f565b915091506127a28165ffffffffffff16151590565b15806127b657504265ffffffffffff821610155b156127de576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161104a565b6127f060006127eb6114ef565b612dd8565b506127fc600083612cf5565b505081546001600160d01b03191690915550565b60008060008061282288888888613152565b9250925092506128328282613221565b50909695505050505050565b61284782610ea7565b61285081611d90565b61140b8383612dd8565b612043600080612ebf565b61286d611dc4565b6008015460405163fe38ae8760e01b8152600481018390526001600160a01b039091169063fe38ae8790602401612630565b6128a9828261151f565b610ef15760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161104a565b6000806128ed8686636712f3e160e11b61296c565b60006129396128ff876004818b6143b9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132da92505050565b6020810151604082015191925061295491808a8a8a8a613453565b80602001518160400151925092505094509492505050565b6001600160e01b03198116612981838561454d565b6001600160e01b03191614611070578061299b838561454d565b604051632e35ad2d60e11b81526001600160e01b031992831660048201529116602482015260440161104a565b60408051808201909152600080825260208201526129e86020600261457d565b825114612a1f576129fb6020600261457d565b82516040516371cccdf360e11b81526004810192909252602482015260440161104a565b60008083806020019051810190612a369190614594565b9150915080421115612a5e5760405163954aba7160e01b81526004810182905260240161104a565b81600003612a7f5760405163af13986d60e01b815260040160405180910390fd5b60408051808201909152918252602082015292915050565b600080611502611dc4565b6000818310612ab15781610ea0565b5090919050565b612af9838584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061361692505050565b61140b576040516379543d1d60e01b815260040160405180910390fd5b6000805160206146c48339815191526001600160a01b038516612b4f5760405163e602df0560e01b81526000600482015260240161104a565b6001600160a01b038416612b7957604051634a1406b160e11b81526000600482015260240161104a565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610c6557836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612bee91815260200190565b60405180910390a35050505050565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015460008051602061470483398151915290600160d01b900465ffffffffffff168015612cac574265ffffffffffff82161015612c8257600182015482546001600160d01b0316600160a01b90910465ffffffffffff16600160d01b02178255612cac565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b5060010180546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b6110708383836136df565b600060008051602061470483398151915283612d5a576000612d156114ef565b6001600160a01b031614612d3c57604051631fe1e13d60e11b815260040160405180910390fd5b6001810180546001600160a01b0319166001600160a01b0385161790555b6111bc84846136f2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612d8f61379e565b612d97613808565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600060008051602061470483398151915283158015612e0f5750612dfa6114ef565b6001600160a01b0316836001600160a01b0316145b15612e27576001810180546001600160a01b03191690555b6111bc848461384c565b6000805160206147648339815191525460ff1661204357604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b038116610c975760405163d92e233d60e01b815260040160405180910390fd5b600065ffffffffffff821115612ebb576040516306dfcc6560e41b8152603060048201526024810183905260440161104a565b5090565b6000805160206147048339815191526000612ed8611b0f565b835465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b038816171784559150612f1890508165ffffffffffff16151590565b1561140b576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a150505050565b600080612f5761182f565b90508065ffffffffffff168365ffffffffffff1611612f7f57612f7a83826145b8565b610ea0565b610ea065ffffffffffff841662069780612aa2565b6000805160206147648339815191525460ff16156120435760405163d93c066560e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661204357604051631afcd79f60e31b815260040160405180910390fd5b613016612fc5565b6000805160206147048339815191526001600160a01b03821661304f57604051636116401160e11b81526000600482015260240161104a565b80546001600160d01b0316600160d01b65ffffffffffff85160217815561140b600083612cf5565b61307f612fc5565b6000805160206146c48339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036130b9848261442b565b506004810161140b838261442b565b6130d0612fc5565b600080516020614764833981519152805460ff19169055565b612535612fc5565b6130f9612fc5565b6000805160206146e48339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102613133848261442b565b5060038101613142838261442b565b5060008082556001909101555050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561318d5750600091506003905082613217565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156131e1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661320d57506000925060019150829050613217565b9250600091508190505b9450945094915050565b6000826003811115613235576132356145d7565b0361323e575050565b6001826003811115613252576132526145d7565b036132705760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613284576132846145d7565b036132a55760405163fce698f760e01b81526004810182905260240161104a565b60038260038111156132b9576132b96145d7565b03610ef1576040516335e2f38360e21b81526004810182905260240161104a565b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a08201529061331690600661457d565b825114613329576129fb6020600661457d565b6000806000806000808780602001905181019061334691906145ed565b955095509550955095509550468614613371576040516217e1ef60ea1b815260040160405180910390fd5b6001600160a01b038516613398576040516351de9ae360e11b815260040160405180910390fd5b836000036133b957604051631f2a200560e01b815260040160405180910390fd5b826133d757604051630e3bbb1b60e31b815260040160405180910390fd5b6001600160a01b03811630146134115760405163b387d99560e01b81523060048201526001600160a01b038216602482015260440161104a565b6040805160c0810182529687526001600160a01b039586166020880152860193909352606085019190915263ffffffff1660808401521660a082015292915050565b600061345d611dc4565b9050858711156134805760405163199f5a0360e31b815260040160405180910390fd5b6000600286866040516134949291906141f4565b602060405180830381855afa1580156134b1573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134d49190614204565b905060006134e5866004818a6143b9565b6040516134f39291906141f4565b6040805191829003909120600084815260078601602052919091205490915060ff161561353357604051637c4b379b60e01b815260040160405180910390fd5b8254604051631f68c5f560e11b81526001600160a01b0390911690633ed18bea9061356690859089908990600401614660565b60006040518083038186803b15801561357e57600080fd5b505afa158015613592573d6000803e3d6000fd5b50505060008381526007850160205260409020805460ff19166001179055506135bc83828a6138c8565b6135c68a8a6121bd565b818a6001600160a01b03167f91f5c148b0f5ac9ddafe7030867f0d968adec49652c7ea760cf51fa233424b148989604051613602929190614246565b60405180910390a350505050505050505050565b60006001600160a01b0384163b156136b557604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e90613658908790879060040161467a565b602060405180830381865afa158015613675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136999190614693565b6001600160e01b031916146136b057506000610ea0565b610c7a565b836001600160a01b03166136c98484613910565b6001600160a01b031614610c7a57506000610ea0565b6136e7612f94565b61107083838361393a565b600060008051602061474483398151915261370d848461151f565b61378d576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556137433390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061093a565b600091505061093a565b5092915050565b60006000805160206146e4833981519152816137b86125a4565b8051909150156137d057805160209091012092915050565b815480156137df579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60006000805160206146e4833981519152816138226125e3565b80519091501561383a57805160209091012092915050565b600182015480156137df579392505050565b6000600080516020614744833981519152613867848461151f565b1561378d576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061093a565b60028301546001600160a01b0316801561140b57604051632f0d338d60e11b815260048101849052602481018390526001600160a01b03821690635e1a671a90604401610f65565b6000806000806139208686613a78565b9250925092506139308282613221565b5090949350505050565b6000805160206146c48339815191526001600160a01b038416613976578181600201600082825461396b91906146b0565b909155506139e89050565b6001600160a01b038416600090815260208290526040902054828110156139c95760405163391434e360e21b81526001600160a01b0386166004820152602481018290526044810184905260640161104a565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316613a06576002810180548390039055613a25565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a6a91815260200190565b60405180910390a350505050565b60008060008351604103613ab25760208401516040850151606086015160001a613aa488828585613152565b955095509550505050613abe565b50508151600091506002905b9250925092565b6001600160e01b031981168114610c9757600080fd5b600060208284031215613aed57600080fd5b8135610ea081613ac5565b60008083601f840112613b0a57600080fd5b5081356001600160401b03811115613b2157600080fd5b6020830191508360208260051b8501011115613b3c57600080fd5b9250929050565b6000806000806000806000806080898b031215613b5f57600080fd5b88356001600160401b0380821115613b7657600080fd5b613b828c838d01613af8565b909a50985060208b0135915080821115613b9b57600080fd5b613ba78c838d01613af8565b909850965060408b0135915080821115613bc057600080fd5b613bcc8c838d01613af8565b909650945060608b0135915080821115613be557600080fd5b50613bf28b828c01613af8565b999c989b5096995094979396929594505050565b6000815180845260005b81811015613c2c57602081850181015186830182015201613c10565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ea06020830184613c06565b60008083601f840112613c7157600080fd5b5081356001600160401b03811115613c8857600080fd5b602083019150836020828501011115613b3c57600080fd5b60008060008060408587031215613cb657600080fd5b84356001600160401b0380821115613ccd57600080fd5b613cd988838901613c5f565b90965094506020870135915080821115613cf257600080fd5b50613cff87828801613c5f565b95989497509550505050565b6001600160a01b0381168114610c9757600080fd5b60008060408385031215613d3357600080fd5b8235613d3e81613d0b565b946020939093013593505050565b60008060008060408587031215613d6257600080fd5b84356001600160401b0380821115613d7957600080fd5b613d8588838901613af8565b90965094506020870135915080821115613d9e57600080fd5b50613cff87828801613af8565b600080600060608486031215613dc057600080fd5b8335613dcb81613d0b565b92506020840135613ddb81613d0b565b929592945050506040919091013590565b600060208284031215613dfe57600080fd5b5035919050565b60008060408385031215613e1857600080fd5b823591506020830135613e2a81613d0b565b809150509250929050565b600080600060408486031215613e4a57600080fd5b83356001600160401b03811115613e6057600080fd5b613e6c86828701613c5f565b909790965060209590950135949350505050565b600060208284031215613e9257600080fd5b8135610ea081613d0b565b803565ffffffffffff81168114613eb357600080fd5b919050565b600060208284031215613eca57600080fd5b610ea082613e9d565b60ff60f81b881681526000602060e06020840152613ef460e084018a613c06565b8381036040850152613f06818a613c06565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015613f5a57835183529284019291840191600101613f3e565b50909c9b505050505050505050505050565b60008060408385031215613f7f57600080fd5b50508035926020909101359150565b6000806000806000806000806080898b031215613faa57600080fd5b88356001600160401b0380821115613fc157600080fd5b613fcd8c838d01613c5f565b909a50985060208b0135915080821115613fe657600080fd5b613ff28c838d01613c5f565b909850965060408b013591508082111561400b57600080fd5b6140178c838d01613c5f565b909650945060608b013591508082111561403057600080fd5b50613bf28b828c01613c5f565b60008060008060008060008060c0898b03121561405957600080fd5b883561406481613d0b565b9750602089013561407481613d0b565b965060408901356001600160401b038082111561409057600080fd5b61409c8c838d01613c5f565b909850965060608b01359150808211156140b557600080fd5b506140c28b828c01613c5f565b90955093505060808901356140d681613d0b565b91506140e460a08a01613e9d565b90509295985092959890939650565b600080600080600080600060e0888a03121561410e57600080fd5b873561411981613d0b565b9650602088013561412981613d0b565b95506040880135945060608801359350608088013560ff8116811461414d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561417d57600080fd5b823561418881613d0b565b91506020830135613e2a81613d0b565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126141c557600080fd5b8301803591506001600160401b038211156141df57600080fd5b602001915036819003821315613b3c57600080fd5b8183823760009101908152919050565b60006020828403121561421657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006111bc60208301848661421d565b600181811c9082168061426e57607f821691505b60208210810361428e57634e487b7160e01b600052602260045260246000fd5b50919050565b80518015158114613eb357600080fd5b6000806000606084860312156142b957600080fd5b83519250602084015191506142d060408501614294565b90509250925092565b6001600160a01b03868116825285166020820152608060408201819052600090614306908301858761421d565b90508260608301529695505050505050565b6001600160a01b038516815260606020820181905260009061433d908301858761421d565b905082604083015295945050505050565b6000806040838503121561436157600080fd5b8251915061437160208401614294565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156143a257600080fd5b81516001600160401b0381168114610ea057600080fd5b600080858511156143c957600080fd5b838611156143d657600080fd5b5050820193919092039150565b601f821115611070576000816000526020600020601f850160051c8101602086101561440c5750805b601f850160051c820191505b8181101561252d57828155600101614418565b81516001600160401b038111156144445761444461437a565b61445881614452845461425a565b846143e3565b602080601f83116001811461448d57600084156144755750858301515b600019600386901b1c1916600185901b17855561252d565b600085815260208120601f198616915b828110156144bc5788860151825594840194600190910190840161449d565b50858210156144da5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006144fd6040830185613c06565b828103602084015261450f8185613c06565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b65ffffffffffff81811683821601908082111561379757613797614518565b6001600160e01b031981358181169160048510156145755780818660040360031b1b83161692505b505092915050565b808202811582820484141761093a5761093a614518565b600080604083850312156145a757600080fd5b505080516020909101519092909150565b65ffffffffffff82811682821603908082111561379757613797614518565b634e487b7160e01b600052602160045260246000fd5b60008060008060008060c0878903121561460657600080fd5b86519550602087015161461881613d0b565b809550506040870151935060608701519250608087015163ffffffff8116811461464157600080fd5b60a088015190925061465281613d0b565b809150509295509295509295565b83815260406020820152600061450f60408301848661421d565b8281526040602082015260006111bc6040830184613c06565b6000602082840312156146a557600080fd5b8151610ea081613ac5565b8082018082111561093a5761093a61451856fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100eef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984009f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a602dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122070e5803a6f38b3dd4efc777f065ed5086be76eabb1e17a84bbda993a30e5293364736f6c63430008180033