6 txs
9k calls
constructor
constructor(address _poolDeployer)
functions
computeCustomPoolAddress
viewfunction computeCustomPoolAddress(address deployer, address token0, address token1) view returns (address customPool)
computePoolAddress
viewfunction computePoolAddress(address token0, address token1) view returns (address pool)
CUSTOM_POOL_DEPLOYER
viewfunction CUSTOM_POOL_DEPLOYER() view returns (bytes32)
customPoolByPair
viewfunction customPoolByPair(address, address, address) view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultCommunityFee
viewfunction defaultCommunityFee() view returns (uint16)
defaultConfigurationForPool
viewfunction defaultConfigurationForPool() view returns (uint16 communityFee, int24 tickSpacing, uint16 fee)
defaultFee
viewfunction defaultFee() view returns (uint16)
defaultPluginFactory
viewfunction defaultPluginFactory() view returns (address)
defaultTickspacing
viewfunction defaultTickspacing() view returns (int24)
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)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
hasRoleOrOwner
viewfunction hasRoleOrOwner(bytes32 role, address account) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
POOL_INIT_CODE_HASH
viewfunction POOL_INIT_CODE_HASH() view returns (bytes32)
poolByPair
viewfunction poolByPair(address, address) view returns (address)
poolDeployer
viewfunction poolDeployer() view returns (address)
POOLS_ADMINISTRATOR_ROLE
viewfunction POOLS_ADMINISTRATOR_ROLE() view returns (bytes32)
renounceOwnershipStartTimestamp
viewfunction renounceOwnershipStartTimestamp() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
vaultFactory
viewfunction vaultFactory() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
createCustomPool
nonpayablefunction createCustomPool(address deployer, address creator, address tokenA, address tokenB, bytes data) returns (address customPool)
createPool
nonpayablefunction createPool(address tokenA, address tokenB, bytes data) returns (address pool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDefaultCommunityFee
nonpayablefunction setDefaultCommunityFee(uint16 newDefaultCommunityFee)
setDefaultFee
nonpayablefunction setDefaultFee(uint16 newDefaultFee)
setDefaultPluginFactory
nonpayablefunction setDefaultPluginFactory(address newDefaultPluginFactory)
setDefaultTickspacing
nonpayablefunction setDefaultTickspacing(int24 newDefaultTickspacing)
setVaultFactory
nonpayablefunction setVaultFactory(address newVaultFactory)
startRenounceOwnership
nonpayablefunction startRenounceOwnership()
stopRenounceOwnership
nonpayablefunction stopRenounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CustomPool
event CustomPool(address indexed deployer, address indexed token0, address indexed token1, address pool)
DefaultCommunityFee
event DefaultCommunityFee(uint16 newDefaultCommunityFee)
DefaultFee
event DefaultFee(uint16 newDefaultFee)
DefaultPluginFactory
event DefaultPluginFactory(address defaultPluginFactoryAddress)
DefaultTickspacing
event DefaultTickspacing(int24 newDefaultTickspacing)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Pool
event Pool(address indexed token0, address indexed token1, address pool)
RenounceOwnershipFinish
event RenounceOwnershipFinish(uint256 timestamp)
RenounceOwnershipStart
event RenounceOwnershipStart(uint256 timestamp, uint256 finishTimestamp)
RenounceOwnershipStop
event RenounceOwnershipStop(uint256 timestamp)
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)
VaultFactory
event VaultFactory(address newVaultFactory)
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162002f3838038062002f388339810160408190526200003491620004bc565b6200003f33620000ec565b60016004556001600160a01b0381166200005857600080fd5b6001600160a01b0381166080526005805466ffffffffff00001916643c01f40000179055604051603c81527f7d7979096f943139ebee59f01c077a0f0766d06c40c86d596f23ed2561547cce9060200160405180910390a16040516101f481527fddc0c6f0b581e0d51bfe90ff138e4a548f94515c4dbcb12f5e98fdf0f75039839060200160405180910390a1506200053c565b6200010b6000620001056000546001600160a01b031690565b6200014a565b620001168162000175565b6000546001600160a01b0316156200014757620001476000620001416000546001600160a01b031690565b62000190565b50565b620001568282620001b6565b60008281526003602052604090206200017090826200023b565b505050565b600180546001600160a01b031916905562000147816200025b565b6200019c8282620002ab565b60008281526003602052604090206200017090826200034f565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff1615620002375760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45b5050565b600062000252836001600160a01b03841662000366565b90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16620002375760008281526002602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200030b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000252836001600160a01b0384166200046a565b600081815260018301602052604081205480156200045f5760006200038d600183620004ee565b8554909150600090620003a390600190620004ee565b90508181146200040f576000866000018281548110620003c757620003c762000510565b9060005260206000200154905080876000018481548110620003ed57620003ed62000510565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062000423576200042362000526565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000255565b600091505062000255565b6000818152600183016020526040812054620004b35750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000255565b50600062000255565b600060208284031215620004cf57600080fd5b81516001600160a01b0381168114620004e757600080fd5b9392505050565b818103818111156200025557634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6080516129cb6200056d6000396000818161046d0152818161079f01528181610f1301526117e601526129cb6000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063773265841161017b578063d547741f116100d8578063dc6fd8ab1161008c578063e8ae2b6911610071578063e8ae2b69146106d2578063f09489ac146106e5578063f2fde38b146106f857600080fd5b8063dc6fd8ab1461068d578063e30c3978146106b457600080fd5b8063d8ed2241116100bd578063d8ed224114610626578063d9a641e114610639578063dbbf3db41461067a57600080fd5b8063d547741f146105f3578063d8a06f731461060657600080fd5b806391d148541161012f578063b500a48b11610114578063b500a48b14610599578063ca15c873146105c0578063d0ad2792146105d357600080fd5b806391d148541461054b578063a217fddf1461059157600080fd5b80638d5a8711116101605780638d5a8711146105075780638da5cb5b1461051a5780639010d07c1461053857600080fd5b806377326584146104ec57806379ba5097146104ff57600080fd5b806329bc34461161022957806336568abe116101dd578063469388c4116101c2578063469388c4146104c85780635a6c72d0146104d0578063715018a6146104e457600080fd5b806336568abe146104a25780633ea7fbdb146104b557600080fd5b80632f8a39dd1161020e5780632f8a39dd146104475780633119049a14610468578063321935c61461048f57600080fd5b806329bc34461461040c5780632f2ff15d1461043457600080fd5b8063238a1d7411610280578063248a9ca311610265578063248a9ca3146103a157806325b355d6146103c45780632939dd97146103f957600080fd5b8063238a1d741461035057806323da36cc1461035a57600080fd5b806301ffc9a7146102b257806307810754146102da578063084bfff91461030f5780631ba89df414610318575b600080fd5b6102c56102c036600461242c565b61070b565b60405190151581526020015b60405180910390f35b6103017fc9cf812513d9983585eb40fcfe6fd49fbb6a45815663ec33b30a6c6c7de3683b81565b6040519081526020016102d1565b61030160065481565b61032b610326366004612490565b610767565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d1565b6103586108c4565b005b61032b610368366004612490565b600a60209081526000938452604080852082529284528284209052825290205473ffffffffffffffffffffffffffffffffffffffff1681565b6103016103af3660046124db565b60009081526002602052604090206001015490565b6005546040805161ffff8084168252640100000000840460020b602083015262010000909304909216908201526060016102d1565b6103586104073660046124f4565b610916565b60055461042190640100000000900460020b81565b60405160029190910b81526020016102d1565b610358610442366004612511565b6109c0565b6005546104559061ffff1681565b60405161ffff90911681526020016102d1565b61032b7f000000000000000000000000000000000000000000000000000000000000000081565b61032b61049d36600461258a565b6109ea565b6103586104b0366004612511565b610a4c565b6103586104c33660046124f4565b610b04565b610358610bd3565b6005546104559062010000900461ffff1681565b610358610c32565b6103586104fa3660046125ef565b610ca3565b610358610d42565b6103586105153660046125ef565b610df7565b60005473ffffffffffffffffffffffffffffffffffffffff1661032b565b61032b610546366004612613565b610eb4565b6102c5610559366004612511565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610301600081565b6103017fb73ce166ead2f8e9add217713a7989e4edfba9625f71dfd2516204bb67ad344281565b6103016105ce3660046124db565b610ed3565b60075461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b610358610601366004612511565b610eea565b60085461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b61032b610634366004612635565b610f0f565b61032b610647366004612635565b600960209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b61032b610688366004612663565b611068565b6103017fa18736c3ee97fe3c96c9428c0cc2a9116facec18e84f95f9da30543f8238a78281565b60015473ffffffffffffffffffffffffffffffffffffffff1661032b565b6102c56106e0366004612511565b611163565b6103586106f33660046126f1565b6111f0565b6103586107063660046124f4565b6112a5565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610761575061076182611354565b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660208301528085169282019290925290821660608201526000907f000000000000000000000000000000000000000000000000000000000000000090608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290528051602091820120610886939290917fa18736c3ee97fe3c96c9428c0cc2a9116facec18e84f95f9da30543f8238a78291017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6108cc6113eb565b6006546000036108db57600080fd5b60006006556040514281527fa2492902a0a1d28dc73e6ab22e473239ef077bb7bc8174dc7dab9fc0818e7135906020015b60405180910390a1565b61091e6113eb565b60075473ffffffffffffffffffffffffffffffffffffffff9081169082160361094657600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f5e38e259ec1f8a38b98fc65a27e266bb9cc87c76eb8c96c957450d1cff4591ef906020015b60405180910390a150565b6000828152600260205260409020600101546109db8161146e565b6109e58383611478565b505050565b60006109f461149a565b610a38600033878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150d92505050565b9050610a446001600455565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610b008282611c4c565b5050565b610b0c6113eb565b60085473ffffffffffffffffffffffffffffffffffffffff90811690821603610b3457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b605760055461ffff1615610b6057600080fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fa006ea05a14783821b0248e75d2342cd1681b07509e10a0f08487b080c29dea8906020016109b5565b610bdb6113eb565b60065415610be857600080fd5b4260068190557fcd60f5d54996130c21c3f063279b39230bcbafc12f763a1ac1dfaec2e9b61d2990610c1d6201518082612743565b6040805192835260208301919091520161090c565b610c3a6113eb565b600654600003610c4957600080fd5b6201518060065442610c5b9190612756565b1015610c6657600080fd5b6000600655610c73611c6e565b6040514281527fa24203c457ce43a097fa0c491fc9cf5e0a893af87a5e0a9785f29491deb11e239060200161090c565b610cab6113eb565b61c35061ffff82161115610cbe57600080fd5b60055461ffff808316620100009092041603610cd957600080fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8416908102919091179091556040519081527fddc0c6f0b581e0d51bfe90ff138e4a548f94515c4dbcb12f5e98fdf0f7503983906020016109b5565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610aed565b610df481611c7c565b50565b610dff6113eb565b6103e861ffff82161115610e1257600080fd5b60055461ffff808316911603610e2757600080fd5b61ffff811615610e535760085473ffffffffffffffffffffffffffffffffffffffff16610e5357600080fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f6b5c342391f543846fce47a925e7eba910f7bec232b08633308ca93fdd0fdf0d906020016109b5565b6000828152600360205260408120610ecc9083611cf5565b9392505050565b600081815260036020526040812061076190611d01565b600082815260026020526040902060010154610f058161146e565b6109e58383611c4c565b60007f00000000000000000000000000000000000000000000000000000000000000008383604051602001610f6792919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209182012061102b939290917fa18736c3ee97fe3c96c9428c0cc2a9116facec18e84f95f9da30543f8238a78291017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b600061107261149a565b3360009081527ff0b6a659b4f9a079190983c4f36c4a657949efea5d5056930e1cd964655ed049602052604090205460ff1661110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f43616e60742063726561746520637573746f6d20706f6f6c73000000000000006044820152606401610aed565b61114d8787878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150d92505050565b90506111596001600455565b9695505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1661119b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161480610ecc5750600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610ecc565b6111f86113eb565b6001600282900b121561120a57600080fd5b6101f4600282900b131561121d57600080fd5b6005546401000000009004600290810b9082900b0361123b57600080fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff1664010000000062ffffff841602179055604051600282900b81527f7d7979096f943139ebee59f01c077a0f0766d06c40c86d596f23ed2561547cce906020016109b5565b6112ad6113eb565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915561130f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061076157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610761565b60005473ffffffffffffffffffffffffffffffffffffffff16331461146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aed565b565b610df48133611d0b565b6114828282611dc5565b60008281526003602052604090206109e59082611eb9565b600260045403611506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610aed565b6002600455565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361154757600080fd5b6000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610611584578486611587565b85855b909250905073ffffffffffffffffffffffffffffffffffffffff82166115ac57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff8916156115f45773ffffffffffffffffffffffffffffffffffffffff89166000908152600a602052604090206115f7565b60095b73ffffffffffffffffffffffffffffffffffffffff8481166000908152602083815260408083208785168452909152902054919250161561163757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff8a1661170c5760075473ffffffffffffffffffffffffffffffffffffffff16156117075760075473ffffffffffffffffffffffffffffffffffffffff16631d0338d961169a8686610f0f565b8b600088888c6040518763ffffffff1660e01b81526004016116c1969594939291906127d7565b6020604051808303816000875af11580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190612834565b90505b611789565b33631d0338d961171d8c8787610767565b8b8d88888c6040518763ffffffff1660e01b8152600401611743969594939291906127d7565b6020604051808303816000875af1158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117869190612834565b90505b6040517ffd82b73a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015284811660448301528b811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063fd82b73a906084016020604051808303816000875af115801561182f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118539190612834565b945073ffffffffffffffffffffffffffffffffffffffff8a166119295760075473ffffffffffffffffffffffffffffffffffffffff1615611924576007546040517f8d5ef8d100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015287811660248301528c8116604483015290911690638d5ef8d190606401600060405180830381600087803b15801561190b57600080fd5b505af115801561191f573d6000803e3d6000fd5b505050505b6119b9565b6040517f8d5ef8d100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015280871660248301528b1660448201523390638d5ef8d190606401600060405180830381600087803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208581526040808320888616845282528083208054868c167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092558884528285209585529490925290912080549092161790558a16611a8d5760405173ffffffffffffffffffffffffffffffffffffffff868116825280851691908616907f91ccaa7a278130b65168c3a0c8d3bcae84cf5e43704342bd3ec0b59e59c036db9060200160405180910390a3611ae3565b60405173ffffffffffffffffffffffffffffffffffffffff868116825280851691868216918d16907f8a5f030f5fc13b04a1e4ef7c47177e3d76b0e80e1d9be9843db37caa5b7b9b8f9060200160405180910390a45b60085473ffffffffffffffffffffffffffffffffffffffff1615611c3f576008546040517fb8a1d3c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528b811660248301528c8116604483015286811660648301528581166084830152600092169063b8a1d3c69060a4016020604051808303816000875af1158015611b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb89190612834565b6040517fd8544cf300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301529192509087169063d8544cf390602401600060405180830381600087803b158015611c2557600080fd5b505af1158015611c39573d6000803e3d6000fd5b50505050505b5050505095945050505050565b611c568282611edb565b60008281526003602052604090206109e59082611f96565b611c766113eb565b61146c60005b611ca56000611ca060005473ffffffffffffffffffffffffffffffffffffffff1690565b611c4c565b611cae81611fb8565b60005473ffffffffffffffffffffffffffffffffffffffff1615610df457610df46000611cf060005473ffffffffffffffffffffffffffffffffffffffff1690565b611478565b6000610ecc8383611fe9565b6000610761825490565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b0057611d4b81612013565b611d56836020612032565b604051602001611d67929190612851565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610aed916004016128d2565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b0057600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e5b3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ecc8373ffffffffffffffffffffffffffffffffffffffff8416612275565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610b0057600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ecc8373ffffffffffffffffffffffffffffffffffffffff84166122c4565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610df4816123b7565b6000826000018281548110612000576120006128e5565b9060005260206000200154905092915050565b606061076173ffffffffffffffffffffffffffffffffffffffff831660145b60606000612041836002612914565b61204c906002612743565b67ffffffffffffffff8111156120645761206461292b565b6040519080825280601f01601f19166020018201604052801561208e576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106120c5576120c56128e5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612128576121286128e5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612164846002612914565b61216f906001612743565b90505b600181111561220c577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106121b0576121b06128e5565b1a60f81b8282815181106121c6576121c66128e5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122058161295a565b9050612172565b508315610ecc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610aed565b60008181526001830160205260408120546122bc57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610761565b506000610761565b600081815260018301602052604081205480156123ad5760006122e8600183612756565b85549091506000906122fc90600190612756565b905081811461236157600086600001828154811061231c5761231c6128e5565b906000526020600020015490508087600001848154811061233f5761233f6128e5565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806123725761237261298f565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610761565b6000915050610761565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561243e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ecc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610df457600080fd5b6000806000606084860312156124a557600080fd5b83356124b08161246e565b925060208401356124c08161246e565b915060408401356124d08161246e565b809150509250925092565b6000602082840312156124ed57600080fd5b5035919050565b60006020828403121561250657600080fd5b8135610ecc8161246e565b6000806040838503121561252457600080fd5b8235915060208301356125368161246e565b809150509250929050565b60008083601f84011261255357600080fd5b50813567ffffffffffffffff81111561256b57600080fd5b60208301915083602082850101111561258357600080fd5b9250929050565b600080600080606085870312156125a057600080fd5b84356125ab8161246e565b935060208501356125bb8161246e565b9250604085013567ffffffffffffffff8111156125d757600080fd5b6125e387828801612541565b95989497509550505050565b60006020828403121561260157600080fd5b813561ffff81168114610ecc57600080fd5b6000806040838503121561262657600080fd5b50508035926020909101359150565b6000806040838503121561264857600080fd5b82356126538161246e565b915060208301356125368161246e565b60008060008060008060a0878903121561267c57600080fd5b86356126878161246e565b955060208701356126978161246e565b945060408701356126a78161246e565b935060608701356126b78161246e565b9250608087013567ffffffffffffffff8111156126d357600080fd5b6126df89828a01612541565b979a9699509497509295939492505050565b60006020828403121561270357600080fd5b81358060020b8114610ecc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076157610761612714565b8181038181111561076157610761612714565b60005b8381101561278457818101518382015260200161276c565b50506000910152565b600081518084526127a5816020860160208601612769565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401528087166040840152808616606084015280851660808401525060c060a083015261282860c083018461278d565b98975050505050505050565b60006020828403121561284657600080fd5b8151610ecc8161246e565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612889816017850160208801612769565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516128c6816028840160208801612769565b01602801949350505050565b602081526000610ecc602083018461278d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761076157610761612714565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008161296957612969612714565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000814000a000000000000000000000000799d2b523b515f466cc0f53512c64e91b75d23ba