0 txs
5 calls
constructor
No constructor.
functions
computeAddress
viewfunction computeAddress(bytes32 salt, string name, string symbol, uint8 decimals) view returns (address addr)
deployToken
nonpayablefunction deployToken(string name, string symbol, uint8 decimals, uint256 totalSupply, bytes32 salt, address owner, uint16 chainIdForMinting) returns (address tokenAddress)
initiateBridgeOut
payablefunction initiateBridgeOut(address tokenAddress, uint256 amount, uint16 recipientChain, bytes32 recipient, uint32 nonce, string trackId) payable
initiateTokensDeployment
payablefunction initiateTokensDeployment(bytes params, uint256[] destinationChains, uint256[] gasValues, uint256 tokenMintingChain) payable
events
InitiatedBridgeOut
event InitiatedBridgeOut(address indexed caller, address indexed token, uint256 amount, uint16 destinationChain, bytes32 recipient, uint256 nonce, uint256 gasValue, string trackId)
InitiateTokenDeployment
event InitiateTokenDeployment(address indexed owner, bytes params, uint256[] destinationChains, uint256[] gasValues, uint256 tokenMintingChain)
TokenDeployed
event TokenDeployed(address indexed owner, address indexed token, string name, string symbol, uint8 decimals, bytes32 salt)
errors
OnlyContractOwner
error OnlyContractOwner()
creation bytecode
0x608060405234801561001057600080fd5b50615146806100206000396000f3fe608060405260043610620000445760003560e01c806338e6e9ef1462000049578063f3620aaa1462000097578063fd25642d14620000b0578063fe8fc42014620000d5575b600080fd5b3480156200005657600080fd5b506200006e6200006836600462000f7c565b620000ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b620000ae620000a836600462001046565b620001da565b005b348015620000bd57600080fd5b506200006e620000cf366004620010e3565b62000567565b620000ae620000e6366004620011ec565b620008fd565b60008060405180602001620001019062000f0b565b6020820181038252601f19601f820116604052509050600081888888888860405160200162000135959493929190620012e2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000173929160200162001352565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160208083019190912092840183905283018c9052308084529093509091600b0160ff8153605590209b9a5050505050505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c3462000268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c69642076616c756520666f7220676173000000000000000000000060448201526064015b60405180910390fd5b600681015460405173ffffffffffffffffffffffffffffffffffffffff909116903480156108fc02916000818181858888f19350505050158015620002b1573d6000803e3d6000fd5b5087620002d773ffffffffffffffffffffffffffffffffffffffff821633308b62000ac1565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8a8116602483015289919083169063dd62ed3e90604401602060405180830381865afa1580156200034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000373919062001385565b101562000437576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483015282169063095ea7b3906044016020604051808303816000875af11580156200040f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043591906200139f565b505b6040517fff99c39f0000000000000000000000000000000000000000000000000000000081526004810189905261ffff881660248201526044810187905263ffffffff8616606482015273ffffffffffffffffffffffffffffffffffffffff8a169063ff99c39f906084016020604051808303816000875af1158015620004c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e89190620013ca565b5073ffffffffffffffffffffffffffffffffffffffff89163373ffffffffffffffffffffffffffffffffffffffff167f1dfd7adaea24c21c9fb1c115775a8489731633baf696c8c246b32922a5fb230a8a8a8a8a348b8b604051620005549796959493929190620013f6565b60405180910390a3505050505050505050565b60006200057362000b5e565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6000620005a6868d8d8d8d8d620000ec565b9050803b1562000613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f616c72656164792061646472657373206465706c6f796564000000000000000060448201526064016200025f565b858c8c8c8c8c604051620006279062000f0b565b62000637959493929190620012e2565b8190604051809103906000f590508015801562000658573d6000803e3d6000fd5b50600483810154600585015460068601546040517f3fb7778b000000000000000000000000000000000000000000000000000000008152740100000000000000000000000000000000000000009384900461ffff169481019490945273ffffffffffffffffffffffffffffffffffffffff91821660248501529190910460ff166044830152606482018a905291945090841690633fb7778b90608401600060405180830381600087803b1580156200070f57600080fd5b505af115801562000724573d6000803e3d6000fd5b505050600483015461ffff868116740100000000000000000000000000000000000000009092041614159050620007e0576040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018990528416906340c10f1990604401600060405180830381600087803b158015620007c657600080fd5b505af1158015620007db573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff831663f2fde38b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200086457600080fd5b505af115801562000879573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fbd35e288795ce95a1e9a746576fdd8d7640170bf92add8a9a752085b705434b88e8e8e8e8e8d604051620008e69695949392919062001441565b60405180910390a350509998505050505050505050565b6000341162000969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c69642076616c756520666f7220676173000000000000000000000060448201526064016200025f565b838214620009d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f696e76616c6964206761732076616c75657320616e6420636861696e732e000060448201526064016200025f565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1322546040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9173ffffffffffffffffffffffffffffffffffffffff16903480156108fc02916000818181858888f1935050505015801562000a5a573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f2c18c31f190b1bde08c24d6b62733a82f2e5f7c7388f7bf278115b37fb4e58138989898989898960405162000aaf9796959493929190620014d5565b60405180910390a25050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905262000b5890859062000bd4565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6004015473ffffffffffffffffffffffffffffffffffffffff16331462000bd2576040517f277d76f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600062000c38826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1662000cec9092919063ffffffff16565b80519091501562000ce7578080602001905181019062000c5991906200139f565b62000ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200025f565b505050565b606062000cfd848460008562000d05565b949350505050565b60608247101562000d99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016200025f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405162000dc491906200152c565b60006040518083038185875af1925050503d806000811462000e03576040519150601f19603f3d011682016040523d82523d6000602084013e62000e08565b606091505b509150915062000e1b8783838762000e26565b979650505050505050565b6060831562000ebe57825162000eb65773ffffffffffffffffffffffffffffffffffffffff85163b62000eb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200025f565b508162000cfd565b62000cfd838381511562000ed55781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025f91906200154a565b613b73806200159e83390190565b60008083601f84011262000f2c57600080fd5b50813567ffffffffffffffff81111562000f4557600080fd5b60208301915083602082850101111562000f5e57600080fd5b9250929050565b803560ff8116811462000f7757600080fd5b919050565b6000806000806000806080878903121562000f9657600080fd5b86359550602087013567ffffffffffffffff8082111562000fb657600080fd5b62000fc48a838b0162000f19565b9097509550604089013591508082111562000fde57600080fd5b5062000fed89828a0162000f19565b90945092506200100290506060880162000f65565b90509295509295509295565b803573ffffffffffffffffffffffffffffffffffffffff8116811462000f7757600080fd5b803561ffff8116811462000f7757600080fd5b600080600080600080600060c0888a0312156200106257600080fd5b6200106d886200100e565b965060208801359550620010846040890162001033565b945060608801359350608088013563ffffffff81168114620010a557600080fd5b925060a088013567ffffffffffffffff811115620010c257600080fd5b620010d08a828b0162000f19565b989b979a50959850939692959293505050565b600080600080600080600080600060e08a8c0312156200110257600080fd5b893567ffffffffffffffff808211156200111b57600080fd5b620011298d838e0162000f19565b909b50995060208c01359150808211156200114357600080fd5b50620011528c828d0162000f19565b909850965062001167905060408b0162000f65565b945060608a0135935060808a013592506200118560a08b016200100e565b91506200119560c08b0162001033565b90509295985092959850929598565b60008083601f840112620011b757600080fd5b50813567ffffffffffffffff811115620011d057600080fd5b6020830191508360208260051b850101111562000f5e57600080fd5b60008060008060008060006080888a0312156200120857600080fd5b873567ffffffffffffffff808211156200122157600080fd5b6200122f8b838c0162000f19565b909950975060208a01359150808211156200124957600080fd5b620012578b838c01620011a4565b909750955060408a01359150808211156200127157600080fd5b50620012808a828b01620011a4565b989b979a50959894979596606090950135949350505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b606081526000620012f860608301878962001299565b82810360208401526200130d81868862001299565b91505060ff831660408301529695505050505050565b60005b838110156200134057818101518382015260200162001326565b8381111562000b585750506000910152565b600083516200136681846020880162001323565b8351908301906200137c81836020880162001323565b01949350505050565b6000602082840312156200139857600080fd5b5051919050565b600060208284031215620013b257600080fd5b81518015158114620013c357600080fd5b9392505050565b600060208284031215620013dd57600080fd5b815167ffffffffffffffff81168114620013c357600080fd5b87815261ffff8716602082015285604082015263ffffffff8516606082015283608082015260c060a082015260006200143460c08301848662001299565b9998505050505050505050565b6080815260006200145760808301888a62001299565b82810360208401526200146c81878962001299565b60ff959095166040840152505060600152949350505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115620014b857600080fd5b8260051b8083602087013760009401602001938452509192915050565b608081526000620014eb60808301898b62001299565b82810360208401526200150081888a62001485565b905082810360408401526200151781868862001485565b91505082606083015298975050505050505050565b600082516200154081846020870162001323565b9190910192915050565b60208152600082518060208401526200156b81604085016020870162001323565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe60806040523480156200001157600080fd5b5060405162003b7338038062003b738339810160408190526200003491620002c3565b8251839083906200004d90600c90602085019062000150565b5080516200006390600d90602084019062000150565b505050620000806200007a620000ac60201b60201c565b620000b0565b6200008b4662000102565b6005805460ff60a81b1916600160a81b60ff84160217905550505062000385565b3390565b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b4681146200014b5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b604482015260640160405180910390fd5b600455565b8280546200015e9062000348565b90600052602060002090601f016020900481019282620001825760008555620001cd565b82601f106200019d57805160ff1916838001178555620001cd565b82800160010185558215620001cd579182015b82811115620001cd578251825591602001919060010190620001b0565b50620001db929150620001df565b5090565b5b80821115620001db5760008155600101620001e0565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200021e57600080fd5b81516001600160401b03808211156200023b576200023b620001f6565b604051601f8301601f19908116603f01168101908282118183101715620002665762000266620001f6565b816040528381526020925086838588010111156200028357600080fd5b600091505b83821015620002a7578582018301518183018401529082019062000288565b83821115620002b95760008385830101525b9695505050505050565b600080600060608486031215620002d957600080fd5b83516001600160401b0380821115620002f157600080fd5b620002ff878388016200020c565b945060208601519150808211156200031657600080fd5b5062000325868287016200020c565b925050604084015160ff811681146200033d57600080fd5b809150509250925092565b600181811c908216806200035d57607f821691505b602082108114156200037f57634e487b7160e01b600052602260045260246000fd5b50919050565b6137de80620003956000396000f3fe6080604052600436106102855760003560e01c80637d557a3f11610153578063c1bd8cf9116100cb578063ded8454a1161007f578063f2fde38b11610064578063f2fde38b146107c6578063f7ee9998146107e6578063ff99c39f1461081757600080fd5b8063ded8454a1461076e578063f0141d841461079557600080fd5b8063d5abeb01116100b0578063d5abeb011461069a578063dc02f456146106af578063dd62ed3e1461072857600080fd5b8063c1bd8cf914610665578063c599efdd1461067a57600080fd5b806395d89b4111610122578063a457c2d711610107578063a457c2d7146105f5578063a9059cbb14610615578063aa4efa5b1461063557600080fd5b806395d89b41146105bd5780639a8a0592146105d257600080fd5b80637d557a3f1461054157806384acd1bb14610561578063860369cc1461057f5780638da5cb5b1461059f57600080fd5b8063313ce5671161020157806364d42b17116101b5578063715018a61161019a578063715018a6146104dc578063739fc8d1146104f157806374d32ad41461050f57600080fd5b806364d42b171461049157806370a08231146104a657600080fd5b806339509351116101e657806339509351146104315780633fb7778b1461045157806340c10f191461047157600080fd5b8063313ce567146103c2578063392e53cd1461040157600080fd5b806318160ddd116102585780632af6d4a81161023d5780632af6d4a8146103605780632c5485f4146103825780632d1fdb46146103a257600080fd5b806318160ddd1461032157806323b872dd1461034057600080fd5b806301ffc9a71461028a57806306fdde03146102bf578063095ea7b3146102e15780631150f0f314610301575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612a61565b610843565b60405190151581526020015b60405180910390f35b3480156102cb57600080fd5b506102d46108dc565b6040516102b69190612b19565b3480156102ed57600080fd5b506102aa6102fc366004612b48565b61096e565b34801561030d57600080fd5b506102aa61031c366004612cd9565b610986565b34801561032d57600080fd5b50600b545b6040519081526020016102b6565b34801561034c57600080fd5b506102aa61035b366004612d16565b6109b3565b34801561036c57600080fd5b5061038061037b366004612de1565b6109d9565b005b34801561038e57600080fd5b5061038061039d366004612e41565b610cca565b3480156103ae57600080fd5b506102d46103bd366004612cd9565b610ef9565b3480156103ce57600080fd5b506005547501000000000000000000000000000000000000000000900460ff165b60405160ff90911681526020016102b6565b34801561040d57600080fd5b5060055474010000000000000000000000000000000000000000900460ff166102aa565b34801561043d57600080fd5b506102aa61044c366004612b48565b61136a565b34801561045d57600080fd5b5061038061046c366004612e9a565b6113a9565b34801561047d57600080fd5b5061038061048c366004612b48565b6114dc565b34801561049d57600080fd5b50600454610332565b3480156104b257600080fd5b506103326104c1366004612ee9565b6001600160a01b031660009081526009602052604090205490565b3480156104e857600080fd5b50610380611573565b3480156104fd57600080fd5b5060005462010000900460ff166103ef565b34801561051b57600080fd5b506005546001600160a01b03165b6040516001600160a01b0390911681526020016102b6565b34801561054d57600080fd5b5061038061055c366004612f8e565b611587565b34801561056d57600080fd5b506001546001600160a01b0316610529565b34801561058b57600080fd5b506102d461059a36600461306a565b6118e9565b3480156105ab57600080fd5b50600e546001600160a01b0316610529565b3480156105c957600080fd5b506102d46119a9565b3480156105de57600080fd5b5060005460405161ffff90911681526020016102b6565b34801561060157600080fd5b506102aa610610366004612b48565b6119b8565b34801561062157600080fd5b506102aa610630366004612b48565b611a6d565b34801561064157600080fd5b506102aa6106503660046130fc565b60009081526002602052604090205460ff1690565b34801561067157600080fd5b50600754610332565b34801561068657600080fd5b506105296106953660046130fc565b611a7b565b3480156106a657600080fd5b50600654610332565b3480156106bb57600080fd5b506106cf6106ca366004612cd9565b611af1565b6040516102b69190600060c0820190508251825260208301516020830152604083015161ffff808216604085015260608501516060850152806080860151166080850152505060ff60a08401511660a083015292915050565b34801561073457600080fd5b50610332610743366004613115565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561077a57600080fd5b50610332610789366004612ee9565b6001600160a01b031690565b3480156107a157600080fd5b506005547501000000000000000000000000000000000000000000900460ff166103ef565b3480156107d257600080fd5b506103806107e1366004612ee9565b611c2c565b3480156107f257600080fd5b50610332610801366004613148565b61ffff1660009081526003602052604090205490565b61082a610825366004613177565b611cbc565b60405167ffffffffffffffff90911681526020016102b6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fadf0604b0000000000000000000000000000000000000000000000000000000014806108d657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600c80546108eb906131c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610917906131c1565b80156109645780601f1061093957610100808354040283529160200191610964565b820191906000526020600020905b81548152906001019060200180831161094757829003601f168201915b5050505050905090565b60003361097c818585612048565b5060019392505050565b6000806008018260405161099a919061320f565b9081526040519081900360200190205460ff1692915050565b6000336109c18582856121a0565b6109cc85858561224a565b60019150505b9392505050565b806109ec600e546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415610a3c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff861602179055505050565b6000610b0a82600001518360200151604051602001610a8c92919060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b82519091506001600160a01b03163314610b6b5760405162461bcd60e51b815260206004820152601760248201527f637573746f6469616e2063616e2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b42826020015111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f7369676e6564207472616e73616374696f6e20657870697265640000000000006044820152606401610b62565b610bcb8260400151610986565b15610c185760405162461bcd60e51b815260206004820152601860248201527f63616e6e6f742072652d757365207369676e61747572657300000000000000006044820152606401610b62565b610c25826040015161243e565b610c45818360400151610c40600e546001600160a01b031690565b612494565b610c915760405162461bcd60e51b815260206004820152601660248201527f756e617574686f72697a6564207369676e6174757265000000000000000000006044820152606401610b62565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff8716021790555b50505050565b80610cdd600e546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415610d115761ffff84166000908152600360205260409020839055610cc4565b6000610d6182600001518360200151604051602001610a8c92919060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b82519091506001600160a01b03163314610dbd5760405162461bcd60e51b815260206004820152601760248201527f637573746f6469616e2063616e2063616c6c206f6e6c790000000000000000006044820152606401610b62565b42826020015111610e105760405162461bcd60e51b815260206004820152601a60248201527f7369676e6564207472616e73616374696f6e20657870697265640000000000006044820152606401610b62565b610e1d8260400151610986565b15610e6a5760405162461bcd60e51b815260206004820152601860248201527f63616e6e6f742072652d757365207369676e61747572657300000000000000006044820152606401610b62565b610e77826040015161243e565b610e92818360400151610c40600e546001600160a01b031690565b610ede5760405162461bcd60e51b815260206004820152601660248201527f756e617574686f72697a6564207369676e6174757265000000000000000000006044820152606401610b62565b50505061ffff91909116600090815260036020526040902055565b60055460609074010000000000000000000000000000000000000000900460ff161515600114610f6b5760405162461bcd60e51b815260206004820152600f60248201527f4e6f7420496e697469616c697a656400000000000000000000000000000000006044820152606401610b62565b46610f7560045490565b14610fc25760405162461bcd60e51b815260206004820152601060248201527f756e737570706f7274656420666f726b000000000000000000000000000000006044820152606401610b62565b6000806000610fd96001546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b81526004016110049190612b19565b600060405180830381865afa158015611021573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611067919081019061335e565b92509250925081819061108d5760405162461bcd60e51b8152600401610b629190612b19565b50306001600160a01b03166110a58460800151611a7b565b6001600160a01b031614806110d457506080830151606084015161ffff16600090815260036020526040902054145b6111205760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420456d697474657200000000000000000000000000000000006044820152606401610b62565b600061112f8460e00151611af1565b905060006111408260600151611a7b565b905061116085610140015160009081526002602052604090205460ff1690565b156111ad5760405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c657465640000000000006044820152606401610b62565b6111ef856101400151600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6001546001600160a01b03166001600160a01b0316639a8a05926040518163ffffffff1660e01b8152600401602060405180830381865afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125c91906134ac565b61ffff16826080015161ffff16146112b65760405162461bcd60e51b815260206004820152601460248201527f696e76616c69642074617267657420636861696e0000000000000000000000006044820152606401610b62565b60006112f083600001518460a001516112eb60055460ff75010000000000000000000000000000000000000000009091041690565b612549565b90506112fc82826125b3565b82606001517fdf5e04c9235e5b4ddaec2baee15dc9c74de339075fa433a8dd25ebbc0719857b82856040015186608001516040516113519392919092835261ffff918216602084015216604082015260600190565b60405180910390a250505060e090920151949350505050565b336000818152600a602090815260408083206001600160a01b038716845290915281205490919061097c90829086906113a49087906134f8565b612048565b6113b1612674565b60055474010000000000000000000000000000000000000000900460ff161561141c5760405162461bcd60e51b815260206004820152601360248201527f416c726561647920496e697469616c697a6564000000000000000000000000006044820152606401610b62565b60008054600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03871617905561ffff86167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000909116176201000060ff85160217905560068190556114986000600755565b610cc4600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6114e4612674565b600654816114f160075490565b6114fb91906134f8565b11156115495760405162461bcd60e51b815260206004820152601260248201527f4d415820535550504c59205245414348454400000000000000000000000000006044820152606401610b62565b6115658161155660075490565b61156091906134f8565b600755565b61156f82826125b3565b5050565b61157b612674565b61158560006126ce565b565b8061159a600e546001600160a01b031690565b6001600160a01b0316336001600160a01b031614156116765782518451146116045760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e707574000000000000000000000000000000000000006044820152606401610b62565b60005b83518110156116705761165e85828151811061162557611625613510565b602002602001015185838151811061163f5761163f613510565b602002602001015161ffff909116600090815260036020526040902055565b806116688161353f565b915050611607565b50610cc4565b60006116c682600001518360200151604051602001610a8c92919060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b82519091506001600160a01b031633146117225760405162461bcd60e51b815260206004820152601760248201527f637573746f6469616e2063616e2063616c6c206f6e6c790000000000000000006044820152606401610b62565b428260200151116117755760405162461bcd60e51b815260206004820152601a60248201527f7369676e6564207472616e73616374696f6e20657870697265640000000000006044820152606401610b62565b6117828260400151610986565b156117cf5760405162461bcd60e51b815260206004820152601860248201527f63616e6e6f742072652d757365207369676e61747572657300000000000000006044820152606401610b62565b6117dc826040015161243e565b6117f7818360400151610c40600e546001600160a01b031690565b6118435760405162461bcd60e51b815260206004820152601660248201527f756e617574686f72697a6564207369676e6174757265000000000000000000006044820152606401610b62565b83518551146118945760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e707574000000000000000000000000000000000000006044820152606401610b62565b60005b84518110156118e1576118cf8682815181106118b5576118b5613510565b602002602001015186838151811061163f5761163f613510565b806118d98161353f565b915050611897565b505050505050565b6060816000015182602001518360400151846060015185608001518660a0015160405160200161199396959493929190958652602086019490945260f092831b7fffff0000000000000000000000000000000000000000000000000000000000009081166040870152604286019290925290911b16606283015260f81b7fff0000000000000000000000000000000000000000000000000000000000000016606482015260650190565b6040516020818303038152906040529050919050565b6060600d80546108eb906131c1565b336000818152600a602090815260408083206001600160a01b038716845290915281205490919083811015611a555760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610b62565b611a628286868403612048565b506001949350505050565b60003361097c81858561224a565b60007fffffffffffffffffffffffff0000000000000000000000000000000000000000821615611aed5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642045564d2061646472657373000000000000000000000000006044820152606401610b62565b5090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905290611b2d8382612738565b8252611b3a6020826134f8565b9050611b46838261279e565b602080840191909152611b5990826134f8565b9050611b6583826127fb565b61ffff166040830152611b796002826134f8565b9050611b85838261279e565b6060830152611b956020826134f8565b9050611ba183826127fb565b61ffff166080830152611bb56002826134f8565b9050611bc18382612861565b60ff1660a0830152611bd46001826134f8565b905080835114611c265760405162461bcd60e51b815260206004820152601060248201527f696e76616c6964205472616e73666572000000000000000000000000000000006044820152606401610b62565b50919050565b611c34612674565b6001600160a01b038116611cb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b62565b611cb9816126ce565b50565b60055460009074010000000000000000000000000000000000000000900460ff161515600114611d2e5760405162461bcd60e51b815260206004820152600f60248201527f4e6f7420496e697469616c697a656400000000000000000000000000000000006044820152606401610b62565b46611d3860045490565b14611d855760405162461bcd60e51b815260206004820152601060248201527f756e737570706f7274656420666f726b000000000000000000000000000000006044820152606401610b62565b6000611d996001546001600160a01b031690565b6001600160a01b0316631a90a2196040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa9190613578565b905080341015611e725760405162461bcd60e51b815260206004820152602a60248201527f4e6f7420656e6f756768206665652070726f766964656420746f207075626c6960448201527f7368206d657373616765000000000000000000000000000000000000000000006064820152608401610b62565b6000611e866001546001600160a01b031690565b6001600160a01b0316639a8a05926040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee791906134ac565b905030611ef433896128c7565b60006040518060c001604052808a81526020018381526020018461ffff1681526020018881526020018961ffff168152602001611f4d60055460ff75010000000000000000000000000000000000000000009091041690565b60ff1690529050611f666001546001600160a01b031690565b6001600160a01b031663b19a437e3488611f7f856118e9565b60005462010000900460ff166040518563ffffffff1660e01b8152600401611fa993929190613591565b60206040518083038185885af1158015611fc7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fec91906135c3565b945086611ff833610789565b604080518c815261ffff87811660208301528c168183015290517fce2636d514abb08349f7cf4369885a4ac22355555ff0e1c6f99afc895a77f3669181900360600190a350505050949350505050565b6001600160a01b0383166120c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610b62565b6001600160a01b03821661213f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b62565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600a60209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cc4578181101561223d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b62565b610cc48484848403612048565b6001600160a01b0383166122c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b62565b6001600160a01b0382166123425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b62565b6001600160a01b038316600090815260096020526040902054818110156123d15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610b62565b6001600160a01b0380851660008181526009602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124319086815260200190565b60405180910390a3610cc4565b6001600060080182604051612453919061320f565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905550565b6000806000806124a386612a32565b9250925092506000600188858585604051600081526020016040526040516124e7949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015612509573d6000803e3d6000fd5b505050602060405103519050856001600160a01b0316816001600160a01b0316141561253c5760019450505050506109d2565b60009450505050506109d2565b60008160ff168360ff16111561257b5761256382846135de565b61256e90600a613721565b6125789085613730565b93505b8260ff168260ff1611156125ab5761259383836135de565b61259e90600a613721565b6125a8908561376b565b93505b509192915050565b6001600160a01b0382166126095760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b62565b80600b600082825461261b91906134f8565b90915550506001600160a01b0382166000818152600960209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600e546001600160a01b031633146115855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b62565b600e80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006127458260206134f8565b835110156127955760405162461bcd60e51b815260206004820152601560248201527f746f55696e743235365f6f75744f66426f756e647300000000000000000000006044820152606401610b62565b50016020015190565b60006127ab8260206134f8565b835110156127955760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610b62565b60006128088260026134f8565b835110156128585760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610b62565b50016002015190565b600061286e8260016134f8565b835110156128be5760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610b62565b50016001015190565b6001600160a01b0382166129435760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610b62565b6001600160a01b038216600090815260096020526040902054818110156129d25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610b62565b6001600160a01b03831660008181526009602090815260408083208686039055600b80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60008060008351604114612a4557600080fd5b5050506020810151604082015160609092015160001a92909190565b600060208284031215612a7357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146109d257600080fd5b60005b83811015612abe578181015183820152602001612aa6565b83811115610cc45750506000910152565b60008151808452612ae7816020860160208601612aa3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109d26020830184612acf565b80356001600160a01b0381168114612b4357600080fd5b919050565b60008060408385031215612b5b57600080fd5b612b6483612b2c565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715612bc457612bc4612b72565b60405290565b604051610160810167ffffffffffffffff81118282101715612bc457612bc4612b72565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612c3557612c35612b72565b604052919050565b600067ffffffffffffffff821115612c5757612c57612b72565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112612c9457600080fd5b8135612ca7612ca282612c3d565b612bee565b818152846020838601011115612cbc57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612ceb57600080fd5b813567ffffffffffffffff811115612d0257600080fd5b612d0e84828501612c83565b949350505050565b600080600060608486031215612d2b57600080fd5b612d3484612b2c565b9250612d4260208501612b2c565b9150604084013590509250925092565b60ff81168114611cb957600080fd5b600060608284031215612d7357600080fd5b6040516060810167ffffffffffffffff8282108183111715612d9757612d97612b72565b81604052829350612da785612b2c565b8352602085013560208401526040850135915080821115612dc757600080fd5b50612dd485828601612c83565b6040830152505092915050565b60008060408385031215612df457600080fd5b8235612dff81612d52565b9150602083013567ffffffffffffffff811115612e1b57600080fd5b612e2785828601612d61565b9150509250929050565b61ffff81168114611cb957600080fd5b600080600060608486031215612e5657600080fd5b8335612e6181612e31565b925060208401359150604084013567ffffffffffffffff811115612e8457600080fd5b612e9086828701612d61565b9150509250925092565b60008060008060808587031215612eb057600080fd5b8435612ebb81612e31565b9350612ec960208601612b2c565b92506040850135612ed981612d52565b9396929550929360600135925050565b600060208284031215612efb57600080fd5b6109d282612b2c565b600067ffffffffffffffff821115612f1e57612f1e612b72565b5060051b60200190565b600082601f830112612f3957600080fd5b81356020612f49612ca283612f04565b82815260059290921b84018101918181019086841115612f6857600080fd5b8286015b84811015612f835780358352918301918301612f6c565b509695505050505050565b600080600060608486031215612fa357600080fd5b833567ffffffffffffffff80821115612fbb57600080fd5b818601915086601f830112612fcf57600080fd5b81356020612fdf612ca283612f04565b82815260059290921b8401810191818101908a841115612ffe57600080fd5b948201945b8386101561302557853561301681612e31565b82529482019490820190613003565b9750508701359250508082111561303b57600080fd5b61304787838801612f28565b9350604086013591508082111561305d57600080fd5b50612e9086828701612d61565b600060c0828403121561307c57600080fd5b60405160c0810181811067ffffffffffffffff8211171561309f5761309f612b72565b8060405250823581526020830135602082015260408301356130c081612e31565b60408201526060838101359082015260808301356130dd81612e31565b608082015260a08301356130f081612d52565b60a08201529392505050565b60006020828403121561310e57600080fd5b5035919050565b6000806040838503121561312857600080fd5b61313183612b2c565b915061313f60208401612b2c565b90509250929050565b60006020828403121561315a57600080fd5b81356109d281612e31565b63ffffffff81168114611cb957600080fd5b6000806000806080858703121561318d57600080fd5b84359350602085013561319f81612e31565b92506040850135915060608501356131b681613165565b939692955090935050565b600181811c908216806131d557607f821691505b60208210811415611c26577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008251613221818460208701612aa3565b9190910192915050565b8051612b4381612d52565b8051612b4381613165565b8051612b4381612e31565b805167ffffffffffffffff81168114612b4357600080fd5b600082601f83011261327557600080fd5b8151613283612ca282612c3d565b81815284602083860101111561329857600080fd5b612d0e826020830160208701612aa3565b600082601f8301126132ba57600080fd5b815160206132ca612ca283612f04565b82815260079290921b840181019181810190868411156132e957600080fd5b8286015b84811015612f8357608081890312156133065760008081fd5b61330e612ba1565b81518152848201518582015260408083015161332981612d52565b9082015260608281015161333c81612d52565b908201528352918301916080016132ed565b80518015158114612b4357600080fd5b60008060006060848603121561337357600080fd5b835167ffffffffffffffff8082111561338b57600080fd5b9085019061016082880312156133a057600080fd5b6133a8612bca565b6133b18361322b565b81526133bf60208401613236565b60208201526133d060408401613236565b60408201526133e160608401613241565b6060820152608083015160808201526133fc60a0840161324c565b60a082015261340d60c0840161322b565b60c082015260e08301518281111561342457600080fd5b61343089828601613264565b60e083015250610100613444818501613236565b90820152610120838101518381111561345c57600080fd5b6134688a8287016132a9565b9183019190915250610140838101519082015294506134896020870161334e565b9350604086015191508082111561349f57600080fd5b50612e9086828701613264565b6000602082840312156134be57600080fd5b81516109d281612e31565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561350b5761350b6134c9565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613571576135716134c9565b5060010190565b60006020828403121561358a57600080fd5b5051919050565b63ffffffff841681526060602082015260006135b06060830185612acf565b905060ff83166040830152949350505050565b6000602082840312156135d557600080fd5b6109d28261324c565b600060ff821660ff8416808210156135f8576135f86134c9565b90039392505050565b600181815b8085111561365a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613640576136406134c9565b8085161561364d57918102915b93841c9390800290613606565b509250929050565b600082613671575060016108d6565b8161367e575060006108d6565b8160018114613694576002811461369e576136ba565b60019150506108d6565b60ff8411156136af576136af6134c9565b50506001821b6108d6565b5060208310610133831016604e8410600b84101617156136dd575081810a6108d6565b6136e78383613601565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613719576137196134c9565b029392505050565b60006109d260ff841683613662565b600082613766577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137a3576137a36134c9565b50029056fea2646970667358221220271164ad7854cff628789c8e146bdea5141c1f0afd8465b07e4edc084694ac5764736f6c634300080a0033a2646970667358221220fe4965d4d24b0de6791e735faaa3ad1d5816605b2144c1d154a701ad5b7d092264736f6c634300080a0033