0 txs
4 calls
constructor
No constructor.
functions
bridge
viewfunction bridge() view returns (address)
fabric
viewfunction fabric() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
metaRouter
viewfunction metaRouter() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
realToBurnSerialBTC
viewfunction realToBurnSerialBTC(address) view returns (uint64)
realToMintSerialBTC
viewfunction realToMintSerialBTC(address) view returns (uint64)
requestCount
viewfunction requestCount() view returns (uint256)
requests
viewfunction requests(bytes32) view returns (address recipient, address chain2address, uint256 amount, address token, address stoken, uint8 state)
synthesizeStates
viewfunction synthesizeStates(bytes32) view returns (uint8)
syntToMinFeeBTC
viewfunction syntToMinFeeBTC(address) view returns (uint256)
tokenThreshold
viewfunction tokenThreshold(address) view returns (uint256)
versionRecipient
purefunction versionRecipient() pure returns (string)
burnSyntheticToken
nonpayablefunction burnSyntheticToken(uint256 _stableBridgingFee, address _stoken, uint256 _amount, address _chain2address, address _receiveSide, address _oppositeBridge, address _revertableAddress, uint256 _chainID, bytes32 _clientID) returns (bytes32 internalID)
burnSyntheticTokenBTC
nonpayablefunction burnSyntheticTokenBTC(uint256 _stableBridgingFee, uint256 _amount, bytes _to, address _stoken, bytes32 _clientID) returns (uint64)
initialize
nonpayablefunction initialize(address _bridge, address _trustedForwarder, address _metaRouter)
metaBurnSyntheticToken
nonpayablefunction metaBurnSyntheticToken(tuple _metaBurnTransaction) returns (bytes32 internalID)
metaMintSyntheticToken
nonpayablefunction metaMintSyntheticToken(tuple _metaMintTransaction)
metaMintSyntheticTokenBTC
nonpayablefunction metaMintSyntheticTokenBTC(tuple _metaMintTransaction)
mintSyntheticToken
nonpayablefunction mintSyntheticToken(uint256 _stableBridgingFee, bytes32 _externalID, bytes32 _crossChainID, address _tokenReal, uint256 _chainID, uint256 _amount, address _to)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
revertBurn
nonpayablefunction revertBurn(uint256 _stableBridgingFee, bytes32 _externalID)
revertBurnAndBurn
nonpayablefunction revertBurnAndBurn(uint256 _stableBridgingFee, bytes32 _externalID, address _receiveSide, address _oppositeBridge, uint256 _chainID, address _revertableAddress)
revertMetaBurn
nonpayablefunction revertMetaBurn(uint256 _stableBridgingFee, bytes32 _externalID, address _router, bytes _swapCalldata, address _synthesis, address _burnToken, bytes _burnCalldata)
revertSynthesizeRequest
nonpayablefunction revertSynthesizeRequest(uint256 _stableBridgingFee, bytes32 _internalID, address _receiveSide, address _oppositeBridge, uint256 _chainID, bytes32 _clientID)
revertSynthesizeRequestByBridge
nonpayablefunction revertSynthesizeRequestByBridge(uint256 _stableBridgingFee, bytes32 _internalID, address _receiveSide, address _oppositeBridge, uint256 _chainID, address _sender, bytes32 _clientID)
setFabric
nonpayablefunction setFabric(address _fabric)
setMetaRouter
nonpayablefunction setMetaRouter(address _metaRouter)
setMinFeeBTC
nonpayablefunction setMinFeeBTC(address _synt, uint256 _minFee)
setTokenThreshold
nonpayablefunction setTokenThreshold(address _token, uint256 _threshold)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
BTCSynthesizeCompleted
event BTCSynthesizeCompleted(bytes32 indexed id, address indexed to, uint256 amount, uint64 serial, uint256 bridgingFee, address indexed token)
BurnRequest
event BurnRequest(bytes32 id, address indexed from, uint256 indexed chainID, address indexed revertableAddress, address to, uint256 amount, address token)
BurnRequestBTC
event BurnRequestBTC(uint64 burnSerial, address indexed from, bytes to, uint256 amount, uint256 stableBridgingFee, address indexed rtoken)
ClientIdLog
event ClientIdLog(bytes32 requestId, bytes32 indexed clientId)
ClientIdLogBTC
event ClientIdLogBTC(uint64 burnSerial, bytes32 indexed clientId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RevertBurnCompleted
event RevertBurnCompleted(bytes32 indexed id, address indexed to, uint256 amount, uint256 bridgingFee, address token)
RevertSynthesizeRequest
event RevertSynthesizeRequest(bytes32 indexed id, address indexed to)
SetFabric
event SetFabric(address fabric)
SetMetaRouter
event SetMetaRouter(address metaRouter)
SetMinFeeBTC
event SetMinFeeBTC(uint256 minFee)
SetTokenThreshold
event SetTokenThreshold(address token, uint256 threshold)
SynthesizeCompleted
event SynthesizeCompleted(bytes32 indexed id, address indexed to, bytes32 indexed crossChainID, uint256 amount, uint256 bridgingFee, address token)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506155e1806100206000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80639d8669851161012a578063cfd7bc09116100bd578063e66bb5501161008c578063eadd5c3411610071578063eadd5c341461059b578063f2fde38b146105ae578063f70519ae146105c157600080fd5b8063e66bb55014610570578063e78cea921461058357600080fd5b8063cfd7bc0914610507578063d23fd7961461051a578063dbec15bb1461054a578063dd8c90391461055d57600080fd5b8063c29a91bc116100f9578063c29a91bc146104ae578063c4a588f8146104c1578063c7fa2d30146104d4578063cbef5f2c146104f457600080fd5b80639d8669851461040b578063a0d9557014610475578063a83e754b14610488578063c0c53b8b1461049b57600080fd5b80635c975abb116101bd5780637819d8af1161018c5780638bb39802116101715780638bb39802146103bd5780638da5cb5b146103d0578063957edb50146103e157600080fd5b80637819d8af146103a25780638456cb59146103b557600080fd5b80635c975abb146103425780635d176f2f1461034f578063687752781461037a578063715018a61461039a57600080fd5b8063572b6c05116101f9578063572b6c05146102a357806359473c26146102d557806359514893146103185780635badbe4c1461032b57600080fd5b80630f5b2f681461022b5780633f4ba83a146102405780633f60edf414610248578063486ff0cd1461025b575b600080fd5b61023e6102393660046145dc565b6105d4565b005b61023e6108d9565b61023e61025636600461464e565b6109a2565b604080518082018252600581527f322e302e310000000000000000000000000000000000000000000000000000006020820152905161029a91906146ca565b60405180910390f35b6102c56102b13660046146e4565b6065546001600160a01b0391821691161490565b604051901515815260200161029a565b6102ff6102e33660046146e4565b60706020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029a565b61023e610326366004614701565b610a74565b61033460665481565b60405190815260200161029a565b6067546102c59060ff1681565b606854610362906001600160a01b031681565b6040516001600160a01b03909116815260200161029a565b6103346103883660046146e4565b606b6020526000908152604090205481565b61023e6110ca565b61023e6103b03660046147b1565b61114f565b61023e611550565b61023e6103cb36600461464e565b6115ff565b6033546001600160a01b0316610362565b6102ff6103ef3660046146e4565b606f6020526000908152604090205467ffffffffffffffff1681565b610463610419366004614872565b606a60205260009081526040902080546001820154600283015460038401546004909401546001600160a01b0393841694928416939192821691811690600160a01b900460ff1686565b60405161029a969594939291906148bf565b6102ff610483366004614908565b6116c9565b61023e61049636600461497b565b611ba8565b61023e6104a93660046149e4565b611f75565b61023e6104bc366004614be1565b6120e6565b61023e6104cf366004614d22565b6125be565b6103346104e23660046146e4565b60716020526000908152604090205481565b610334610502366004614d7e565b61286b565b61023e610515366004614e2e565b612ded565b61053d610528366004614872565b60696020526000908152604090205460ff1681565b60405161029a9190614f24565b606c54610362906001600160a01b031681565b61023e61056b3660046146e4565b6134cd565b61033461057e366004614f37565b613601565b6067546103629061010090046001600160a01b031681565b61023e6105a93660046146e4565b613c47565b61023e6105bc3660046146e4565b613d97565b61023e6105cf36600461506a565b613e95565b60675460ff161561061b5760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b60448201526064015b60405180910390fd5b60675461010090046001600160a01b0316331461067a5760405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152606401610612565b60408051602081018890526bffffffffffffffffffffffff1930606090811b8216938301939093529184901b909116605482015246606882015260009060880160408051601f1981840301815291905280516020909101209050600160008281526069602052604090205460ff1660028111156106f9576106f961488b565b0361076c5760405162461bcd60e51b815260206004820152602560248201527f53796d623a2073796e74686574696320746f6b656e7320616c7265616479206d60448201527f696e7465640000000000000000000000000000000000000000000000000000006064820152608401610612565b6000818152606960209081526040808320805460ff191660021790558051606081019091526021808252909161558b908301398051602090910120604051602481018b90526044810184905260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092526067549151633675e4e160e11b81529092506001600160a01b036101009092049190911690636cebc9c29061082c9084908b908b908b9060040161508c565b600060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b5050505050817f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f58860405161089191815260200190565b60405180910390a26040516001600160a01b0384169088907f9bc8099e19706f253ae634ef1a5fb6ef84b4748c2183472905b9b2511cfa861790600090a35050505050505050565b6108e16141a3565b6001600160a01b03166108fc6033546001600160a01b031690565b6001600160a01b0316146109525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b6067805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109856141a3565b6040516001600160a01b03909116815260200160405180910390a1565b6109aa6141a3565b6001600160a01b03166109c56033546001600160a01b031690565b6001600160a01b031614610a1b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b6001600160a01b03821660009081526071602052604090819020829055517f7ebf0a93cdc35d5dc914fb449261344b6a8925da9ee6329d771e00fa1afc8ef690610a689083815260200190565b60405180910390a15050565b60675461010090046001600160a01b03163314610ad35760405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152606401610612565b60675460ff1615610b155760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b6000858152606a6020526040902060016004820154600160a01b900460ff166002811115610b4557610b4561488b565b14610bb85760405162461bcd60e51b815260206004820152602960248201527f53796d623a207374617465206e6f74206f70656e206f7220747820646f65732060448201527f6e6f7420657869737400000000000000000000000000000000000000000000006064820152608401610612565b60048181018054740200000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8216179091556068546067546040516339240a7f60e21b81526001600160a01b03610100909204821694810194909452602484018b90529182166044840152169063e49029fc90606401600060405180830381600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050506000878260020154610c8491906150d8565b8254600484015460408051848152602081018d90526001600160a01b0392831681830152905193945091169189917fb6f5f7b98cc78a8031c967af163a8c197f470a35df1e326a9038859679e6a184919081900360600190a36001600160a01b038316610cfc5760018201546001600160a01b031692505b60685460048381015460405163161acb4760e01b81526001600160a01b0391821692810192909252600092169063161acb4790602401602060405180830381865afa158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7391906150eb565b6066546040516bffffffffffffffffffffffff193060601b166020820152603481019190915246605482015290915060009060740160408051601f1981840301815282825280516020918201209083018190526bffffffffffffffffffffffff1960608c811b8216938501939093529188901b909116605483015260688201889052915060009060880160405160208183030381529060405280519060200120905060006040518060600160405280603581526020016154ff6035913980516020909101206001870154604051602481018f9052604481018590526001600160a01b0380881660648301526084820189905290911660a482015260c40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252815160c08101909252915080610eb66141a3565b6001600160a01b0390811682526001808a01548216602084015260408301899052878216606084015260048a0154909116608083015260a0909101526000838152606a60209081526040918290208351815473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b039283161783559285015160018301805485169183169190911790559284015160028083019190915560608501516003830180548516918616919091179055608085015160048301805494851691909516908117855560a0860151929492937fffffffffffffffffffffff000000000000000000000000000000000000000000161790600160a01b908490811115610fc257610fc261488b565b0217905550506066805491506000610fd983615108565b9091555050606754604051633675e4e160e11b81526101009091046001600160a01b031690636cebc9c2906110189084908e908e908e9060040161508c565b600060405180830381600087803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b50505050866001600160a01b03168861105d6141a3565b600189015460048a0154604080518981526001600160a01b0393841660208201529081018b905290821660608201529116907f5f00e8f0d61ff1190912879949026c85a81f3f96038c7f4cd868bdfe882e0eeb9060800160405180910390a4505050505050505050505050565b6110d26141a3565b6001600160a01b03166110ed6033546001600160a01b031690565b6001600160a01b0316146111435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b61114d60006141e8565b565b60675461010090046001600160a01b031633146111ae5760405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152606401610612565b60675460ff16156111f05760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b6000888152606a6020526040902060016004820154600160a01b900460ff1660028111156112205761122061488b565b146112935760405162461bcd60e51b815260206004820152602960248201527f53796d623a207374617465206e6f74206f70656e206f7220747820646f65732060448201527f6e6f7420657869737400000000000000000000000000000000000000000000006064820152608401610612565b6004810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055606854815460028301546001600160a01b039283169263e49029fc9216906112fd908e906150d8565b60048581015460405160e086901b6001600160e01b03191681526001600160a01b0394851692810192909252602482019290925291166044820152606401600060405180830381600087803b15801561135557600080fd5b505af1158015611369573d6000803e3d6000fd5b50505050606860009054906101000a90046001600160a01b03166001600160a01b031663e49029fc606760019054906101000a90046001600160a01b03168c8460040160009054906101000a90046001600160a01b03166040518463ffffffff1660e01b81526004016113fc939291906001600160a01b0393841681526020810192909252909116604082015260600190565b600060405180830381600087803b15801561141657600080fd5b505af115801561142a573d6000803e3d6000fd5b5050606c54600484015460028501546001600160a01b03928316945063732cffe9935091169061145b908e906150d8565b8b8b8b8a8c8b8b6040518a63ffffffff1660e01b81526004016114869998979695949392919061516b565b600060405180830381600087803b1580156114a057600080fd5b505af11580156114b4573d6000803e3d6000fd5b5050825460028401546001600160a01b0390911692508b91507fb6f5f7b98cc78a8031c967af163a8c197f470a35df1e326a9038859679e6a184906114fa908e906150d8565b8d8560040160009054906101000a90046001600160a01b031660405161153c9392919092835260208301919091526001600160a01b0316604082015260600190565b60405180910390a350505050505050505050565b6115586141a3565b6001600160a01b03166115736033546001600160a01b031690565b6001600160a01b0316146115c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b6067805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109856141a3565b6116076141a3565b6001600160a01b03166116226033546001600160a01b031690565b6001600160a01b0316146116785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b6001600160a01b0382166000818152606b6020908152604091829020849055815192835282018390527fa6742efd4f410d6fd9688a6cf6a15b6d51121097a263056a3576baaacdc4a9ae9101610a68565b60675460009060ff161561170e5760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b6001600160a01b0383166000908152606b60205260409020548610156117765760405162461bcd60e51b815260206004820152601c60248201527f53796d623a20616d6f756e7420756e646572207468726573686f6c64000000006044820152606401610612565b6001600160a01b0383166000908152607160205260409020548710156117de5760405162461bcd60e51b815260206004820152601660248201527f53796d623a20696e73756666696369656e7420666565000000000000000000006044820152606401610612565b6068546001600160a01b031663a8160b766117f76141a3565b6040516001600160e01b031960e084901b1681526001600160a01b039182166004820152602481018a90529086166044820152606401600060405180830381600087803b15801561184757600080fd5b505af115801561185b573d6000803e3d6000fd5b50506068546067546040516339240a7f60e21b81526001600160a01b0361010090920482166004820152602481018c905287821660448201529116925063e49029fc9150606401600060405180830381600087803b1580156118bc57600080fd5b505af11580156118d0573d6000803e3d6000fd5b505060685460405163161acb4760e01b81526001600160a01b03878116600483015260009450909116915063161acb4790602401602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194591906150eb565b90506001600160a01b03811661199d5760405162461bcd60e51b815260206004820152601460248201527f53796d623a20696e636f72726563742073796e740000000000000000000000006044820152606401610612565b6001600160a01b0381166000908152607060205260409020546119c99067ffffffffffffffff16614247565b6001600160a01b038281166000908152607060205260409020805467ffffffffffffffff191667ffffffffffffffff93909316929092179091556067546101009004166365f341ce611a196141a3565b8888611a258d8d6150d8565b6001600160a01b038716600090815260706020526040908190205490516001600160e01b031960e088901b168152611a6e959493929167ffffffffffffffff16906004016151d1565b600060405180830381600087803b158015611a8857600080fd5b505af1158015611a9c573d6000803e3d6000fd5b50505050806001600160a01b0316611ab26141a3565b6001600160a01b038381166000908152607060205260409020549116907f76a6d97ee644ff153aa6e22a0c090a07012e616c1c0259ce9850593b9aed53169067ffffffffffffffff168989611b078e8e6150d8565b8e604051611b19959493929190615216565b60405180910390a36001600160a01b03811660009081526070602090815260409182902054915167ffffffffffffffff909216825284917fa88fe925ee2e876e9cb92868d22eb4aebc517dbac42a034f4413c22715bdf1d6910160405180910390a26001600160a01b031660009081526070602052604090205467ffffffffffffffff16979650505050505050565b60675461010090046001600160a01b03163314611c075760405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152606401610612565b60675460ff1615611c495760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b60008681526069602052604081205460ff166002811115611c6c57611c6c61488b565b14611d055760405162461bcd60e51b815260206004820152604d60248201527f53796d623a2072657665727453796e74686573697a656452657175657374206360448201527f616c6c6564206f7220746f6b656e732068617665206265656e20616c7265616460648201527f792073796e74686573697a656400000000000000000000000000000000000000608482015260a401610612565b600086815260696020526040808220805460ff191660011790556068549051630283448560e51b81526001600160a01b038781166004830152602482018790529091169063506890a090604401602060405180830381865afa158015611d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9391906150eb565b90506001600160a01b038116611e115760405162461bcd60e51b815260206004820152603460248201527f53796d623a205468657265206973206e6f2073796e7420726570726573656e7460448201527f6174696f6e20666f72207468697320746f6b656e0000000000000000000000006064820152608401610612565b6068546001600160a01b031663e49029fc83611e2d8b876150d8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101919091529084166044820152606401600060405180830381600087803b158015611e7e57600080fd5b505af1158015611e92573d6000803e3d6000fd5b50506068546067546040516339240a7f60e21b81526001600160a01b0361010090920482166004820152602481018d905285821660448201529116925063e49029fc9150606401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b5050505085826001600160a01b0316887f1f3f0f3c7b2df480755c6486a132f215e7b2b89fcca0beecd95a9696c71789b68b87611f4491906150d8565b60408051918252602082018e90526001600160a01b038b169082015260600160405180910390a45050505050505050565b600054610100900460ff16611f905760005460ff1615611f94565b303b155b6120065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610612565b600054610100900460ff1615801561204557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b61204e8361425a565b606780547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b038781169190910291909117909155606c805473ffffffffffffffffffffffffffffffffffffffff191691841691909117905580156120e057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050565b60675461010090046001600160a01b031633146121455760405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152606401610612565b60675460ff16156121875760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b606081015160009081526069602052604081205460ff1660028111156121af576121af61488b565b146122485760405162461bcd60e51b815260206004820152604d60248201527f53796d623a2072657665727453796e74686573697a656452657175657374206360448201527f616c6c6564206f7220746f6b656e732068617665206265656e20616c7265616460648201527f792073796e74686573697a656400000000000000000000000000000000000000608482015260a401610612565b6060810151600090815260696020526040808220805460ff19166001179055606854608084015160a08501519251630283448560e51b81526001600160a01b0391821660048201526024810193909352169063506890a090604401602060405180830381865afa1580156122c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e491906150eb565b90506001600160a01b0381166123625760405162461bcd60e51b815260206004820152603460248201527f53796d623a205468657265206973206e6f2073796e7420726570726573656e7460448201527f6174696f6e20666f72207468697320746f6b656e0000000000000000000000006064820152608401610612565b606854825160208401516001600160a01b039092169163e49029fc91309161238a91906150d8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101919091529084166044820152606401600060405180830381600087803b1580156123db57600080fd5b505af11580156123ef573d6000803e3d6000fd5b505060685460675485516040516339240a7f60e21b81526001600160a01b0361010090930483166004820152602481019190915285821660448201529116925063e49029fc9150606401600060405180830381600087803b15801561245357600080fd5b505af1158015612467573d6000803e3d6000fd5b50508351602085015161247d93509091506150d8565b602083015260e0820151516000036124a6576124a2818360c0015184602001516142fc565b5050565b606c5460208301516124c59183916001600160a01b03909116906142fc565b606c546040517f3bc788350000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633bc788359061250e908590600401615292565b600060405180830381600087803b15801561252857600080fd5b505af115801561253c573d6000803e3d6000fd5b5050505081604001518260c001516001600160a01b031683606001517f1f3f0f3c7b2df480755c6486a132f215e7b2b89fcca0beecd95a9696c71789b68560200151866000015187608001516040516125b19392919092835260208301919091526001600160a01b0316604082015260600190565b60405180910390a4505b50565b60675460ff16156126005760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b6000853061260c6141a3565b6040805160208101949094526bffffffffffffffffffffffff19606093841b811691850191909152911b16605482015246606882015260880160408051601f1981840301815291905280516020909101209050600160008281526069602052604090205460ff1660028111156126845761268461488b565b036126f75760405162461bcd60e51b815260206004820152602560248201527f53796d623a2073796e74686574696320746f6b656e7320616c7265616479206d60448201527f696e7465640000000000000000000000000000000000000000000000000000006064820152608401610612565b6000818152606960209081526040808320805460ff191660021790558051606081019091526021808252909161558b908301398051602090910120604051602481018a90526044810184905260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092526067549151633675e4e160e11b81529092506001600160a01b036101009092049190911690636cebc9c2906127b79084908a908a908a9060040161508c565b600060405180830381600087803b1580156127d157600080fd5b505af11580156127e5573d6000803e3d6000fd5b50505050506127f26141a3565b6001600160a01b0316867f9bc8099e19706f253ae634ef1a5fb6ef84b4748c2183472905b9b2511cfa861760405160405180910390a3817f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f58760405161285a91815260200190565b60405180910390a250505050505050565b60675460009060ff16156128b05760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b6001600160a01b0389166000908152606b60205260409020548810156129185760405162461bcd60e51b815260206004820152601c60248201527f53796d623a20616d6f756e7420756e646572207468726573686f6c64000000006044820152606401610612565b6068546001600160a01b031663a8160b766129316141a3565b6040516001600160e01b031960e084901b1681526001600160a01b039182166004820152602481018c9052908c166044820152606401600060405180830381600087803b15801561298157600080fd5b505af1158015612995573d6000803e3d6000fd5b5050506001600160a01b03851690506129ac578693505b60685460405163161acb4760e01b81526001600160a01b038b81166004830152600092169063161acb4790602401602060405180830381865afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b91906150eb565b90506001600160a01b038116612a735760405162461bcd60e51b815260206004820152601460248201527f53796d623a20696e636f72726563742073796e740000000000000000000000006044820152606401610612565b6066546040516bffffffffffffffffffffffff193060601b166020820152603481019190915246605482015260740160408051601f1981840301815282825280516020918201209083018190526bffffffffffffffffffffffff1960608b811b8216938501939093529188901b909116605483015260688201869052925060009060880160405160208183030381529060405280519060200120905060006040518060600160405280603d81526020016154c2603d91398051602090910120604051602481018f905260448101849052606481018690526001600160a01b03808616608483015260a482018e90528c1660c482015260e40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252815160c08101909252915080612bb16141a3565b6001600160a01b0390811682528c81166020830152604082018e905285811660608301528e16608082015260a001600190526000838152606a60209081526040918290208351815473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b039283161783559285015160018301805485169183169190911790559284015160028083019190915560608501516003830180548516918616919091179055608085015160048301805494851691909516908117855560a0860151929492937fffffffffffffffffffffff000000000000000000000000000000000000000000161790600160a01b908490811115612cb357612cb361488b565b0217905550506066805491506000612cca83615108565b9091555050606754604051633675e4e160e11b81526101009091046001600160a01b031690636cebc9c290612d099084908d908d908c9060040161508c565b600060405180830381600087803b158015612d2357600080fd5b505af1158015612d37573d6000803e3d6000fd5b50505050505050836001600160a01b031683612d516141a3565b604080518581526001600160a01b038c811660208301529181018d90528d821660608201529116907f5f00e8f0d61ff1190912879949026c85a81f3f96038c7f4cd868bdfe882e0eeb9060800160405180910390a4817f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f582604051612dd891815260200190565b60405180910390a29998505050505050505050565b60675461010090046001600160a01b03163314612e4c5760405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152606401610612565b60675460ff1615612e8e5760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b608081015160009081526069602052604081205460ff166002811115612eb657612eb661488b565b14612f4f5760405162461bcd60e51b815260206004820152604d60248201527f53796d623a2072657665727453796e74686573697a656452657175657374206360448201527f616c6c6564206f7220746f6b656e732068617665206265656e20616c7265616460648201527f792073796e74686573697a656400000000000000000000000000000000000000608482015260a401610612565b6080810151600090815260696020526040808220805460ff1916600117905560685460a084015160c08501519251630283448560e51b81526001600160a01b0391821660048201526024810193909352169063506890a090604401602060405180830381865afa158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb91906150eb565b90506001600160a01b0381166130695760405162461bcd60e51b815260206004820152603460248201527f53796d623a205468657265206973206e6f2073796e7420726570726573656e7460448201527f6174696f6e20666f72207468697320746f6b656e0000000000000000000000006064820152608401610612565b60a08201516001600160a01b03166000908152606f602052604090819020549083015167ffffffffffffffff9081169116146130e75760405162461bcd60e51b815260206004820152601f60248201527f53796d623a206e6f6e73657175656e7469616c206d696e742073657269616c006044820152606401610612565b60a08201516001600160a01b03166000908152606f60205260409020546131179067ffffffffffffffff16614247565b60a08301516001600160a01b039081166000908152606f60209081526040909120805467ffffffffffffffff191667ffffffffffffffff949094169390931790925560685484519285015191169163e49029fc913091613176916150d8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101919091529084166044820152606401600060405180830381600087803b1580156131c757600080fd5b505af11580156131db573d6000803e3d6000fd5b505060685460675485516040516339240a7f60e21b81526001600160a01b0361010090930483166004820152602481019190915285821660448201529116925063e49029fc9150606401600060405180830381600087803b15801561323f57600080fd5b505af1158015613253573d6000803e3d6000fd5b505050508160a001516001600160a01b03168260e001516001600160a01b031683608001517fb6aa44f5b2e6d2030650d5514f6aa3c822cd88ce23e51fe20f6570837f02042b8560200151866040015187600001516040516132d29392919092835267ffffffffffffffff919091166020830152604082015260600190565b60405180910390a4815160208301516132eb91906150d8565b602083015261012082015151600003613311576124a2818360e0015184602001516142fc565b606c5460208301516133309183916001600160a01b03909116906142fc565b606c54602083015161010084015161012085015161014086015160e08701516040517ff5b697a50000000000000000000000000000000000000000000000000000000081526001600160a01b039096169563f5b697a59561339e9589959194909391929091906004016153aa565b600060405180830381600087803b1580156133b857600080fd5b505af19250505080156133c9575060015b61345f57606c5460e083015160208401516040517f62770ff80000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152928316602482015260448101919091529116906362770ff890606401600060405180830381600087803b15801561344657600080fd5b505af115801561345a573d6000803e3d6000fd5b505050505b81606001518260e001516001600160a01b031683608001517f1f3f0f3c7b2df480755c6486a132f215e7b2b89fcca0beecd95a9696c71789b68560200151866000015160006040516125b19392919092835260208301919091526001600160a01b0316604082015260600190565b6134d56141a3565b6001600160a01b03166134f06033546001600160a01b031690565b6001600160a01b0316146135465760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b6068546001600160a01b03161561359f5760405162461bcd60e51b815260206004820152601860248201527f53796d623a2046616272696320616c72656164792073657400000000000000006044820152606401610612565b6068805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fe7258eee4870ba270f25f5a42dd11bfe5a77658959c916807b94b8e9063c3cd0906020015b60405180910390a150565b60675460009060ff16156136465760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b60a08201516001600160a01b03166000908152606b60209081526040909120549083015110156136b85760405162461bcd60e51b815260206004820152601c60248201527f53796d623a20616d6f756e7420756e646572207468726573686f6c64000000006044820152606401610612565b6068546001600160a01b031663a8160b766136d16141a3565b602085015160a08601516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201526024810192909252919091166044820152606401600060405180830381600087803b15801561372d57600080fd5b505af1158015613741573d6000803e3d6000fd5b505050506101608201516001600160a01b031661376e576101008201516001600160a01b03166101608301525b60685460a083015160405163161acb4760e01b81526001600160a01b039182166004820152600092919091169063161acb4790602401602060405180830381865afa1580156137c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e591906150eb565b90506001600160a01b03811661383d5760405162461bcd60e51b815260206004820152601460248201527f53796d623a20696e636f72726563742073796e740000000000000000000000006044820152606401610612565b6066546040516bffffffffffffffffffffffff193060601b1660208201526034810191909152466054820152607401604051602081830303815290604052805190602001209150826040015160000361389857604083018290525b6000828461012001518561016001518661018001516040516020016138ee9493929190938452606092831b6bffffffffffffffffffffffff1990811660208601529190921b166034830152604882015260680190565b6040516020818303038152906040528051906020012090506000604051806080016040528060578152602001615534605791398051906020012085600001518660400151848861010001518960200151888b608001518c60c001518d60e00151604051602401613966999897969594939291906153f6565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506040518060c0016040528086606001516001600160a01b031681526020018661010001516001600160a01b0316815260200186602001518152602001846001600160a01b031681526020018660a001516001600160a01b0316815260200160016002811115613a0c57613a0c61488b565b90526000838152606a60209081526040918290208351815473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b039283161783559285015160018301805485169183169190911790559284015160028083019190915560608501516003830180548516918616919091179055608085015160048301805494851691909516908117855560a0860151929492937fffffffffffffffffffffff000000000000000000000000000000000000000000161790600160a01b908490811115613ade57613ade61488b565b0217905550506066805491506000613af583615108565b9091555050606754610120860151610140870151610180880151604051633675e4e160e11b81526101009094046001600160a01b031693636cebc9c293613b45938793919290919060040161508c565b600060405180830381600087803b158015613b5f57600080fd5b505af1158015613b73573d6000803e3d6000fd5b505050505050508161016001516001600160a01b031682610180015183606001516001600160a01b03167f5f00e8f0d61ff1190912879949026c85a81f3f96038c7f4cd868bdfe882e0eeb8486610100015187602001518860a00151604051613c0194939291909384526001600160a01b039283166020850152604084019190915216606082015260800190565b60405180910390a46101a08201516040518281527f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f59060200160405180910390a2919050565b613c4f6141a3565b6001600160a01b0316613c6a6033546001600160a01b031690565b6001600160a01b031614613cc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b6001600160a01b038116613d3c5760405162461bcd60e51b815260206004820152602760248201527f53796d623a206d657461526f757465722063616e6e6f74206265207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610612565b606c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fd5c54ab1d37bfef4dd2253d9d73c292e46f5bd8a67ca5920aab4c2e1993178e7906020016135f6565b613d9f6141a3565b6001600160a01b0316613dba6033546001600160a01b031690565b6001600160a01b031614613e105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610612565b6001600160a01b038116613e8c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610612565b6125bb816141e8565b60675461010090046001600160a01b03163314613ef45760405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152606401610612565b60675460ff1615613f365760405162461bcd60e51b815260206004820152600c60248201526b14de5b588e881c185d5cd95960a21b6044820152606401610612565b6000818152606a6020526040902060016004820154600160a01b900460ff166002811115613f6657613f6661488b565b14613fd95760405162461bcd60e51b815260206004820152602960248201527f53796d623a207374617465206e6f74206f70656e206f7220747820646f65732060448201527f6e6f7420657869737400000000000000000000000000000000000000000000006064820152608401610612565b6004810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055606854815460028301546001600160a01b039283169263e49029fc9216906140439087906150d8565b60048581015460405160e086901b6001600160e01b03191681526001600160a01b0394851692810192909252602482019290925291166044820152606401600060405180830381600087803b15801561409b57600080fd5b505af11580156140af573d6000803e3d6000fd5b50506068546067546004858101546040516339240a7f60e21b81526001600160a01b0361010090940484169281019290925260248201899052821660448201529116925063e49029fc9150606401600060405180830381600087803b15801561411757600080fd5b505af115801561412b573d6000803e3d6000fd5b5050825460028401546001600160a01b0390911692508491507fb6f5f7b98cc78a8031c967af163a8c197f470a35df1e326a9038859679e6a184906141719087906150d8565b600485015460408051928352602083018990526001600160a01b039091169082015260600160405180910390a3505050565b6065546000906001600160a01b031633036141e357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b503390565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061425482600161545b565b92915050565b600054610100900460ff166142c55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610612565b6142cd614456565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916143719190615483565b6000604051808303816000865af19150503d80600081146143ae576040519150601f19603f3d011682016040523d82523d6000602084013e6143b3565b606091505b50915091508180156143dd5750805115806143dd5750808060200190518101906143dd919061549f565b61444f5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610612565b5050505050565b600054610100900460ff166144c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610612565b6144c96144d1565b61114d61453c565b600054610100900460ff1661114d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610612565b600054610100900460ff166145a75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610612565b61114d6145b26141a3565b6141e8565b6001600160a01b03811681146125bb57600080fd5b80356145d7816145b7565b919050565b600080600080600080600060e0888a0312156145f757600080fd5b87359650602088013595506040880135614610816145b7565b94506060880135614620816145b7565b93506080880135925060a0880135614637816145b7565b8092505060c0880135905092959891949750929550565b6000806040838503121561466157600080fd5b823561466c816145b7565b946020939093013593505050565b60005b8381101561469557818101518382015260200161467d565b50506000910152565b600081518084526146b681602086016020860161467a565b601f01601f19169290920160200192915050565b6020815260006146dd602083018461469e565b9392505050565b6000602082840312156146f657600080fd5b81356146dd816145b7565b60008060008060008060c0878903121561471a57600080fd5b86359550602087013594506040870135614733816145b7565b93506060870135614743816145b7565b92506080870135915060a087013561475a816145b7565b809150509295509295509295565b60008083601f84011261477a57600080fd5b50813567ffffffffffffffff81111561479257600080fd5b6020830191508360208285010111156147aa57600080fd5b9250929050565b600080600080600080600080600060e08a8c0312156147cf57600080fd5b8935985060208a0135975060408a01356147e8816145b7565b965060608a013567ffffffffffffffff8082111561480557600080fd5b6148118d838e01614768565b909850965060808c01359150614826826145b7565b90945060a08b013590614838826145b7565b90935060c08b0135908082111561484e57600080fd5b5061485b8c828d01614768565b915080935050809150509295985092959850929598565b60006020828403121561488457600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600381106125bb57634e487b7160e01b600052602160045260246000fd5b6001600160a01b03878116825286811660208301526040820186905284811660608301528316608082015260c081016148f7836148a1565b8260a0830152979650505050505050565b60008060008060008060a0878903121561492157600080fd5b8635955060208701359450604087013567ffffffffffffffff81111561494657600080fd5b61495289828a01614768565b9095509350506060870135614966816145b7565b80925050608087013590509295509295509295565b600080600080600080600060e0888a03121561499657600080fd5b87359650602088013595506040880135945060608801356149b6816145b7565b93506080880135925060a0880135915060c08801356149d4816145b7565b8091505092959891949750929550565b6000806000606084860312156149f957600080fd5b8335614a04816145b7565b92506020840135614a14816145b7565b91506040840135614a24816145b7565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715614a6957614a69614a2f565b60405290565b604051610160810167ffffffffffffffff81118282101715614a6957614a69614a2f565b6040516101c0810167ffffffffffffffff81118282101715614a6957614a69614a2f565b604051601f8201601f1916810167ffffffffffffffff81118282101715614ae057614ae0614a2f565b604052919050565b600082601f830112614af957600080fd5b8135602067ffffffffffffffff821115614b1557614b15614a2f565b8160051b614b24828201614ab7565b9283528481018201928281019087851115614b3e57600080fd5b83870192505b84831015614b66578235614b57816145b7565b82529183019190830190614b44565b979650505050505050565b600082601f830112614b8257600080fd5b813567ffffffffffffffff811115614b9c57614b9c614a2f565b614baf6020601f19601f84011601614ab7565b818152846020838601011115614bc457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215614bf357600080fd5b813567ffffffffffffffff80821115614c0b57600080fd5b908301906101a08286031215614c2057600080fd5b614c28614a45565b82358152602083013560208201526040830135604082015260608301356060820152614c56608084016145cc565b608082015260a083013560a0820152614c7160c084016145cc565b60c082015260e083013582811115614c8857600080fd5b614c9487828601614ae8565b60e083015250610100614ca88185016145cc565b908201526101208381013583811115614cc057600080fd5b614ccc88828701614b71565b828401525050610140614ce08185016145cc565b908201526101608381013583811115614cf857600080fd5b614d0488828701614b71565b91830191909152506101809283013592810192909252509392505050565b60008060008060008060c08789031215614d3b57600080fd5b86359550602087013594506040870135614d54816145b7565b93506060870135614d64816145b7565b9598949750929560808101359460a0909101359350915050565b60008060008060008060008060006101208a8c031215614d9d57600080fd5b8935985060208a0135614daf816145b7565b975060408a0135965060608a0135614dc6816145b7565b955060808a0135614dd6816145b7565b945060a08a0135614de6816145b7565b935060c08a0135614df6816145b7565b8093505060e08a013591506101008a013590509295985092959850929598565b803567ffffffffffffffff811681146145d757600080fd5b600060208284031215614e4057600080fd5b813567ffffffffffffffff80821115614e5857600080fd5b908301906101608286031215614e6d57600080fd5b614e75614a6f565b8235815260208301356020820152614e8f60408401614e16565b60408201526060830135606082015260808301356080820152614eb460a084016145cc565b60a082015260c083013560c0820152614ecf60e084016145cc565b60e0820152610100614ee28185016145cc565b908201526101208381013583811115614efa57600080fd5b614f0688828701614b71565b91830191909152506101409283013592810192909252509392505050565b60208101614f31836148a1565b91905290565b600060208284031215614f4957600080fd5b813567ffffffffffffffff80821115614f6157600080fd5b908301906101c08286031215614f7657600080fd5b614f7e614a93565b823581526020830135602082015260408301356040820152614fa2606084016145cc565b6060820152614fb3608084016145cc565b6080820152614fc460a084016145cc565b60a082015260c083013582811115614fdb57600080fd5b614fe787828601614b71565b60c08301525060e083013560e082015261010091506150078284016145cc565b82820152610120915061501b8284016145cc565b82820152610140915061502f8284016145cc565b8282015261016091506150438284016145cc565b9181019190915261018082810135908201526101a091820135918101919091529392505050565b6000806040838503121561507d57600080fd5b50508035926020909101359150565b60808152600061509f608083018761469e565b6001600160a01b0395861660208401529390941660408201526060015292915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115614254576142546150c2565b6000602082840312156150fd57600080fd5b81516146dd816145b7565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615139576151396150c2565b5060010190565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160a01b03808c1683528a6020840152808a16604084015260e0606084015261519d60e08401898b615140565b818816608085015281871660a085015283810360c08501526151c0818688615140565b9d9c50505050505050505050505050565b6001600160a01b03861681526080602082015260006151f4608083018688615140565b905083604083015267ffffffffffffffff831660608301529695505050505050565b67ffffffffffffffff8616815260806020820152600061523a608083018688615140565b604083019490945250606001529392505050565b600081518084526020808501945080840160005b838110156152875781516001600160a01b031687529582019590820190600101615262565b509495945050505050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152600060808301516152d760a08401826001600160a01b03169052565b5060a083015160c083015260c08301516152fc60e08401826001600160a01b03169052565b5060e08301516101a0610100818186015261531b6101c086018461524e565b90860151909250610120615339868201836001600160a01b03169052565b80870151915050601f19610140818786030181880152615359858461469e565b945080880151925050610160615379818801846001600160a01b03169052565b80880151925050610180818786030181880152615396858461469e565b970151959092019490945250929392505050565b60006001600160a01b038089168352876020840152808716604084015260c060608401526153db60c084018761469e565b60808401959095529290921660a09091015250949350505050565b60006101208b83528a60208401528960408401526001600160a01b03808a16606085015288608085015280881660a085015280871660c0850152508060e08401526154438184018661469e565b915050826101008301529a9950505050505050505050565b67ffffffffffffffff81811683821601908082111561547c5761547c6150c2565b5092915050565b6000825161549581846020870161467a565b9190910192915050565b6000602082840312156154b157600080fd5b815180151581146146dd57600080fdfe756e73796e74686573697a652875696e743235362c627974657333322c627974657333322c616464726573732c75696e743235362c6164647265737329756e73796e74686573697a652875696e743235362c627974657333322c616464726573732c75696e743235362c61646472657373296d657461556e73796e74686573697a652875696e743235362c627974657333322c627974657333322c616464726573732c75696e743235362c616464726573732c616464726573732c62797465732c75696e743235362972657665727453796e74686573697a652875696e743235362c6279746573333229a2646970667358221220b724a2bcb2e72b037ec6817a1d2b515419f96056d72a7d3321f1dabe1be41ed764736f6c63430008130033