635 txs
653 calls
constructor
constructor(address _lzEndpoint)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
BP_DENOMINATOR
viewfunction BP_DENOMINATOR() view returns (uint256)
chainIdToFeeBps
viewfunction chainIdToFeeBps(uint16) view returns (uint16 feeBP, bool enabled)
chainIdToInboundCap
viewfunction chainIdToInboundCap(uint16) view returns (uint256)
chainIdToLastReceivedTimestamp
viewfunction chainIdToLastReceivedTimestamp(uint16) view returns (uint256)
chainIdToLastSentTimestamp
viewfunction chainIdToLastSentTimestamp(uint16) view returns (uint256)
chainIdToOutboundCap
viewfunction chainIdToOutboundCap(uint16) view returns (uint256)
chainIdToReceivedTokenAmount
viewfunction chainIdToReceivedTokenAmount(uint16) view returns (uint256)
chainIdToSentTokenAmount
viewfunction chainIdToSentTokenAmount(uint16) view returns (uint256)
circulatingSupply
viewfunction circulatingSupply() view returns (uint256)
creditedPackets
viewfunction creditedPackets(uint16, bytes, uint64) view returns (bool)
decimals
purefunction decimals() pure returns (uint8)
defaultFeeBp
viewfunction defaultFeeBp() view returns (uint16)
estimateSendAndCallFee
viewfunction estimateSendAndCallFee(uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bytes _payload, uint64 _dstGasForCall, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
estimateSendFee
viewfunction estimateSendFee(uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
feeOwner
viewfunction feeOwner() view returns (address)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
name
viewfunction name() view returns (string)
NO_EXTRA_GAS
viewfunction NO_EXTRA_GAS() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
precrime
viewfunction precrime() view returns (address)
PT_SEND_AND_CALL
viewfunction PT_SEND_AND_CALL() view returns (uint8)
PT_SEND
viewfunction PT_SEND() view returns (uint8)
quoteOFTFee
viewfunction quoteOFTFee(uint16 _dstChainId, uint256 _amount) view returns (uint256 fee)
sharedDecimals
viewfunction sharedDecimals() view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
token
viewfunction token() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
useCustomAdapterParams
viewfunction useCustomAdapterParams() view returns (bool)
whitelist
viewfunction whitelist(address) view returns (bool)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
callOnOFTReceived
nonpayablefunction callOnOFTReceived(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _from, address _to, uint256 _amount, bytes _payload, uint256 _gasForCall)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
sendAndCall
payablefunction sendAndCall(address _from, uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, uint256 _minAmount, bytes _payload, uint64 _dstGasForCall, tuple _callParams) payable
sendFrom
payablefunction sendFrom(address _from, uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, uint256 _minAmount, tuple _callParams) payable
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setDefaultFeeBp
nonpayablefunction setDefaultFeeBp(uint16 _feeBp)
setFeeBp
nonpayablefunction setFeeBp(uint16 _dstChainId, bool _enabled, uint16 _feeBp)
setFeeOwner
nonpayablefunction setFeeOwner(address _feeOwner)
setInboundCap
nonpayablefunction setInboundCap(uint16 chainId, uint256 cap)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setOutboundCap
nonpayablefunction setOutboundCap(uint16 chainId, uint256 cap)
setPrecrime
nonpayablefunction setPrecrime(address _precrime)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTrustedRemote
nonpayablefunction setTrustedRemote(uint16 _srcChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
setUseCustomAdapterParams
nonpayablefunction setUseCustomAdapterParams(bool _useCustomAdapterParams)
setWhitelist
nonpayablefunction setWhitelist(address addr, bool isWhitelist)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CallOFTReceivedSuccess
event CallOFTReceivedSuccess(uint16 indexed _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _hash)
DropFailedMessage
event DropFailedMessage(uint16 srcChainId, bytes srcAddress, uint64 nonce)
FallbackWithdraw
event FallbackWithdraw(address indexed to, uint256 amount)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
NonContractAddress
event NonContractAddress(address _address)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ReceiveFromChain
event ReceiveFromChain(uint16 indexed _srcChainId, address indexed _to, uint256 _amount)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
SendToChain
event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes32 indexed _toAddress, uint256 _amount)
SetDefaultFeeBp
event SetDefaultFeeBp(uint16 feeBp)
SetFeeBp
event SetFeeBp(uint16 dstchainId, bool enabled, uint16 feeBp)
SetFeeOwner
event SetFeeOwner(address feeOwner)
SetInboundCap
event SetInboundCap(uint16 indexed chainId, uint256 cap)
SetMinDstGas
event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas)
SetOperator
event SetOperator(address newOperator)
SetOutboundCap
event SetOutboundCap(uint16 indexed chainId, uint256 cap)
SetPrecrime
event SetPrecrime(address precrime)
SetTrustedRemote
event SetTrustedRemote(uint16 _remoteChainId, bytes _path)
SetTrustedRemoteAddress
event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
SetUseCustomAdapterParams
event SetUseCustomAdapterParams(bool _useCustomAdapterParams)
SetWhitelist
event SetWhitelist(address indexed addr, bool isWhitelist)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
ExceedInboundCap
error ExceedInboundCap(uint256 cap, uint256 amount)
ExceedOutboundCap
error ExceedOutboundCap(uint256 cap, uint256 amount)
creation bytecode
0x60e06040523480156200001157600080fd5b506040516200541d3803806200541d8339810160408190526200003491620002d8565b604051806040016040528060118152602001702830b731b0b5b2a9bbb0b8102a37b5b2b760791b8152506040518060400160405280600481526020016343616b6560e01b8152506008838383838381818080620000a06200009a620001d960201b60201c565b620001dd565b6001600160a01b0316608052505060ff1660a052620000c76000546001600160a01b031690565b600880546001600160a01b0392909216620100000262010000600160b01b0319909216919091179055505081516200010790600c90602085019062000232565b5080516200011d90600d90602084019062000232565b5050506000620001326200022d60201b60201c565b90508060ff168360ff161115620001a65760405162461bcd60e51b815260206004820152602e60248201527f4f4654576974684665653a20736861726564446563696d616c73206d7573742060448201526d6265203c3d20646563696d616c7360901b606482015260840160405180910390fd5b620001b2838262000320565b620001bf90600a62000445565b60c0525050600e805460ff19169055506200049392505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601290565b828054620002409062000456565b90600052602060002090601f016020900481019282620002645760008555620002af565b82601f106200027f57805160ff1916838001178555620002af565b82800160010185558215620002af579182015b82811115620002af57825182559160200191906001019062000292565b50620002bd929150620002c1565b5090565b5b80821115620002bd5760008155600101620002c2565b600060208284031215620002eb57600080fd5b81516001600160a01b03811681146200030357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200033d576200033d6200030a565b90039392505050565b600181815b80851115620003875781600019048211156200036b576200036b6200030a565b808516156200037957918102915b93841c93908002906200034b565b509250929050565b600082620003a0575060016200043f565b81620003af575060006200043f565b8160018114620003c85760028114620003d357620003f3565b60019150506200043f565b60ff841115620003e757620003e76200030a565b50506001821b6200043f565b5060208310610133831016604e8410600b841016171562000418575081810a6200043f565b62000424838362000346565b80600019048211156200043b576200043b6200030a565b0290505b92915050565b60006200030360ff8416836200038f565b600181811c908216806200046b57607f821691505b602082108114156200048d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c051614f0d6200051060003960008181613051015281816131a4015261392401526000610876015260008181610af001528181610da1015281816110b90152818161115a0152818161142a01528181611c9a015281816122f6015281816129a001528181612dc801526133410152614f0d6000f3fe6080604052600436106103f95760003560e01c80638cfd8f5c11610213578063baf3292d11610123578063eab45d9c116100ab578063ed629c5c1161007a578063ed629c5c14610d11578063f2fde38b14610d2b578063f5ecbdbc14610d4b578063fc0c546a14610d6b578063fcd5508114610d7e57600080fd5b8063eab45d9c14610c91578063eaffd49a14610cb1578063eb8d72b714610cd1578063ecd8f21214610cf157600080fd5b8063d1deba1f116100f2578063d1deba1f14610bfb578063d888296814610c0e578063dd62ed3e14610c3c578063df2a5b3b14610c5c578063e6a20ae614610c7c57600080fd5b8063baf3292d14610b38578063c83330ce14610b58578063ca39387c14610bae578063cbed8b9c14610bdb57600080fd5b80639f38369a116101a6578063a6c3d16511610175578063a6c3d16514610a88578063a9059cbb14610aa8578063abe685cd14610ac8578063b353aaa714610ade578063b9818be114610b1257600080fd5b80639f38369a146109fb578063a40e27cb14610a1b578063a457c2d714610a48578063a4c51df514610a6857600080fd5b806395d89b41116101e257806395d89b41146109375780639b19251a1461094c5780639b65e6531461097c5780639bdb9812146109a957600080fd5b80638cfd8f5c146108985780638da5cb5b146108d05780639358928b14610902578063950c8a741461091757600080fd5b8063447705151161030e5780635c975abb116102a15780637533d788116102705780637533d788146107e257806379c0ad4b146108025780637bc03b8e146108225780638456cb591461084f578063857749b01461086457600080fd5b80635c975abb1461075f57806366ad5c8a1461077757806370a0823114610797578063715018a6146107cd57600080fd5b806351a2c389116102dd57806351a2c389146106a357806353d6fd59146106d05780635a359dc5146106f05780635b8c41e61461071057600080fd5b80634477051514610646578063455ba27d1461065b5780634b104eff1461066e5780634c42899a1461068e57600080fd5b806323b872dd11610391578063365260b411610360578063365260b41461059c57806339509351146105d15780633d8b38f6146105f15780633f4ba83a1461061157806342d65a8d1461062657600080fd5b806323b872dd146105275780632cdf0b9514610547578063313ce5671461055a57806335dff2bc1461057c57600080fd5b8063095ea7b3116103cd578063095ea7b3146104975780630bc66fbf146104b757806310ddb137146104f257806318160ddd1461051257600080fd5b80621d3567146103fe57806301ffc9a71461042057806306fdde031461045557806307e0db1714610477575b600080fd5b34801561040a57600080fd5b5061041e610419366004614052565b610d9e565b005b34801561042c57600080fd5b5061044061043b3660046140e5565b610fcf565b60405190151581526020015b60405180910390f35b34801561046157600080fd5b5061046a611006565b60405161044c9190614167565b34801561048357600080fd5b5061041e61049236600461417a565b611098565b3480156104a357600080fd5b506104406104b23660046141aa565b611121565b3480156104c357600080fd5b506104e46104d236600461417a565b60146020526000908152604090205481565b60405190815260200161044c565b3480156104fe57600080fd5b5061041e61050d36600461417a565b611139565b34801561051e57600080fd5b50600b546104e4565b34801561053357600080fd5b506104406105423660046141d6565b611191565b61041e61055536600461422f565b6111b7565b34801561056657600080fd5b5060125b60405160ff909116815260200161044c565b34801561058857600080fd5b5061041e6105973660046142aa565b61125a565b3480156105a857600080fd5b506105bc6105b73660046142d6565b6112b6565b6040805192835260208301919091520161044c565b3480156105dd57600080fd5b506104406105ec3660046141aa565b61130b565b3480156105fd57600080fd5b5061044061060c36600461433b565b61132d565b34801561061d57600080fd5b5061041e6113f9565b34801561063257600080fd5b5061041e61064136600461433b565b61140b565b34801561065257600080fd5b506104e4600081565b61041e61066936600461438d565b611491565b34801561067a57600080fd5b5061041e610689366004614449565b611572565b34801561069a57600080fd5b5061056a600081565b3480156106af57600080fd5b506104e46106be36600461417a565b60116020526000908152604090205481565b3480156106dc57600080fd5b5061041e6106eb366004614466565b61162f565b3480156106fc57600080fd5b5061041e61070b36600461417a565b61168f565b34801561071c57600080fd5b506104e461072b366004614508565b6004602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561076b57600080fd5b50600e5460ff16610440565b34801561078357600080fd5b5061041e610792366004614052565b611701565b3480156107a357600080fd5b506104e46107b2366004614449565b6001600160a01b031660009081526009602052604090205490565b3480156107d957600080fd5b5061041e6117d5565b3480156107ee57600080fd5b5061046a6107fd36600461417a565b6117e7565b34801561080e57600080fd5b5061041e61081d3660046145a8565b611881565b34801561082e57600080fd5b506104e461083d36600461417a565b600f6020526000908152604090205481565b34801561085b57600080fd5b5061041e61193d565b34801561087057600080fd5b5061056a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108a457600080fd5b506104e46108b33660046145e2565b600260209081526000928352604080842090915290825290205481565b3480156108dc57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161044c565b34801561090e57600080fd5b506104e461194d565b34801561092357600080fd5b506003546108ea906001600160a01b031681565b34801561094357600080fd5b5061046a61195d565b34801561095857600080fd5b50610440610967366004614449565b60156020526000908152604090205460ff1681565b34801561098857600080fd5b506104e461099736600461417a565b60126020526000908152604090205481565b3480156109b557600080fd5b506104406109c4366004614508565b6006602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205460ff1681565b348015610a0757600080fd5b5061046a610a1636600461417a565b61196c565b348015610a2757600080fd5b506104e4610a3636600461417a565b60106020526000908152604090205481565b348015610a5457600080fd5b50610440610a633660046141aa565b611a7c565b348015610a7457600080fd5b506105bc610a8336600461460c565b611b02565b348015610a9457600080fd5b5061041e610aa336600461433b565b611b91565b348015610ab457600080fd5b50610440610ac33660046141aa565b611c17565b348015610ad457600080fd5b506104e461271081565b348015610aea57600080fd5b506108ea7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b1e57600080fd5b506008546108ea906201000090046001600160a01b031681565b348015610b4457600080fd5b5061041e610b53366004614449565b611c25565b348015610b6457600080fd5b50610b94610b7336600461417a565b60076020526000908152604090205461ffff81169062010000900460ff1682565b6040805161ffff909316835290151560208301520161044c565b348015610bba57600080fd5b506104e4610bc936600461417a565b60136020526000908152604090205481565b348015610be757600080fd5b5061041e610bf63660046146c5565b611c7b565b61041e610c09366004614052565b611d05565b348015610c1a57600080fd5b50600854610c299061ffff1681565b60405161ffff909116815260200161044c565b348015610c4857600080fd5b506104e4610c57366004614733565b611f1b565b348015610c6857600080fd5b5061041e610c7736600461476c565b611f46565b348015610c8857600080fd5b5061056a600181565b348015610c9d57600080fd5b5061041e610cac3660046147a8565b611ff8565b348015610cbd57600080fd5b5061041e610ccc3660046147c3565b612041565b348015610cdd57600080fd5b5061041e610cec36600461433b565b612160565b348015610cfd57600080fd5b506104e4610d0c3660046142aa565b6121ba565b348015610d1d57600080fd5b506005546104409060ff1681565b348015610d3757600080fd5b5061041e610d46366004614449565b61224c565b348015610d5757600080fd5b5061046a610d6636600461488b565b6122c5565b348015610d7757600080fd5b50306108ea565b348015610d8a57600080fd5b5061041e610d993660046142aa565b612378565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610e1b5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610e39906148d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610e65906148d8565b8015610eb25780601f10610e8757610100808354040283529160200191610eb2565b820191906000526020600020905b815481529060010190602001808311610e9557829003601f168201915b50505050509050805186869050148015610ecd575060008151115b8015610ef5575080516020820120604051610eeb908890889061490d565b6040518091039020145b610f505760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610e12565b610fc68787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506123c892505050565b50505050505050565b60006001600160e01b03198216630d30953d60e31b148061100057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600c8054611015906148d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611041906148d8565b801561108e5780601f106110635761010080835404028352916020019161108e565b820191906000526020600020905b81548152906001019060200180831161107157829003601f168201915b5050505050905090565b6110a0612441565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b15801561110657600080fd5b505af115801561111a573d6000803e3d6000fd5b5050505050565b60003361112f81858561249b565b5060019392505050565b611141612441565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb137906024016110ec565b60003361119f8582856125bf565b6111aa858585612639565b60019150505b9392505050565b6111c2868685612807565b509250611230868686866111d96020870187614449565b6111e96040880160208901614449565b6111f6604089018961491d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061285092505050565b9250818310156112525760405162461bcd60e51b8152600401610e1290614963565b505050505050565b611262612441565b61ffff82166000818152600f602052604090819020839055517f33d0fe6530e808b43711a6333a7509ab4601707b639f23fcb8aef05bb6602ae6906112aa9084815260200190565b60405180910390a25050565b6000806112fc8888888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061297492505050565b91509150965096945050505050565b60003361112f81858561131e8383611f1b565b61132891906149c6565b61249b565b61ffff83166000908152600160205260408120805482919061134e906148d8565b80601f016020809104026020016040519081016040528092919081815260200182805461137a906148d8565b80156113c75780601f1061139c576101008083540402835291602001916113c7565b820191906000526020600020905b8154815290600101906020018083116113aa57829003601f168201915b5050505050905083836040516113de92919061490d565b60405180910390208180519060200120149150509392505050565b611401612441565b611409612a2c565b565b611413612441565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061146390869086908690600401614a07565b600060405180830381600087803b15801561147d57600080fd5b505af1158015610fc6573d6000803e3d6000fd5b61149c898988612807565b50809650506115458989898988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506114ee9150506020890189614449565b6114fe60408a0160208b01614449565b61150b60408b018b61491d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a7e92505050565b9550848610156115675760405162461bcd60e51b8152600401610e1290614963565b505050505050505050565b61157a612441565b6001600160a01b0381166115d05760405162461bcd60e51b815260206004820152601a60248201527f4665653a206665654f776e65722063616e6e6f742062652030780000000000006044820152606401610e12565b6008805462010000600160b01b031916620100006001600160a01b038416908102919091179091556040519081527f047912631afa564eebd3db2efe191a0dec62da1fede6bbbc1ffc89d87845b1b5906020015b60405180910390a150565b611637612441565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527ff6019ec0a78d156d249a1ec7579e2321f6ac7521d6e1d2eacf90ba4a184dcceb91016112aa565b611697612441565b6127108161ffff1611156116bd5760405162461bcd60e51b8152600401610e1290614a25565b6008805461ffff191661ffff83169081179091556040519081527fd26030ef4a8c225ee12b646eb4466acb41fb96b6cd4660b22d0ba0124e7bdc7490602001611624565b33301461175f5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610e12565b6112528686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612b7a92505050565b6117dd612441565b6114096000612c01565b60016020526000908152604090208054611800906148d8565b80601f016020809104026020016040519081016040528092919081815260200182805461182c906148d8565b80156118795780601f1061184e57610100808354040283529160200191611879565b820191906000526020600020905b81548152906001019060200180831161185c57829003601f168201915b505050505081565b611889612441565b6127108161ffff1611156118af5760405162461bcd60e51b8152600401610e1290614a25565b60408051808201825261ffff83811680835285151560208085018281528985166000818152600784528890209651875492511515620100000262ffffff1990931696169590951717909455845192835292820192909252918201527fdd9c9685af3e6dcb56d8f4b88d2595d4add6837a150034e7781c46b6dcf8aaab906060015b60405180910390a1505050565b611945612441565b611409612c51565b6000611958600b5490565b905090565b6060600d8054611015906148d8565b61ffff811660009081526001602052604081208054606092919061198f906148d8565b80601f01602080910402602001604051908101604052809291908181526020018280546119bb906148d8565b8015611a085780601f106119dd57610100808354040283529160200191611a08565b820191906000526020600020905b8154815290600101906020018083116119eb57829003601f168201915b50505050509050805160001415611a615760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610e12565b6111b0600060148351611a749190614a6a565b839190612c8e565b60003381611a8a8286611f1b565b905083811015611aea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e12565b611af7828686840361249b565b506001949350505050565b600080611b7f8b8b8b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b81528e93508d9250908c908c9081908401838280828437600092019190915250612d9b92505050565b91509150995099975050505050505050565b611b99612441565b818130604051602001611bae93929190614a81565b60408051601f1981840301815291815261ffff85166000908152600160209081529190208251611be393919290910190613ecf565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161193093929190614a07565b60003361112f818585612639565b611c2d612441565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b90602001611624565b611c83612441565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611cd79088908890889088908890600401614aa7565b600060405180830381600087803b158015611cf157600080fd5b505af1158015611567573d6000803e3d6000fd5b61ffff86166000908152600460205260408082209051611d28908890889061490d565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611da85760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610e12565b808383604051611db992919061490d565b604051809103902014611e185760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610e12565b61ffff87166000908152600460205260408082209051611e3b908990899061490d565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252611ed3918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612b7a92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611f0a959493929190614ae0565b60405180910390a150505050505050565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b611f4e612441565b60008111611f965760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610e12565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611930565b612000612441565b6005805460ff19168215159081179091556040519081527f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a490602001611624565b3330146120905760405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606401610e12565b61209b308686612e56565b9350846001600160a01b03168a61ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf866040516120dd91815260200190565b60405180910390a3604051633fe79aed60e11b81526001600160a01b03861690637fcf35da908390612121908e908e908e908e908e908d908d908d90600401614b1b565b600060405180830381600088803b15801561213b57600080fd5b5087f115801561214f573d6000803e3d6000fd5b505050505050505050505050505050565b612168612441565b61ffff83166000908152600160205260409020612186908383613f53565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161193093929190614a07565b61ffff828116600090815260076020908152604080832081518083019092525493841681526201000090930460ff161580159184019190915290919061221f5780516127109061220e9061ffff1685614b76565b6122189190614bab565b9150612245565b60085461ffff1615612240576008546127109061220e9061ffff1685614b76565b600091505b5092915050565b612254612441565b6001600160a01b0381166122b95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e12565b6122c281612c01565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015612345573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261236d9190810190614bbf565b90505b949350505050565b612380612441565b61ffff821660008181526012602052604090819020839055517f13aaa8bcd182e10a0da2842b57f639fd4182fa41a6c702fb2b8570da7b2911a5906112aa9084815260200190565b60008061242b5a60966366ad5c8a60e01b898989896040516024016123f09493929190614c35565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190612ea8565b9150915081611252576112528686868685612f32565b6000546001600160a01b031633146114095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e12565b6001600160a01b0383166124fd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e12565b6001600160a01b03821661255e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e12565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006125cb8484611f1b565b9050600019811461263357818110156126265760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e12565b612633848484840361249b565b50505050565b6001600160a01b03831661269d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e12565b6001600160a01b0382166126ff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e12565b6001600160a01b038316600090815260096020526040902054818110156127775760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610e12565b6001600160a01b038085166000908152600960205260408082208585039055918516815290812080548492906127ae9084906149c6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127fa91815260200190565b60405180910390a3612633565b60008061281484846121ba565b90506128208184614a6a565b91508015612848576008546128469086906201000090046001600160a01b031683612e56565b505b935093915050565b600061285e87828481612fcf565b61286785613049565b50905061287688888884613089565b9050600081116128c45760405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606401610e12565b600061290f876128d38461319c565b6040805160006020820152602181019390935260c09190911b6001600160c01b0319166041830152805160298184030181526049909201905290565b905061291f888287878734613222565b86896001600160a01b03168961ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8560405161296091815260200190565b60405180910390a450979650505050505050565b6000806000612986876128d38861319c565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906129dd908b90309086908b908b90600401614c73565b6040805180830381865afa1580156129f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1d9190614cc7565b92509250509550959350505050565b612a346133bd565b600e805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000612a96896001846001600160401b038916612fcf565b612a9f87613049565b509050612aae8a8a8a84613089565b905060008111612afc5760405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606401610e12565b6000612b13338a612b0c8561319c565b8a8a613406565b9050612b238a8287878734613222565b888b6001600160a01b03168b61ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a85604051612b6491815260200190565b60405180910390a4509998505050505050505050565b6000612b868282613447565b905060ff8116612ba157612b9c858585856134a3565b61111a565b60ff811660011415612bb957612b9c85858585613533565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606401610e12565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612c59613741565b600e805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612a613390565b606081612c9c81601f6149c6565b1015612cdb5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610e12565b612ce582846149c6565b84511015612d295760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610e12565b606082158015612d485760405191506000825260208201604052612d92565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612d81578051835260209283019201612d69565b5050858452601f01601f1916604052505b50949350505050565b6000806000612dae338a612b0c8b61319c565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090612e05908d90309086908b908b90600401614c73565b6040805180830381865afa158015612e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e459190614cc7565b925092505097509795505050505050565b600033306001600160a01b03861614801590612e845750806001600160a01b0316856001600160a01b031614155b15612e9457612e948582856125bf565b612e9f858585612639565b50909392505050565b6000606060008060008661ffff166001600160401b03811115612ecd57612ecd61449b565b6040519080825280601f01601f191660200182016040528015612ef7576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115612f19578692505b828152826000602083013e909890975095505050505050565b8180519060200120600460008761ffff1661ffff16815260200190815260200160002085604051612f639190614ceb565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90612fc09087908790879087908790614d07565b60405180910390a15050505050565b60055460ff1615612feb57612fe684848484613787565b612633565b8151156126335760405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608401610e12565b6000806130767f000000000000000000000000000000000000000000000000000000000000000084614d59565b90506130828184614a6a565b9150915091565b6000613093613741565b60006130a186868686613866565b6001600160a01b03871660009081526015602052604090205490915060ff16156130cc579050612370565b61ffff8516600090815260116020526040812054426130ee6201518083614bab565b6130fb6201518083614bab565b11156131095783925061312b565b61ffff88166000908152601060205260409020546131289085906149c6565b92505b61ffff88166000908152600f60205260409020548084111561316a57604051635986919560e01b81526004810182905260248101859052604401610e12565b5061ffff8816600090815260106020908152604080832095909555601190529290922091909155509050949350505050565b6000806131c97f000000000000000000000000000000000000000000000000000000000000000084614bab565b90506001600160401b038111156110005760405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606401610e12565b61ffff861660009081526001602052604081208054613240906148d8565b80601f016020809104026020016040519081016040528092919081815260200182805461326c906148d8565b80156132b95780601f1061328e576101008083540402835291602001916132b9565b820191906000526020600020905b81548152906001019060200180831161329c57829003601f168201915b5050505050905080516000141561332b5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610e12565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490613382908b9086908c908c908c908c90600401614d6d565b6000604051808303818588803b15801561339b57600080fd5b505af11580156133af573d6000803e3d6000fd5b505050505050505050505050565b600e5460ff166114095760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610e12565b6060600185856001600160a01b038916858760405160200161342d96959493929190614dd4565b604051602081830303815290604052905095945050505050565b60006134548260016149c6565b8351101561349a5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606401610e12565b50016001015190565b6000806134af83613898565b90925090506001600160a01b0382166134c85761dead91505b60006134d38261391d565b90506134e0878483613952565b9050826001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8360405161352291815260200190565b60405180910390a350505050505050565b600080600080600061354486613a63565b945094509450945094506000600660008b61ffff1661ffff168152602001908152602001600020896040516135799190614ceb565b90815260408051602092819003830190206001600160401b038b166000908152925281205460ff1691506135ac8561391d565b90508161361a576135be8b3083613952565b61ffff8c166000908152600660205260409081902090519192506001916135e6908d90614ceb565b90815260408051602092819003830190206001600160401b038d16600090815292529020805460ff19169115159190911790555b6001600160a01b0386163b613671576040516001600160a01b03871681527f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9060200160405180910390a150505050505050612633565b8a8a8a8a8a8a868a60008a61368f578b6001600160401b0316613691565b5a5b90506000806136c35a609663eaffd49a60e01b8e8e8e8d8d8d8d8d6040516024016123f0989796959493929190614e35565b91509150811561371c578751602089012060405161ffff8d16907fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849061370e908e908e908690614ea9565b60405180910390a250613729565b6137298b8b8b8b85612f32565b50505050505050505050505050505050505050505050565b600e5460ff16156114095760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610e12565b600061379283613b1a565b61ffff8087166000908152600260209081526040808320938916835292905290812054919250906137c49084906149c6565b9050600081116138165760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610e12565b808210156112525760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610e12565b6000336001600160a01b0386168114613884576138848682856125bf565b61388e8684613b76565b5090949350505050565b600080806138a68482613447565b60ff161480156138b7575082516029145b6138fe5760405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606401610e12565b61390983600d613cc4565b9150613916836021613d29565b9050915091565b60006110007f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416614b76565b600061395c613741565b6000613969858585613d86565b6001600160a01b03851660009081526015602052604090205490915060ff16156139945790506111b0565b61ffff8516600090815260146020526040812054426139b66201518083614bab565b6139c36201518083614bab565b11156139d1578392506139f3565b61ffff88166000908152601360205260409020546139f09085906149c6565b92505b61ffff881660009081526012602052604090205480841115613a3257604051636cc1d80760e01b81526004810182905260248101859052604401610e12565b5061ffff88166000908152601360209081526040808320959095556014905292909220919091555090509392505050565b600080806060816001613a768783613447565b60ff1614613ac15760405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606401610e12565b613acc86600d613cc4565b9350613ad9866021613d29565b9250613ae6866029613d92565b9450613af3866049613d29565b9050613b0f6051808851613b079190614a6a565b889190612c8e565b915091939590929450565b6000602282511015613b6e5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610e12565b506022015190565b6001600160a01b038216613bd65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610e12565b6001600160a01b03821660009081526009602052604090205481811015613c4a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610e12565b6001600160a01b03831660009081526009602052604081208383039055600b8054849290613c79908490614a6a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000613cd18260146149c6565b83511015613d195760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610e12565b500160200151600160601b900490565b6000613d368260086149c6565b83511015613d7d5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606401610e12565b50016008015190565b60006122458383613df0565b6000613d9f8260206149c6565b83511015613de75760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610e12565b50016020015190565b6001600160a01b038216613e465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610e12565b80600b6000828254613e5891906149c6565b90915550506001600160a01b03821660009081526009602052604081208054839290613e859084906149c6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054613edb906148d8565b90600052602060002090601f016020900481019282613efd5760008555613f43565b82601f10613f1657805160ff1916838001178555613f43565b82800160010185558215613f43579182015b82811115613f43578251825591602001919060010190613f28565b50613f4f929150613fc7565b5090565b828054613f5f906148d8565b90600052602060002090601f016020900481019282613f815760008555613f43565b82601f10613f9a5782800160ff19823516178555613f43565b82800160010185558215613f43579182015b82811115613f43578235825591602001919060010190613fac565b5b80821115613f4f5760008155600101613fc8565b803561ffff81168114613fee57600080fd5b919050565b60008083601f84011261400557600080fd5b5081356001600160401b0381111561401c57600080fd5b60208301915083602082850101111561403457600080fd5b9250929050565b80356001600160401b0381168114613fee57600080fd5b6000806000806000806080878903121561406b57600080fd5b61407487613fdc565b955060208701356001600160401b038082111561409057600080fd5b61409c8a838b01613ff3565b90975095508591506140b060408a0161403b565b945060608901359150808211156140c657600080fd5b506140d389828a01613ff3565b979a9699509497509295939492505050565b6000602082840312156140f757600080fd5b81356001600160e01b0319811681146111b057600080fd5b60005b8381101561412a578181015183820152602001614112565b838111156126335750506000910152565b6000815180845261415381602086016020860161410f565b601f01601f19169290920160200192915050565b6020815260006111b0602083018461413b565b60006020828403121561418c57600080fd5b6111b082613fdc565b6001600160a01b03811681146122c257600080fd5b600080604083850312156141bd57600080fd5b82356141c881614195565b946020939093013593505050565b6000806000606084860312156141eb57600080fd5b83356141f681614195565b9250602084013561420681614195565b929592945050506040919091013590565b60006060828403121561422957600080fd5b50919050565b60008060008060008060c0878903121561424857600080fd5b863561425381614195565b955061426160208801613fdc565b945060408701359350606087013592506080870135915060a08701356001600160401b0381111561429157600080fd5b61429d89828a01614217565b9150509295509295509295565b600080604083850312156142bd57600080fd5b6141c883613fdc565b80358015158114613fee57600080fd5b60008060008060008060a087890312156142ef57600080fd5b6142f887613fdc565b95506020870135945060408701359350614314606088016142c6565b925060808701356001600160401b0381111561432f57600080fd5b6140d389828a01613ff3565b60008060006040848603121561435057600080fd5b61435984613fdc565b925060208401356001600160401b0381111561437457600080fd5b61438086828701613ff3565b9497909650939450505050565b60008060008060008060008060006101008a8c0312156143ac57600080fd5b89356143b781614195565b98506143c560208b01613fdc565b975060408a0135965060608a0135955060808a0135945060a08a01356001600160401b03808211156143f657600080fd5b6144028d838e01613ff3565b909650945084915061441660c08d0161403b565b935060e08c013591508082111561442c57600080fd5b506144398c828d01614217565b9150509295985092959850929598565b60006020828403121561445b57600080fd5b81356111b081614195565b6000806040838503121561447957600080fd5b823561448481614195565b9150614492602084016142c6565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156144d9576144d961449b565b604052919050565b60006001600160401b038211156144fa576144fa61449b565b50601f01601f191660200190565b60008060006060848603121561451d57600080fd5b61452684613fdc565b925060208401356001600160401b0381111561454157600080fd5b8401601f8101861361455257600080fd5b8035614565614560826144e1565b6144b1565b81815287602083850101111561457a57600080fd5b8160208401602083013760006020838301015280945050505061459f6040850161403b565b90509250925092565b6000806000606084860312156145bd57600080fd5b6145c684613fdc565b92506145d4602085016142c6565b915061459f60408501613fdc565b600080604083850312156145f557600080fd5b6145fe83613fdc565b915061449260208401613fdc565b600080600080600080600080600060e08a8c03121561462a57600080fd5b6146338a613fdc565b985060208a0135975060408a0135965060608a01356001600160401b038082111561465d57600080fd5b6146698d838e01613ff3565b909850965086915061467d60808d0161403b565b955061468b60a08d016142c6565b945060c08c01359150808211156146a157600080fd5b506146ae8c828d01613ff3565b915080935050809150509295985092959850929598565b6000806000806000608086880312156146dd57600080fd5b6146e686613fdc565b94506146f460208701613fdc565b93506040860135925060608601356001600160401b0381111561471657600080fd5b61472288828901613ff3565b969995985093965092949392505050565b6000806040838503121561474657600080fd5b823561475181614195565b9150602083013561476181614195565b809150509250929050565b60008060006060848603121561478157600080fd5b61478a84613fdc565b925061479860208501613fdc565b9150604084013590509250925092565b6000602082840312156147ba57600080fd5b6111b0826142c6565b6000806000806000806000806000806101008b8d0312156147e357600080fd5b6147ec8b613fdc565b995060208b01356001600160401b038082111561480857600080fd5b6148148e838f01613ff3565b909b50995089915061482860408e0161403b565b985060608d0135975060808d0135915061484182614195565b90955060a08c0135945060c08c0135908082111561485e57600080fd5b5061486b8d828e01613ff3565b9150809450508092505060e08b013590509295989b9194979a5092959850565b600080600080608085870312156148a157600080fd5b6148aa85613fdc565b93506148b860208601613fdc565b925060408501356148c881614195565b9396929550929360600135925050565b600181811c908216806148ec57607f821691505b6020821081141561422957634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b6000808335601e1984360301811261493457600080fd5b8301803591506001600160401b0382111561494e57600080fd5b60200191503681900382131561403457600080fd5b6020808252602d908201527f426173654f4654576974684665653a20616d6f756e74206973206c657373207460408201526c1a185b881b5a5b905b5bdd5b9d609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156149d9576149d96149b0565b500190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8416815260406020820152600061236d6040830184866149de565b60208082526025908201527f4665653a20666565206270206d757374206265203c3d2042505f44454e4f4d496040820152642720aa27a960d91b606082015260800190565b600082821015614a7c57614a7c6149b0565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152614ad56080830184866149de565b979650505050505050565b61ffff86168152608060208201526000614afe6080830186886149de565b6001600160401b0394909416604083015250606001529392505050565b61ffff8916815260c060208201526000614b3960c08301898b6149de565b6001600160401b038816604084015286606084015285608084015282810360a0840152614b678185876149de565b9b9a5050505050505050505050565b6000816000190483118215151615614b9057614b906149b0565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614bba57614bba614b95565b500490565b600060208284031215614bd157600080fd5b81516001600160401b03811115614be757600080fd5b8201601f81018413614bf857600080fd5b8051614c06614560826144e1565b818152856020838501011115614c1b57600080fd5b614c2c82602083016020860161410f565b95945050505050565b61ffff85168152608060208201526000614c52608083018661413b565b6001600160401b03851660408401528281036060840152614ad5818561413b565b61ffff861681526001600160a01b038516602082015260a060408201819052600090614ca19083018661413b565b84151560608401528281036080840152614cbb818561413b565b98975050505050505050565b60008060408385031215614cda57600080fd5b505080516020909101519092909150565b60008251614cfd81846020870161410f565b9190910192915050565b61ffff8616815260a060208201526000614d2460a083018761413b565b6001600160401b03861660408401528281036060840152614d45818661413b565b90508281036080840152614cbb818561413b565b600082614d6857614d68614b95565b500690565b61ffff8716815260c060208201526000614d8a60c083018861413b565b8281036040840152614d9c818861413b565b6001600160a01b0387811660608601528616608085015283810360a08501529050614dc7818561413b565b9998505050505050505050565b60ff60f81b8760f81b16815285600182015260006001600160401b0360c01b808760c01b166021840152856029840152808560c01b166049840152508251614e2381605185016020870161410f565b91909101605101979650505050505050565b600061010061ffff8b168352806020840152614e538184018b61413b565b6001600160401b038a166040850152606084018990526001600160a01b038816608085015260a0840187905283810360c08501529050614e93818661413b565b9150508260e08301529998505050505050505050565b606081526000614ebc606083018661413b565b6001600160401b03949094166020830152506040015291905056fea26469706673582212204082777fc8f310f2fb3ba51343d8200a232d808af44f7f218baa873f584fca5864736f6c634300080c0033000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7