0 txs
5.2k calls
constructor
No constructor.
functions
allowDeposit
viewfunction allowDeposit() view returns (bool)
bridgeFeeCollected
viewfunction bridgeFeeCollected(bytes32) view returns (uint256)
bridgeParams
viewfunction bridgeParams(bytes32) view returns (uint256 fee, uint256 gasSwapRatio, bool usedForGasSwap)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getBannedAccounts
viewfunction getBannedAccounts() view returns (address)
getBridgeFee
viewfunction getBridgeFee(uint8 _bridge, uint32 _dstChainListOrgChainId, bytes32 _symbol, uint256 _quantity) view returns (uint256 bridgeFee)
getChainId
viewfunction getChainId() view returns (uint32)
getMinDepositAmount
viewfunction getMinDepositAmount(bytes32 _symbol) view returns (uint256)
getMinDepositAmounts
viewfunction getMinDepositAmounts() view returns (bytes32[], uint256[])
getNative
viewfunction getNative() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getToken
viewfunction getToken(bytes32 _symbol) view returns (address)
getTokenDetails
viewfunction getTokenDetails(bytes32 _symbol) view returns (tuple)
getTokenDetailsById
viewfunction getTokenDetailsById(bytes32 _symbolId) view returns (tuple)
getTokenList
viewfunction getTokenList() view returns (bytes32[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isTrustedContract
viewfunction isTrustedContract(address _contract) view returns (bool)
minDepositMultiplier
viewfunction minDepositMultiplier() view returns (uint8)
native
viewfunction native() view returns (bytes32)
nativeDepositsRestricted
viewfunction nativeDepositsRestricted() view returns (bool)
paused
viewfunction paused() view returns (bool)
PORTFOLIO_BRIDGE_ROLE
viewfunction PORTFOLIO_BRIDGE_ROLE() view returns (bytes32)
portfolioBridge
viewfunction portfolioBridge() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TENK
viewfunction TENK() view returns (uint256)
tokenDetailsMap
viewfunction tokenDetailsMap(bytes32) view returns (uint8 decimals, address tokenAddress, uint8 auctionMode, uint32 srcChainId, bytes32 symbol, bytes32 symbolId, bytes32 sourceChainSymbol, bool isVirtual)
tokenDetailsMapById
viewfunction tokenDetailsMapById(bytes32) view returns (bytes32)
tokenMap
viewfunction tokenMap(bytes32) view returns (address)
trustedContracts
viewfunction trustedContracts(address) view returns (bool)
trustedContractToIntegrator
viewfunction trustedContractToIntegrator(address) view returns (string)
VERSION
viewfunction VERSION() view returns (bytes32)
addToken
nonpayablefunction addToken(bytes32 _symbol, address _tokenAddress, uint32 _srcChainId, uint8 _decimals, uint256 _fee, uint256 _gasSwapRatio, bool _isVirtual)
addTrustedContract
nonpayablefunction addTrustedContract(address _contract, string _organization)
collectBridgeFees
nonpayablefunction collectBridgeFees(bytes32[] _symbols)
collectNativeBridgeFees
nonpayablefunction collectNativeBridgeFees()
depositNative
payablefunction depositNative(address _from, uint8 _bridge) payable
depositToken
nonpayablefunction depositToken(address _from, bytes32 _symbol, uint256 _quantity, uint8 _bridge)
depositTokenFromContract
nonpayablefunction depositTokenFromContract(address _from, bytes32 _symbol, uint256 _quantity)
enableBridgeProvider
nonpayablefunction enableBridgeProvider(uint8 _bridge, bool _enable)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(bytes32 _native, uint32 _chainId)
pause
nonpayablefunction pause()
pauseDeposit
nonpayablefunction pauseDeposit(bool _depositPause)
processXFerPayload
nonpayablefunction processXFerPayload(tuple _xfer)
removeToken
nonpayablefunction removeToken(bytes32 _symbol, uint32)
removeTrustedContract
nonpayablefunction removeTrustedContract(address _contract)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 _role, address _address)
setBannedAccounts
nonpayablefunction setBannedAccounts(address _address)
setBridgeParam
nonpayablefunction setBridgeParam(bytes32 _symbol, uint256 _fee, uint256 _gasSwapRatio, bool _usedForGasSwap)
setMinDepositMultiplier
nonpayablefunction setMinDepositMultiplier(uint8 _minDepositMultiplier)
setPortfolioBridge
nonpayablefunction setPortfolioBridge(address _portfolioBridge)
unpause
nonpayablefunction unpause()
events
AddressSet
event AddressSet(string indexed name, string actionName, address oldAddress, address newAddress)
Initialized
event Initialized(uint8 version)
ParameterUpdated
event ParameterUpdated(bytes32 indexed pair, string _param, uint256 _oldValue, uint256 _newValue)
Paused
event Paused(address account)
PortfolioUpdated
event PortfolioUpdated(uint8 indexed transaction, address indexed wallet, bytes32 indexed symbol, uint256 quantity, uint256 feeCharged, uint256 total, uint256 available, address walletOther)
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)
RoleUpdated
event RoleUpdated(string indexed name, string actionName, bytes32 updatedRole, address updatedAddress)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50614cad806100206000396000f3fe6080604052600436106103545760003560e01c80637d5a6029116101c6578063ca15c873116100f7578063dba5108c11610095578063e68ca31c1161006f578063e68ca31c14610bf6578063ed6ec96f14610c16578063fdc051c314610c37578063ffa1ad7414610c595761041d565b8063dba5108c14610b82578063e3e27ae214610ba5578063e5919a4f14610bc55761041d565b8063d0478e7b116100d1578063d0478e7b14610b0b578063d547741f14610b2b578063d5f44b5d14610b4b578063da52ba5814610b625761041d565b8063ca15c87314610a9e578063ccf0c31814610abe578063cdb4d84414610aeb5761041d565b8063a217fddf11610164578063b26cfb391161013e578063b26cfb391461099f578063ba873c80146109d3578063bf892eaa14610a5e578063c8d83f4d14610a7e5761041d565b8063a217fddf14610954578063a85b53a214610969578063ab8750261461097f5761041d565b80638b0ec201116101a05780638b0ec201146108d45780639010d07c146108f457806391d1485414610914578063929ddf8a146109345761041d565b80637d5a6029146108475780638456cb59146108a45780638a4f68b6146108b95761041d565b80632ee4c45c116102a0578063415855d61161023e578063595bceb211610218578063595bceb2146107b65780635bf3a315146107d55780635c975abb1461080f578063756c470a146108275761041d565b8063415855d6146107635780634ae67c5914610783578063565d3f5b146107965761041d565b80633408e4701161027a5780633408e470146106da578063354f25a81461070057806336568abe1461072e5780633f4ba83a1461074e5761041d565b80632ee4c45c146106635780632f2ff15d1461069a57806332f385da146106ba5761041d565b806311b0b42d1161030d57806320be60f1116102e757806320be60f1146105da57806323fe4b97146105ef578063248a9ca314610611578063273cbaa0146106415761041d565b806311b0b42d14610554578063155bf4e21461056b5780631ba13acd146105ba5761041d565b806301996a331461045657806301ffc9a71461048957806302034543146104b95780630d6d8996146104d95780630f12324c146105075780631131e14f146105275761041d565b3661041d5761012f546040805163f7b90d6160e01b815290513092634ae67c5992349233926001600160a01b03169163f7b90d619160048083019260209291908290030181865afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d19190613f9c565b6040518463ffffffff1660e01b81526004016103ee929190613fe3565b6000604051808303818588803b15801561040757600080fd5b505af115801561041b573d6000803e3d6000fd5b005b60405162461bcd60e51b8152602060048201526009602482015268502d4e46554e2d303160b81b60448201526064015b60405180910390fd5b34801561046257600080fd5b50610476610471366004614012565b610c75565b6040519081526020015b60405180910390f35b34801561049557600080fd5b506104a96104a4366004614058565b610cf9565b6040519015158152602001610480565b3480156104c557600080fd5b5061041b6104d4366004614082565b610d24565b3480156104e557600080fd5b506104766104f43660046140f7565b6101376020526000908152604090205481565b34801561051357600080fd5b5061041b610522366004614125565b610e7a565b34801561053357600080fd5b506105476105423660046141aa565b610f50565b60405161048091906141eb565b34801561056057600080fd5b506104766101305481565b34801561057757600080fd5b506105a26105863660046140f7565b600090815261013660205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610480565b3480156105c657600080fd5b506104766105d53660046140f7565b610feb565b3480156105e657600080fd5b5061041b611037565b3480156105fb57600080fd5b50610476600080516020614c3883398151915281565b34801561061d57600080fd5b5061047661062c3660046140f7565b60009081526065602052604090206001015490565b34801561064d57600080fd5b506106566110f6565b6040516104809190614259565b34801561066f57600080fd5b506105a261067e3660046140f7565b610136602052600090815260409020546001600160a01b031681565b3480156106a657600080fd5b5061041b6106b536600461426c565b61119d565b3480156106c657600080fd5b5061041b6106d536600461429c565b6111c7565b3480156106e657600080fd5b506101315460405163ffffffff9091168152602001610480565b34801561070c57600080fd5b5061047661071b3660046140f7565b6101356020526000908152604090205481565b34801561073a57600080fd5b5061041b61074936600461426c565b611411565b34801561075a57600080fd5b5061041b61148b565b34801561076f57600080fd5b5061041b61077e3660046142bc565b611587565b61041b6107913660046142d9565b6115a6565b3480156107a257600080fd5b5061041b6107b1366004614307565b611664565b3480156107c257600080fd5b5061013a546001600160a01b03166105a2565b3480156107e157600080fd5b506104a96107f03660046141aa565b6001600160a01b03166000908152610138602052604090205460ff1690565b34801561081b57600080fd5b5060c95460ff166104a9565b34801561083357600080fd5b5061041b6108423660046141aa565b611790565b34801561085357600080fd5b506108876108623660046140f7565b61012e6020526000908152604090208054600182015460029092015490919060ff1683565b604080519384526020840192909252151590820152606001610480565b3480156108b057600080fd5b5061041b6118af565b3480156108c557600080fd5b5061012d546104a99060ff1681565b3480156108e057600080fd5b5061041b6108ef36600461434b565b61198f565b34801561090057600080fd5b506105a261090f3660046143c6565b611a32565b34801561092057600080fd5b506104a961092f36600461426c565b611a4a565b34801561094057600080fd5b5061041b61094f3660046143e8565b611a75565b34801561096057600080fd5b50610476600081565b34801561097557600080fd5b5061013054610476565b34801561098b57600080fd5b5061041b61099a366004614429565b611ae8565b3480156109ab57600080fd5b5061013a546109c190600160a01b900460ff1681565b60405160ff9091168152602001610480565b3480156109df57600080fd5b50610a4a6109ee3660046140f7565b610134602052600090815260409020805460018201546002830154600384015460049094015460ff8085169561010086046001600160a01b031695600160a81b8104831695600160b01b90910463ffffffff1694909390921688565b604051610480989796959493929190614478565b348015610a6a57600080fd5b5061041b610a793660046141aa565b611ce6565b348015610a8a57600080fd5b5061041b610a993660046144d1565b611da9565b348015610aaa57600080fd5b50610476610ab93660046140f7565b611e84565b348015610aca57600080fd5b50610ade610ad93660046140f7565b611e9b565b60405161048091906144ee565b348015610af757600080fd5b5061041b610b06366004614561565b611f64565b348015610b1757600080fd5b50610ade610b263660046140f7565b6120e9565b348015610b3757600080fd5b5061041b610b4636600461426c565b61214b565b348015610b5757600080fd5b50610476620186a081565b348015610b6e57600080fd5b5061041b610b7d366004614586565b6122d1565b348015610b8e57600080fd5b50610b976123ba565b6040516104809291906145b4565b348015610bb157600080fd5b5061041b610bc0366004614561565b61252f565b348015610bd157600080fd5b506104a9610be03660046141aa565b6101386020526000908152604090205460ff1681565b348015610c0257600080fd5b5061041b610c113660046141aa565b612722565b348015610c2257600080fd5b5061012f546105a2906001600160a01b031681565b348015610c4357600080fd5b5061013a546104a990600160a81b900460ff1681565b348015610c6557600080fd5b506104766419171a971b60d91b81565b61012f546040516301996a3360e01b81526000916001600160a01b0316906301996a3390610cad90889088908890889060040161460b565b602060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee919061463a565b90505b949350505050565b60006001600160e01b03198216635a05180f60e01b1480610d1e5750610d1e82612751565b92915050565b610d2c612786565b6000610d37816127df565b60005b82811015610e6a57610d6f848483818110610d5757610d57614653565b905060200201356101326127e990919063ffffffff16565b610da75760405162461bcd60e51b81526020600482015260096024820152682816a2aa272996981960b91b604482015260640161044d565b60006101376000868685818110610dc057610dc0614653565b9050602002013581526020019081526020016000205490506000811115610e595760006101376000878786818110610dfa57610dfa614653565b90506020020135815260200190815260200160002081905550610e5933826101366000898988818110610e2f57610e2f614653565b60209081029290920135835250810191909152604001600020546001600160a01b03169190612801565b50610e638161467f565b9050610d3a565b5050610e76600160fb55565b5050565b6000610e85816127df565b6001600160a01b038416600090815261013860209081526040808320805460ff191660011790556101399091529020610ebf838583614730565b508282604051610ed09291906147f0565b60408051918290038220606080845260159084015274140b5051110b55149554d5115110d3d395149050d5605a1b60808401526001600160a01b0387166020840181905291830191909152907fd1c8d5845dde378dd9c07dd59db86e1c0b99a8431663f242604a105c285c43f69060a0015b60405180910390a250505050565b6101396020526000908152604090208054610f6a906146ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610f96906146ae565b8015610fe35780601f10610fb857610100808354040283529160200191610fe3565b820191906000526020600020905b815481529060010190602001808311610fc657829003601f168201915b505050505081565b600081815261012e6020526040812061013a5460018201548254600a92600160a01b900460ff169161101c91614800565b6110269190614813565b611030919061482a565b9392505050565b61103f612786565b600061104a816127df565b61013054600090815261013760205260408082208054908390559051909190339083908381818185875af1925050503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50509050806110e75760405162461bcd60e51b8152602060048201526009602482015268502d434e46462d303160b81b604482015260640161044d565b5050506110f4600160fb55565b565b6060600061110561013261286b565b67ffffffffffffffff81111561111d5761111d614698565b604051908082528060200260200182016040528015611146578160200160208202803683370190505b50905060005b61115761013261286b565b8110156111975761116a61013282612875565b82828151811061117c5761117c614653565b60209081029190910101526111908161467f565b905061114c565b50919050565b6000828152606560205260409020600101546111b8816127df565b6111c28383612881565b505050565b6111cf612786565b600080516020614c388339815191526111e7816127df565b60006111f9604084016020850161484c565b600d81111561120a5761120a613fb9565b036113cf57600061122160608401604085016141aa565b6001600160a01b0316036112645760405162461bcd60e51b815260206004820152600a6024820152692816ad20a2222916981960b11b604482015260640161044d565b60008260800135116112a45760405162461bcd60e51b8152602060048201526009602482015268502d5a4554442d303160b81b604482015260640161044d565b6101305482606001350361135a5760006112c460608401604085016141aa565b6001600160a01b0316836080013560405160006040518083038185875af1925050503d8060008114611312576040519150601f19603f3d011682016040523d82523d6000602084013e611317565b606091505b50509050806113545760405162461bcd60e51b8152602060048201526009602482015268502d574e46412d303160b81b604482015260640161044d565b50611396565b61139661136d60608401604085016141aa565b6060840135600090815261013660205260409020546001600160a01b0316906080850135612801565b6113ca6113a960608401604085016141aa565b6060840135608085013560006113c5604088016020890161484c565b6128a3565b611403565b60405162461bcd60e51b81526020600482015260096024820152682816a82a272996981960b91b604482015260640161044d565b5061140e600160fb55565b50565b6001600160a01b03811633146114815760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161044d565b610e76828261291d565b6000611496816127df565b61149e61293f565b61012f60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611516919061486d565b1561140e5761012f60009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156c57600080fd5b505af1158015611580573d6000803e3d6000fd5b5050505050565b6000611592816127df565b5061012d805460ff19169115919091179055565b6115ae612991565b6115b6612786565b6001600160a01b0382163314806115cc57503330145b6116045760405162461bcd60e51b81526020600482015260096024820152682816a7a7aba716981960b91b604482015260640161044d565b61013a54600160a81b900460ff161561164b5760405162461bcd60e51b8152602060048201526009602482015268502d4e444e532d303160b81b604482015260640161044d565b61165a826101305434846129d7565b610e76600160fb55565b336000908152610138602052604090205460ff166116b05760405162461bcd60e51b8152602060048201526009602482015268502d414f54432d303160b81b604482015260640161044d565b306001600160a01b031663ab87502684848461012f60009054906101000a90046001600160a01b03166001600160a01b031663f7b90d616040518163ffffffff1660e01b8152600401602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a9190613f9c565b6040518563ffffffff1660e01b8152600401611759949392919061488a565b600060405180830381600087803b15801561177357600080fd5b505af1158015611787573d6000803e3d6000fd5b50505050505050565b600061179b816127df565b61012f546117c190600080516020614c38833981519152906001600160a01b0316611a4a565b156117ec5761012f546117ec90600080516020614c38833981519152906001600160a01b0316612cc6565b61012f80546001600160a01b0319166001600160a01b038416179055611820600080516020614c388339815191528361119d565b6040805168504f5254464f4c494f60b81b815281519081900360090181206060808352601390830152725345542d504f5254464f4c494f42524944474560681b60808301526001600160a01b03851660208301819052928201929092527fd1c8d5845dde378dd9c07dd59db86e1c0b99a8431663f242604a105c285c43f69060a0015b60405180910390a25050565b60006118ba816127df565b6118c2612ceb565b61012f60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193a919061486d565b61140e5761012f60009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156c57600080fd5b600061199a816127df565b604080516101008101825260ff871681526001600160a01b03891660208201526000918101828152602001846119d9576101315463ffffffff166119db565b885b63ffffffff1681526020018a81526020016000801b81526020018a81526020018415158152509050611a0e818686612d28565b610130548903611a275761013a805460ff60a81b191690555b505050505050505050565b60008281526097602052604081206110309083612875565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611a80600033611a4a565b80611a9e5750611a9e600080516020614c3883398151915233611a4a565b611ad65760405162461bcd60e51b8152602060048201526009602482015268502d4f4143432d303160b81b604482015260640161044d565b611ae284848484612f57565b50505050565b611af0612991565b611af8612786565b6001600160a01b038416331480611b0e57503330145b80611b295750336000908152610138602052604090205460ff165b611b615760405162461bcd60e51b8152602060048201526009602482015268502d4f4f44542d303160b81b604482015260640161044d565b611b6d610132846127e9565b611ba55760405162461bcd60e51b8152602060048201526009602482015268502d45544e532d303160b81b604482015260640161044d565b6000838152610134602052604090206004015460ff1615611bf45760405162461bcd60e51b8152602060048201526009602482015268502d56544e532d303160b81b604482015260640161044d565b60008381526101366020526040908190205490516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa158015611c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c70919061463a565b821115611cab5760405162461bcd60e51b8152602060048201526009602482015268502d4e4554442d303160b81b604482015260640161044d565b60008381526101366020526040902054611cd0906001600160a01b0316853085612fa0565b611cdc848484846129d7565b611ae2600160fb55565b6000611cf1816127df565b6001600160a01b038216600090815261013860209081526040808320805460ff19169055610139909152908190209051611d2b91906148be565b6040805191829003822060608084526019908401527f502d52454d4f56452d545255535445442d434f4e54524143540000000000000060808401526001600160a01b0385166020840181905291830191909152907fd1c8d5845dde378dd9c07dd59db86e1c0b99a8431663f242604a105c285c43f69060a0016118a3565b6000611db4816127df565b600a8260ff161015611df45760405162461bcd60e51b8152602060048201526009602482015268502d4d444d4c2d303160b81b604482015260640161044d565b61013a54604080516060808252600d908201526c140b5352539111540b53555315609a1b6080820152600160a01b90920460ff90811660208401528416908201526c2837b93a3337b634b7a6b0b4b760991b90600080516020614c588339815191529060a00160405180910390a25061013a805460ff909216600160a01b0260ff60a01b19909216919091179055565b6000818152609760205260408120610d1e9061286b565b611ea3613f4a565b60008281526101356020908152604080832054835261013482529182902082516101008082018552825460ff80821684529181046001600160a01b0316948301949094529093919291840191600160a81b9004166006811115611f0857611f08613fb9565b6006811115611f1957611f19613fb9565b81528154600160b01b900463ffffffff16602082015260018201546040820152600282015460608201526003820154608082015260049091015460ff16151560a09091015292915050565b600054610100900460ff1615808015611f845750600054600160ff909116105b80611f9e5750303b158015611f9e575060005460ff166001145b6120015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161044d565b6000805460ff191660011790558015612024576000805461ff0019166101001790555b61202e8383612fd8565b61013a805460ff60a01b1916601360a01b17905560408051610100810182526012815260006020820181905291810182905263ffffffff84166060820152610130546080820181905260a0820183905260c082015260e081018290529061209e908290662386f26fc10000612d28565b5080156111c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6120f1613f4a565b6000828152610134602090815260409182902082516101008082018552825460ff80821684529181046001600160a01b0316948301949094529093919291840191600160a81b9004166006811115611f0857611f08613fb9565b6000612156816127df565b6001600160a01b0382166121985760405162461bcd60e51b81526020600482015260096024820152682816a7a0a1a196981960b91b604482015260640161044d565b826121e65760016121a884611e84565b116121e15760405162461bcd60e51b8152602060048201526009602482015268502d414c4f412d303160b81b604482015260640161044d565b61223f565b600080516020614c38833981519152830361223f57600161220684611e84565b1161223f5760405162461bcd60e51b81526020600482015260096024820152682816a0a627a096981960b91b604482015260640161044d565b6122498383612cc6565b6040805168504f5254464f4c494f60b81b815281519081900360090181206060808352600b908301526a52454d4f56452d524f4c4560a81b6080830152602082018690526001600160a01b038516928201929092527fbafee6bdc2193912cf2754d0840b53e34485a4341b4071fb7da8d091ffef67bf9060a0015b60405180910390a2505050565b60006122dc816127df565b61012f54604051631b4a574b60e31b81526001600160a01b039091169063da52ba589061230f9086908690600401614934565b600060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b5050505068506f7274666f6c696f60b81b600080516020614c588339815191528361236957600161236c565b60005b85600181111561237e5761237e613fb9565b604080516060808252600f908201526e502d4252494447452d454e41424c4560881b608082015260ff909316602084015282015260a0016122c4565b60608060006123ca61013261286b565b67ffffffffffffffff8111156123e2576123e2614698565b60405190808252806020026020018201604052801561240b578160200160208202803683370190505b509050600061241b61013261286b565b67ffffffffffffffff81111561243357612433614698565b60405190808252806020026020018201604052801561245c578160200160208202803683370190505b50905060005b61246d61013261286b565b81101561252557600061012e8161248661013285612875565b8152602081019190915260400160002090506124a461013283612875565b8483815181106124b6576124b6614653565b602090810291909101015261013a5460018201548254600a92600160a01b900460ff16916124e391614800565b6124ed9190614813565b6124f7919061482a565b83838151811061250957612509614653565b60209081029190910101525061251e8161467f565b9050612462565b5090939092509050565b600061253a816127df565b60008381526101346020908152604080832081516101008082018452825460ff80821684529181046001600160a01b03169583019590955290939192840191600160a81b900416600681111561259257612592613fb9565b60068111156125a3576125a3613fb9565b81528154600160b01b900463ffffffff1660208201526001820154604082015260028201546060820152600382015460808083019190915260049092015460ff16151560a0909101528101519091501580159061260257508060e00151155b1561270d576101305484146126915760008481526101366020526040908190205490516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268b919061463a565b15612694565b47155b6126cc5760405162461bcd60e51b8152602060048201526009602482015268502d4e5a424c2d303160b81b604482015260640161044d565b6101305484036126ef5761013a805460ff60a81b1916600160a81b17905561270d565b60008481526101366020526040902080546001600160a01b03191690555b61013154611ae290859063ffffffff16613055565b600061272d816127df565b5061013a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216637965db0b60e01b1480610d1e57506301ffc9a760e01b6001600160e01b0319831614610d1e565b600260fb54036127d85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161044d565b600260fb55565b61140e813361313d565b60008181526001830160205260408120541515611030565b6040516001600160a01b0383166024820152604481018290526111c290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613196565b600160fb55565b6000610d1e825490565b60006110308383613268565b61288b8282613292565b60008281526097602052604090206111c29082613318565b83856001600160a01b031682600d8111156128c0576128c0613fb9565b6040805187815260208101879052600081830181905260608201526001600160a01b038a16608082015290517f3c0255c3597c7c98c1985ee4a5cfadabc7b3a09d8260b5a329e07321f4534f5e9181900360a00190a45050505050565b612927828261332d565b60008281526097602052604090206111c29082613394565b6129476133a9565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60c95460ff16156110f45760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161044d565b61012d5460ff16612a165760405162461bcd60e51b8152602060048201526009602482015268502d4e5444502d303160b81b604482015260640161044d565b604051631ba13acd60e01b8152600481018490523090631ba13acd90602401602060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a76919061463a565b8211612ab05760405162461bcd60e51b8152602060048201526009602482015268502d445554482d303160b81b604482015260640161044d565b61013a546040516397f735d560e01b81526001600160a01b038681166004830152909116906397f735d590602401602060405180830381865afa158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f919061486d565b15612b585760405162461bcd60e51b8152602060048201526009602482015268502d42414e412d303160b81b604482015260640161044d565b600083815261012e60205260409020805415612b9b57805460008581526101376020526040902054612b8a9190614800565b600085815261013760205260409020555b612bad858585846000015460016128a3565b61012f546040805163454f553b60e11b815290516001600160a01b0390921691631777b454918391638a9eaa76916004808201926020929091908290030181865afa158015612c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c249190614951565b6040805160e0810190915260008152859060208101600181526020018a6001600160a01b03168152602001898152602001866000015489612c65919061496e565b81524260208201526000604091820152516001600160e01b031960e086901b168152612c98939291908b90600401614981565b600060405180830381600087803b158015612cb257600080fd5b505af1158015611a27573d6000803e3d6000fd5b600082815260656020526040902060010154612ce1816127df565b6111c2838361291d565b612cf3612991565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129743390565b612d338383836133f2565b6080830151612d5a90838363105313d560e21b8314612d53576000612f57565b6001612f57565b61013054836080015114158015612d7357508260e00151155b156111c25760208301516001600160a01b0316612dbf5760405162461bcd60e51b815260206004820152600a602482015269502d5a414444522d303160b01b604482015260640161044d565b6000836020015190508360800151612e3b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612e0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e369190810190614a21565b6135f3565b14612e745760405162461bcd60e51b8152602060048201526009602482015268502d5453444d2d303160b81b604482015260640161044d565b836000015160ff16816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ede9190614ac3565b60ff1614612f1a5760405162461bcd60e51b8152602060048201526009602482015268502d5444444d2d303160b81b604482015260640161044d565b50505060208181015160809092015160009081526101369091526040902080546001600160a01b0319166001600160a01b03909216919091179055565b60008211612f935760405162461bcd60e51b8152602060048201526009602482015268502d4753524f2d303160b81b604482015260640161044d565b611ae28484846000613612565b6040516001600160a01b0380851660248301528316604482015260648101829052611ae29085906323b872dd60e01b9060840161282d565b600054610100900460ff16612fff5760405162461bcd60e51b815260040161044d90614ae0565b6130076136f8565b61300f61371f565b61301761374e565b61302260003361377d565b61012d805460ff1916600117905561013091909155610131805463ffffffff90921663ffffffff19909216919091179055565b61305d6133a9565b6000613068816127df565b61307461013284613787565b5060008381526101346020526040812080546001600160d01b0319168155600181018290556002810182905560038101829055600401805460ff191690556130bc8484613793565b60008181526101356020908152604080832083905587835261012e825280832083815560018101849055600201805460ff1916905580516060808252600d908201526c2816a922a6a7ab22aa27a5a2a760991b60808201529182018390528101919091529091508490600080516020614c588339815191529060a001610f42565b6131478282611a4a565b610e7657613154816137d5565b61315f8360206137e7565b604051602001613170929190614b2b565b60408051601f198184030181529082905262461bcd60e51b825261044d916004016141eb565b60006131eb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166139839092919063ffffffff16565b8051909150156111c25780806020019051810190613209919061486d565b6111c25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161044d565b600082600001828154811061327f5761327f614653565b9060005260206000200154905092915050565b61329c8282611a4a565b610e765760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556132d43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611030836001600160a01b038416613992565b6133378282611a4a565b15610e765760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611030836001600160a01b0384166139e1565b60c95460ff166110f45760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161044d565b608083015161340490610132906127e9565b1561343d5760405162461bcd60e51b8152602060048201526009602482015268502d544145582d303160b81b604482015260640161044d565b825160ff1661347a5760405162461bcd60e51b8152602060048201526009602482015268502d434e41542d303160b81b604482015260640161044d565b60808301516000908152610134602052604090819020908401518154829060ff60a81b1916600160a81b8360068111156134b6576134b6613fb9565b0217905550835181546020860151606087015160ff9093166001600160a81b0319909216919091176101006001600160a01b03909216919091021763ffffffff60b01b1916600160b01b63ffffffff9283168102919091178084556080870151600185018190556000936135309391929190910416613793565b6002830181905560e086015160048401805460ff191691151591909117905560808601516003840181905590915061356b9061013290613ad4565b5060808501805160008381526101356020526040908190209190915590518651918701519091600080516020614c588339815191529160068111156135b2576135b2613fb9565b604080516060808252600a90820152692816a0a2222a27a5a2a760b11b608082015260ff909316602084015282015260a00160405180910390a25050505050565b8051600090829082036136095750600092915050565b50506020015190565b600084815261012e6020908152604091829020600101548251606080825260119082015270502d5345542d425249444745504152414d60781b6080820152918201529081018390528490600080516020614c588339815191529060a00160405180910390a2600084815261012e6020526040902083815563105313d560e21b85146136b3576001810183905560028101805460ff1916831515179055611580565b63105313d560e21b851480156136cb57506001810154155b1561158057670de0b6b3a764000060018083019190915560028201805460ff191690911790555050505050565b600054610100900460ff166110f45760405162461bcd60e51b815260040161044d90614ae0565b600054610100900460ff166137465760405162461bcd60e51b815260040161044d90614ae0565b6110f4613ae0565b600054610100900460ff166137755760405162461bcd60e51b815260040161044d90614ae0565b6110f4613b13565b610e768282612881565b600061103083836139e1565b60006110306137a184613b3a565b6137b08463ffffffff16613c66565b6040516020016137c1929190614ba0565b6040516020818303038152906040526135f3565b6060610d1e6001600160a01b03831660145b606060006137f6836002614813565b613801906002614800565b67ffffffffffffffff81111561381957613819614698565b6040519080825280601f01601f191660200182016040528015613843576020820181803683370190505b509050600360fc1b8160008151811061385e5761385e614653565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061388d5761388d614653565b60200101906001600160f81b031916908160001a90535060006138b1846002614813565b6138bc906001614800565b90505b6001811115613934576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106138f0576138f0614653565b1a60f81b82828151811061390657613906614653565b60200101906001600160f81b031916908160001a90535060049490941c9361392d81614bcf565b90506138bf565b5083156110305760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161044d565b6060610cf18484600085613cf9565b60008181526001830160205260408120546139d957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d1e565b506000610d1e565b60008181526001830160205260408120548015613aca576000613a0560018361496e565b8554909150600090613a199060019061496e565b9050818114613a7e576000866000018281548110613a3957613a39614653565b9060005260206000200154905080876000018481548110613a5c57613a5c614653565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613a8f57613a8f614be6565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d1e565b6000915050610d1e565b60006110308383613992565b600054610100900460ff16613b075760405162461bcd60e51b815260040161044d90614ae0565b60c9805460ff19169055565b600054610100900460ff166128645760405162461bcd60e51b815260040161044d90614ae0565b606060005b60208160ff16108015613b735750828160ff1660208110613b6257613b62614653565b1a60f81b6001600160f81b03191615155b15613b8857613b8181614bfc565b9050613b3f565b60008160ff1667ffffffffffffffff811115613ba657613ba6614698565b6040519080825280601f01601f191660200182016040528015613bd0576020820181803683370190505b509050600091505b60208260ff16108015613c0c5750838260ff1660208110613bfb57613bfb614653565b1a60f81b6001600160f81b03191615155b1561103057838260ff1660208110613c2657613c26614653565b1a60f81b818360ff1681518110613c3f57613c3f614653565b60200101906001600160f81b031916908160001a905350613c5f82614bfc565b9150613bd8565b60606000613c7383613dd4565b600101905060008167ffffffffffffffff811115613c9357613c93614698565b6040519080825280601f01601f191660200182016040528015613cbd576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613cc757509392505050565b606082471015613d5a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161044d565b600080866001600160a01b03168587604051613d769190614c1b565b60006040518083038185875af1925050503d8060008114613db3576040519150601f19603f3d011682016040523d82523d6000602084013e613db8565b606091505b5091509150613dc987838387613eac565b979650505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613e135772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613e3f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613e5d57662386f26fc10000830492506010015b6305f5e1008310613e75576305f5e100830492506008015b6127108310613e8957612710830492506004015b60648310613e9b576064830492506002015b600a8310610d1e5760010192915050565b60608315613f1b578251600003613f14576001600160a01b0385163b613f145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161044d565b5081610cf1565b610cf18383815115613f305781518083602001fd5b8060405162461bcd60e51b815260040161044d91906141eb565b60408051610100810182526000808252602082018190529091820190815260006020820181905260408201819052606082018190526080820181905260a09091015290565b6002811061140e57600080fd5b600060208284031215613fae57600080fd5b815161103081613f8f565b634e487b7160e01b600052602160045260246000fd5b60028110613fdf57613fdf613fb9565b9052565b6001600160a01b0383168152604081016110306020830184613fcf565b63ffffffff8116811461140e57600080fd5b6000806000806080858703121561402857600080fd5b843561403381613f8f565b9350602085013561404381614000565b93969395505050506040820135916060013590565b60006020828403121561406a57600080fd5b81356001600160e01b03198116811461103057600080fd5b6000806020838503121561409557600080fd5b823567ffffffffffffffff808211156140ad57600080fd5b818501915085601f8301126140c157600080fd5b8135818111156140d057600080fd5b8660208260051b85010111156140e557600080fd5b60209290920196919550909350505050565b60006020828403121561410957600080fd5b5035919050565b6001600160a01b038116811461140e57600080fd5b60008060006040848603121561413a57600080fd5b833561414581614110565b9250602084013567ffffffffffffffff8082111561416257600080fd5b818601915086601f83011261417657600080fd5b81358181111561418557600080fd5b87602082850101111561419757600080fd5b6020830194508093505050509250925092565b6000602082840312156141bc57600080fd5b813561103081614110565b60005b838110156141e25781810151838201526020016141ca565b50506000910152565b602081526000825180602084015261420a8160408501602087016141c7565b601f01601f19169190910160400192915050565b600081518084526020808501945080840160005b8381101561424e57815187529582019590820190600101614232565b509495945050505050565b602081526000611030602083018461421e565b6000806040838503121561427f57600080fd5b82359150602083013561429181614110565b809150509250929050565b600060e0828403121561119757600080fd5b801515811461140e57600080fd5b6000602082840312156142ce57600080fd5b8135611030816142ae565b600080604083850312156142ec57600080fd5b82356142f781614110565b9150602083013561429181613f8f565b60008060006060848603121561431c57600080fd5b833561432781614110565b95602085013595506040909401359392505050565b60ff8116811461140e57600080fd5b600080600080600080600060e0888a03121561436657600080fd5b87359650602088013561437881614110565b9550604088013561438881614000565b945060608801356143988161433c565b93506080880135925060a0880135915060c08801356143b6816142ae565b8091505092959891949750929550565b600080604083850312156143d957600080fd5b50508035926020909101359150565b600080600080608085870312156143fe57600080fd5b843593506020850135925060408501359150606085013561441e816142ae565b939692955090935050565b6000806000806080858703121561443f57600080fd5b843561444a81614110565b93506020850135925060408501359150606085013561441e81613f8f565b60078110613fdf57613fdf613fb9565b60ff891681526001600160a01b0388166020820152610100810161449f6040830189614468565b63ffffffff969096166060820152608081019490945260a084019290925260c0830152151560e0909101529392505050565b6000602082840312156144e357600080fd5b81356110308161433c565b815160ff1681526020808301516001600160a01b03169082015260408083015161010083019161452090840182614468565b5063ffffffff60608401511660608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151151560e083015292915050565b6000806040838503121561457457600080fd5b82359150602083013561429181614000565b6000806040838503121561459957600080fd5b82356145a481613f8f565b91506020830135614291816142ae565b6040815260006145c7604083018561421e565b82810360208481019190915284518083528582019282019060005b818110156145fe578451835293830193918301916001016145e2565b5090979650505050505050565b608081016146198287613fcf565b63ffffffff8516602083015283604083015282606083015295945050505050565b60006020828403121561464c57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161469157614691614669565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806146c257607f821691505b60208210810361119757634e487b7160e01b600052602260045260246000fd5b601f8211156111c257600081815260208120601f850160051c810160208610156147095750805b601f850160051c820191505b8181101561472857828155600101614715565b505050505050565b67ffffffffffffffff83111561474857614748614698565b61475c8361475683546146ae565b836146e2565b6000601f84116001811461479057600085156147785750838201355b600019600387901b1c1916600186901b178355611580565b600083815260209020601f19861690835b828110156147c157868501358255602094850194600190920191016147a1565b50868210156147de5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183823760009101908152919050565b80820180821115610d1e57610d1e614669565b8082028115828204841417610d1e57610d1e614669565b60008261484757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561485e57600080fd5b8135600e811061103057600080fd5b60006020828403121561487f57600080fd5b8151611030816142ae565b6001600160a01b03851681526020810184905260408101839052608081016148b56060830184613fcf565b95945050505050565b60008083546148cc816146ae565b600182811680156148e457600181146148f957614928565b60ff1984168752821515830287019450614928565b8760005260208060002060005b8581101561491f5781548a820152908401908201614906565b50505082870194505b50929695505050505050565b604081016149428285613fcf565b82151560208301529392505050565b60006020828403121561496357600080fd5b815161103081614000565b81810381811115610d1e57610d1e614669565b63ffffffff85168152610140810161499c6020830186613fcf565b67ffffffffffffffff84511660408301526020840151600e81106149c2576149c2613fb9565b8060608401525060018060a01b036040850151166080830152606084015160a0830152608084015160c083015260a084015160e083015263ffffffff1960c0850151166101008301526148b56101208301846001600160a01b03169052565b600060208284031215614a3357600080fd5b815167ffffffffffffffff80821115614a4b57600080fd5b818401915084601f830112614a5f57600080fd5b815181811115614a7157614a71614698565b604051601f8201601f19908116603f01168101908382118183101715614a9957614a99614698565b81604052828152876020848701011115614ab257600080fd5b613dc98360208301602088016141c7565b600060208284031215614ad557600080fd5b81516110308161433c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614b638160178501602088016141c7565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614b948160288401602088016141c7565b01602801949350505050565b60008351614bb28184602088016141c7565b835190830190614bc68183602088016141c7565b01949350505050565b600081614bde57614bde614669565b506000190190565b634e487b7160e01b600052603160045260246000fd5b600060ff821660ff8103614c1257614c12614669565b60010192915050565b60008251614c2d8184602087016141c7565b919091019291505056fe58aa05b56cf9e0a999dff04c62c0ebffe411e3a2a6258f0f135597bd1ba69077d7954b5cb5051e6b217917cfdaa6866799f3e396a36fcb401b65f59f74caed27a264697066735822122063b5c06dec70673551a36919a7ea1343137225b680526825377629bc1a367a6164736f6c63430008110033