1 tx
4 calls
constructor
constructor(address multisigWallet, address globalTreasury, address trustedForwarder, address permit2, address[] tokenManagers, address[] operators)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
factorySettings
viewfunction factorySettings() view returns (address globalTreasury, address trustedForwarder, address permit2)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
synthTokens
viewfunction synthTokens(address underlyingAsset) view returns (address synthToken)
TOKEN_MANAGER
viewfunction TOKEN_MANAGER() view returns (bytes32)
createSynthTokens
nonpayablefunction createSynthTokens(tuple[] args) returns (address[])
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pauseTokens
nonpayablefunction pauseTokens(address[] tokens)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setGlobalTreasury
nonpayablefunction setGlobalTreasury(address newTreasury)
setTrustedForwarder
nonpayablefunction setTrustedForwarder(address newForwarder)
unpauseTokens
nonpayablefunction unpauseTokens(address[] tokens)
events
GlobalTreasurySet
event GlobalTreasurySet(address treasury)
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)
TokenCreated
event TokenCreated(address token)
TrustedForwarderSet
event TrustedForwarderSet(address forwarder)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
InvalidAddress
error InvalidAddress()
InvalidSymbol
error InvalidSymbol()
ThisAssetAlreadyUsed
error ThisAssetAlreadyUsed()
creation bytecode
0x60806040523480156200001157600080fd5b50604051620044733803806200447383398101604081905262000034916200047c565b6001600160a01b0386166200005c5760405163e6c4247b60e01b815260040160405180910390fd5b62000069600087620002ea565b5060005b8151811015620001225760006001600160a01b031682828151811062000097576200009762000530565b60200260200101516001600160a01b031603620000c75760405163e6c4247b60e01b815260040160405180910390fd5b620001187f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960001b83838151811062000104576200010462000530565b6020026020010151620002ea60201b60201c565b506001016200006d565b5060005b8251811015620001c75760006001600160a01b031683828151811062000150576200015062000530565b60200260200101516001600160a01b031603620001805760405163e6c4247b60e01b815260040160405180910390fd5b620001bd7f593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a060001b84838151811062000104576200010462000530565b5060010162000126565b506001600160a01b0385161580620001e657506001600160a01b038416155b80620001f957506001600160a01b038316155b15620002185760405163e6c4247b60e01b815260040160405180910390fd5b604080516060810182526001600160a01b038781168083528782166020808501829052928816938501849052600180546001600160a01b031990811684179091556002805482169092179091556003805490911690931790925591519081527f11ce04fcf7163c5a30e064bfdd670756c18ecae4878131d3613514682eed7e47910160405180910390a16040516001600160a01b03851681527fd91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea29060200160405180910390a150505050505062000546565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166200038f576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620003463390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000393565b5060005b92915050565b80516001600160a01b0381168114620003b157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620003de57600080fd5b815160206001600160401b0380831115620003fd57620003fd620003b6565b8260051b604051601f19603f83011681018181108482111715620004255762000425620003b6565b60405293845260208187018101949081019250878511156200044657600080fd5b6020870191505b848210156200047157620004618262000399565b835291830191908301906200044d565b979650505050505050565b60008060008060008060c087890312156200049657600080fd5b620004a18762000399565b9550620004b16020880162000399565b9450620004c16040880162000399565b9350620004d16060880162000399565b60808801519093506001600160401b0380821115620004ef57600080fd5b620004fd8a838b01620003cc565b935060a08901519150808211156200051457600080fd5b506200052389828a01620003cc565b9150509295509295509295565b634e487b7160e01b600052603260045260246000fd5b613f1d80620005566000396000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063a217fddf11620000a3578063da742228116200006e578063da74222814620002b8578063e0956e0f14620002cf578063f549afa014620002f7578063f5b541a6146200031d57600080fd5b8063a217fddf1462000235578063a781d208146200023e578063c609684a146200028a578063d547741f14620002a157600080fd5b806336568abe11620000e457806336568abe14620001ab57806362d8e62614620001c25780637a4df6eb146200020757806391d14854146200021e57600080fd5b806301ffc9a7146200011a578063248a9ca314620001465780632f2ff15d146200017b57806331b8363e1462000194575b600080fd5b620001316200012b36600462000d57565b62000345565b60405190151581526020015b60405180910390f35b6200016c6200015736600462000d8a565b60009081526020819052604090206001015490565b6040519081526020016200013d565b620001926200018c36600462000dc1565b6200037d565b005b62000192620001a536600462000df0565b620003ac565b62000192620001bc36600462000dc1565b62000452565b620001ee620001d336600462000df0565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016200013d565b620001926200021836600462000e0e565b6200048d565b620001316200022f36600462000dc1565b620005a7565b6200016c600081565b6001546002546003546200025f926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016200013d565b620001926200029b36600462000e0e565b620005d0565b62000192620002b236600462000dc1565b620006ea565b62000192620002c936600462000df0565b62000713565b6200016c7f593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a081565b6200030e6200030836600462000efe565b620007b2565b6040516200013d919062000fec565b6200016c7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60006001600160e01b03198216637965db0b60e01b14806200037757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000828152602081905260409020600101546200039a8162000b91565b620003a6838362000ba0565b50505050565b6000620003b98162000b91565b6001600160a01b0382161580620003dd57506001546001600160a01b038381169116145b15620003fc5760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0384169081179091556040519081527f11ce04fcf7163c5a30e064bfdd670756c18ecae4878131d3613514682eed7e47906020015b60405180910390a15050565b6001600160a01b03811633146200047c5760405163334bd91960e11b815260040160405180910390fd5b62000488828262000c38565b505050565b7f593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0620004b98162000b91565b60005b82811015620003a6576000848483818110620004dc57620004dc6200103b565b9050602002016020810190620004f3919062000df0565b6001600160a01b0316036200051b5760405163e6c4247b60e01b815260040160405180910390fd5b8383828181106200053057620005306200103b565b905060200201602081019062000547919062000df0565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200058257600080fd5b505af115801562000597573d6000803e3d6000fd5b50505050806001019050620004bc565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7f593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0620005fc8162000b91565b60005b82811015620003a65760008484838181106200061f576200061f6200103b565b905060200201602081019062000636919062000df0565b6001600160a01b0316036200065e5760405163e6c4247b60e01b815260040160405180910390fd5b8383828181106200067357620006736200103b565b90506020020160208101906200068a919062000df0565b6001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006c557600080fd5b505af1158015620006da573d6000803e3d6000fd5b50505050806001019050620005ff565b600082815260208190526040902060010154620007078162000b91565b620003a6838362000c38565b6000620007208162000b91565b6001600160a01b03821615806200074457506002546001600160a01b038381169116145b15620007635760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527fd91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea29060200162000446565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929620007e08162000b91565b6000835167ffffffffffffffff811115620007ff57620007ff62000e88565b60405190808252806020026020018201604052801562000829578160200160208202803683370190505b50905060005b845181101562000b895760006001600160a01b0316600460008784815181106200085d576200085d6200103b565b602090810291909101810151516001600160a01b03908116835290820192909252604001600020541614620008a55760405163488f506960e01b815260040160405180910390fd5b6000858281518110620008bc57620008bc6200103b565b6020026020010151600001516001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000906573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000930919081019062001077565b90508051600003620009555760405163010466f160e21b815260040160405180910390fd5b60408051808201909152600c81526b02a32b096abb930b83832b2160a51b602082015260009062000987908362000ca7565b90506000620009b983604051806040016040528060018152602001601d60fa1b81525062000ca790919063ffffffff16565b90506000806001600160a01b0316898681518110620009dc57620009dc6200103b565b6020026020010151602001516001600160a01b03161462000a1e5788858151811062000a0c5762000a0c6200103b565b60200260200101516020015162000a2b565b6001546001600160a01b03165b9050600083836001800160009054906101000a90046001600160a01b03168c898151811062000a5e5762000a5e6200103b565b60209081029190910101515160035460405187916001600160a01b03169062000a879062000d49565b62000a989695949392919062001144565b604051809103906000f08015801562000ab5573d6000803e3d6000fd5b5090508087878151811062000ace5762000ace6200103b565b60200260200101906001600160a01b031690816001600160a01b03168152505080600460008c898151811062000b085762000b086200103b565b602090810291909101810151516001600160a01b03908116835282820193909352604091820160002080546001600160a01b031916948416949094179093555190831681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e910160405180910390a150505050508060010190506200082f565b509392505050565b62000b9d813362000d05565b50565b600062000bae8383620005a7565b62000c2f576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905562000be63390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000377565b50600062000377565b600062000c468383620005a7565b1562000c2f576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600162000377565b6040518251601f19906020810182165b858101518482015282018062000cb7575083518184018360208301165b868101518282015284018062000cd45750506000910183810160208101929092528352604090810190525092915050565b62000d118282620005a7565b62000d455760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440160405180910390fd5b5050565b612d4680620011a283390190565b60006020828403121562000d6a57600080fd5b81356001600160e01b03198116811462000d8357600080fd5b9392505050565b60006020828403121562000d9d57600080fd5b5035919050565b80356001600160a01b038116811462000dbc57600080fd5b919050565b6000806040838503121562000dd557600080fd5b8235915062000de76020840162000da4565b90509250929050565b60006020828403121562000e0357600080fd5b62000d838262000da4565b6000806020838503121562000e2257600080fd5b823567ffffffffffffffff8082111562000e3b57600080fd5b818501915085601f83011262000e5057600080fd5b81358181111562000e6057600080fd5b8660208260051b850101111562000e7657600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171562000ec45762000ec462000e88565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562000ef65762000ef662000e88565b604052919050565b6000602080838503121562000f1257600080fd5b823567ffffffffffffffff8082111562000f2b57600080fd5b818501915085601f83011262000f4057600080fd5b81358181111562000f555762000f5562000e88565b62000f65848260051b0162000eca565b818152848101925060069190911b83018401908782111562000f8657600080fd5b928401925b8184101562000fe1576040848903121562000fa65760008081fd5b62000fb062000e9e565b62000fbb8562000da4565b815262000fca86860162000da4565b818701528352604093909301929184019162000f8b565b979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156200102f5783516001600160a01b03168352928401929184019160010162001008565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60005b838110156200106e57818101518382015260200162001054565b50506000910152565b6000602082840312156200108a57600080fd5b815167ffffffffffffffff80821115620010a357600080fd5b818401915084601f830112620010b857600080fd5b815181811115620010cd57620010cd62000e88565b620010e2601f8201601f191660200162000eca565b9150808252856020828501011115620010fa57600080fd5b6200110d81602084016020860162001051565b50949350505050565b600081518084526200113081602086016020860162001051565b601f01601f19169290920160200192915050565b60c0815260006200115960c083018962001116565b82810360208401526200116d818962001116565b6001600160a01b03978816604085015295871660608401525050918416608083015290921660a0909201919091529291505056fe6102006040523480156200001257600080fd5b5060405162002d4638038062002d46833981016040819052620000359162000401565b808680604051806040016040528060018152602001603160f81b815250878a8a816003908162000066919062000545565b50600462000075828262000545565b5050506001600160a01b031660805262000091826005620001fe565b61014052620000a2816006620001fe565b61016052815160208084019190912061010052815190820120610120524660c052620001326101005161012051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60a05250503060e052506001600160a01b038116620001645760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03908116610180526008805460ff1916905583166200019d5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038084166101a0528216620001cc5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166101c052620001e462000237565b6001600160a01b03166101e05250620006ea945050505050565b60006020835110156200021e57620002168362000248565b905062000231565b816200022b848262000545565b5060ff90505b92915050565b60006200024362000294565b905090565b600080829050601f815111156200027f578260405163305a27a960e01b815260040162000276919062000611565b60405180910390fd5b80516200028c8262000646565b179392505050565b6000366014620002a433620002f0565b8015620002b15750808210155b15620002e857600036620002c683856200066b565b620002d39282906200068d565b620002de91620006b9565b60601c9250505090565b339250505090565b6000620002fc60805190565b6001600160a01b0316826001600160a01b0316149050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200034a57818101518382015260200162000330565b50506000910152565b600082601f8301126200036557600080fd5b81516001600160401b038082111562000382576200038262000317565b604051601f8301601f19908116603f01168101908282118183101715620003ad57620003ad62000317565b81604052838152866020858801011115620003c757600080fd5b620003da8460208301602089016200032d565b9695505050505050565b80516001600160a01b0381168114620003fc57600080fd5b919050565b60008060008060008060c087890312156200041b57600080fd5b86516001600160401b03808211156200043357600080fd5b620004418a838b0162000353565b975060208901519150808211156200045857600080fd5b506200046789828a0162000353565b9550506200047860408801620003e4565b93506200048860608801620003e4565b92506200049860808801620003e4565b9150620004a860a08801620003e4565b90509295509295509295565b600181811c90821680620004c957607f821691505b602082108103620004ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000540576000816000526020600020601f850160051c810160208610156200051b5750805b601f850160051c820191505b818110156200053c5782815560010162000527565b5050505b505050565b81516001600160401b0381111562000561576200056162000317565b6200057981620005728454620004b4565b84620004f0565b602080601f831160018114620005b15760008415620005985750858301515b600019600386901b1c1916600185901b1785556200053c565b600085815260208120601f198616915b82811015620005e257888601518255948401946001909101908401620005c1565b5085821015620006015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006328160408501602087016200032d565b601f01601f19169190910160400192915050565b80516020808301519190811015620004ea5760001960209190910360031b1b16919050565b818103818111156200023157634e487b7160e01b600052601160045260246000fd5b600080858511156200069e57600080fd5b83861115620006ac57600080fd5b5050820193919092039150565b6001600160601b03198135818116916014851015620006e25780818660140360031b1b83161692505b505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516125376200080f600039600081816103fe015281816108860152610b6d0152600081816102ea015281816106db0152818161072b015281816109e70152610aca01526000818161033a0152818161056201528181610605015281816106b20152818161070a015281816107570152818161094a01528181610a1a0152610aa90152600081816101f401528181610e43015281816112eb015281816113ed015281816114eb0152611578015260006112c001526000611293015260006111420152600061111a015260006110750152600061109f015260006110c90152600081816102aa01528181610371015261164201526125376000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f957806395d89b4111610097578063c45a015511610071578063c45a0155146103f9578063d505accf14610420578063dd62ed3e14610433578063fc9bca1d1461046c57600080fd5b806395d89b41146103cb578063a17438c2146103d3578063a9059cbb146103e657600080fd5b80637da0a877116100d35780637da0a8771461036f5780637ecebe00146103955780638456cb59146103a857806384b0196e146103b057600080fd5b806370a082311461030c5780637158da7c146103355780637647691d1461035c57600080fd5b8063313ce567116101665780634980f288116101405780634980f28814610287578063572b6c051461029a5780635c975abb146102da57806361d027b3146102e557600080fd5b8063313ce567146102685780633644e515146102775780633f4ba83a1461027f57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806312261ee7146101ef57806313bac8201461022e57806318160ddd1461024357806323b872dd14610255575b600080fd5b6101b661047f565b6040516101c39190611d7d565b60405180910390f35b6101df6101da366004611da5565b610511565b60405190151581526020016101c3565b6102167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101c3565b61024161023c366004611dd1565b610535565b005b6002545b6040519081526020016101c3565b6101df610263366004611e01565b610845565b604051601281526020016101c3565b610247610875565b610241610884565b610247610295366004611e42565b6108e7565b6101df6102a8366004611e5b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b60085460ff166101df565b6102167f000000000000000000000000000000000000000000000000000000000000000081565b61024761031a366004611e5b565b6001600160a01b031660009081526020819052604090205490565b6102167f000000000000000000000000000000000000000000000000000000000000000081565b61024161036a366004611dd1565b6108f2565b7f0000000000000000000000000000000000000000000000000000000000000000610216565b6102476103a3366004611e5b565b610b4d565b610241610b6b565b6103b8610bcc565b6040516101c39796959493929190611e78565b6101b6610c12565b6102416103e1366004611f72565b610c21565b6101df6103f4366004611da5565b610c3d565b6102167f000000000000000000000000000000000000000000000000000000000000000081565b61024161042e366004611ff5565b610c55565b610247610441366004612066565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61024161047a366004612094565b610d94565b60606003805461048e90612124565b80601f01602080910402602001604051908101604052809291908181526020018280546104ba90612124565b80156105075780601f106104dc57610100808354040283529160200191610507565b820191906000526020600020905b8154815290600101906020018083116104ea57829003601f168201915b5050505050905090565b60008061051c610dbf565b9050610529818585610dc9565b60019150505b92915050565b818060000361055757604051631f2a200560e01b815260040160405180910390fd5b6000198303610602577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231610597610dbf565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156105db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ff9190612158565b92505b827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd62ed3e61063a610dbf565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a89190612158565b10610705576107007f00000000000000000000000000000000000000000000000000000000000000006106d9610dbf565b7f000000000000000000000000000000000000000000000000000000000000000086610ddb565b610750565b6107507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000085610e3b565b60006107df7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190612171565b601286610eee565b90506107eb8382610f57565b826001600160a01b03166107fd610dbf565b6001600160a01b03167f29b3b451f9779df34ec8a67ec6c96fa910b17a579a66b7428d94f481be6900d98360405161083791815260200190565b60405180910390a350505050565b600080610850610dbf565b905061085d858285610f91565b610868858585611009565b60019150505b9392505050565b600061087f611068565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108b6610dbf565b6001600160a01b0316146108dd57604051630636a15760e11b815260040160405180910390fd5b6108e5611193565b565b600061052f826111eb565b818060000361091457604051631f2a200560e01b815260040160405180910390fd5b6000198314801561092e575061092b61031a610dbf565b15155b156109415761093e61031a610dbf565b92505b60006109d060127f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca9190612171565b86610eee565b604051636eb1769f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015230602483015291925082917f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90604401602060405180830381865afa158015610a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a859190612158565b1015610aa457604051635df1f5c360e01b815260040160405180910390fd5b610af07f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008584610ddb565b610b01610afb610dbf565b85611218565b826001600160a01b0316610b13610dbf565b6001600160a01b03167f742cbb4a6bddd5e23aa0c14356065c236bdbc921cddb7f1f763161eb2030f3ef8660405161083791815260200190565b6001600160a01b03811660009081526007602052604081205461052f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b9d610dbf565b6001600160a01b031614610bc457604051630636a15760e11b815260040160405180910390fd5b6108e561124e565b600060608060008060006060610be061128c565b610be86112b9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60606004805461048e90612124565b610c2c8383836112e6565b610c368585610535565b5050505050565b600080610c48610dbf565b9050610529818585611009565b83421115610c7e5760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610ccb8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610d26826111eb565b90506000610d368287878761147d565b9050896001600160a01b0316816001600160a01b031614610d7d576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610c75565b610d888a8a8a610dc9565b50505050505050505050565b610daa610da46020860186611e5b565b826114ab565b610db78686868686610c21565b505050505050565b600061087f611632565b610dd683838360016116a7565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610e3590859061176e565b50505050565b8015610dd6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166336c78516610e78610dbf565b6040516001600160e01b031960e084901b1681526001600160a01b039182166004820152818616602482015281851660448201529086166064820152608401600060405180830381600087803b158015610ed157600080fd5b505af1158015610ee5573d6000803e3d6000fd5b50505050505050565b60008260ff168460ff161015610f245760ff80851690841603610f1281600a612288565b610f1c9084612294565b91505061086e565b8260ff168460ff161115610f505760ff80841690851603610f4681600a612288565b610f1c90846122ab565b5092915050565b6001600160a01b038216610f815760405163ec442f0560e01b815260006004820152602401610c75565b610f8d600083836117d1565b5050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610e355781811015610ffa57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610c75565b610e35848484840360006116a7565b6001600160a01b03831661103357604051634b637e8f60e11b815260006004820152602401610c75565b6001600160a01b03821661105d5760405163ec442f0560e01b815260006004820152602401610c75565b610dd68383836117d1565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156110c157507f000000000000000000000000000000000000000000000000000000000000000046145b156110eb57507f000000000000000000000000000000000000000000000000000000000000000090565b61087f604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b61119b6117dc565b6008805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111ce610dbf565b6040516001600160a01b03909116815260200160405180910390a1565b600061052f6111f8611068565b8360405161190160f01b8152600281019290925260228201526042902090565b6001600160a01b03821661124257604051634b637e8f60e11b815260006004820152602401610c75565b610f8d826000836117d1565b6112566117ff565b6008805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111ce610dbf565b606061087f7f00000000000000000000000000000000000000000000000000000000000000006005611823565b606061087f7f00000000000000000000000000000000000000000000000000000000000000006006611823565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663927da105611320610dbf565b61132d6020890189611e5b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152306044820152606401606060405180830381865afa15801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a291906122e1565b5090925090506113b86040860160208701611e5b565b6001600160a01b0316826001600160a01b03161480156113df5750428165ffffffffffff16115b156113eb575050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b67b570611422610dbf565b8787876040518563ffffffff1660e01b81526004016114449493929190612357565b600060405180830381600087803b15801561145e57600080fd5b505af1158015611472573d6000803e3d6000fd5b505050505050505050565b60008060008061148f888888886118ce565b92509250925061149f828261199d565b50909695505050505050565b600019826001600160a01b031663dd62ed3e6114c5610dbf565b60405160e083901b6001600160e01b03191681526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091166024820152604401602060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115569190612158565b0361155f575050565b816001600160a01b031663d505accf611576610dbf565b7f000000000000000000000000000000000000000000000000000000000000000060001985356115ac604088016020890161240b565b604080516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601526044850192909252606484015260ff16608483015284013560a4820152606084013560c482015260e401600060405180830381600087803b15801561161e57600080fd5b505af1158015610db7573d6000803e3d6000fd5b6000366014336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561166f5750808210155b1561169f576000366116818385612428565b61168c92829061243b565b61169591612465565b60601c9250505090565b339250505090565b6001600160a01b0384166116d15760405163e602df0560e01b815260006004820152602401610c75565b6001600160a01b0383166116fb57604051634a1406b160e11b815260006004820152602401610c75565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610e3557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083791815260200190565b60006117836001600160a01b03841683611a56565b905080516000141580156117a85750808060200190518101906117a6919061249a565b155b15610dd657604051635274afe760e01b81526001600160a01b0384166004820152602401610c75565b610dd6838383611a64565b60085460ff166108e557604051638dfc202b60e01b815260040160405180910390fd5b60085460ff16156108e55760405163d93c066560e01b815260040160405180910390fd5b606060ff831461183d5761183683611a77565b905061052f565b81805461184990612124565b80601f016020809104026020016040519081016040528092919081815260200182805461187590612124565b80156118c25780601f10611897576101008083540402835291602001916118c2565b820191906000526020600020905b8154815290600101906020018083116118a557829003601f168201915b5050505050905061052f565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156119095750600091506003905082611993565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561195d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661198957506000925060019150829050611993565b9250600091508190505b9450945094915050565b60008260038111156119b1576119b16124bc565b036119ba575050565b60018260038111156119ce576119ce6124bc565b036119ec5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611a0057611a006124bc565b03611a215760405163fce698f760e01b815260048101829052602401610c75565b6003826003811115611a3557611a356124bc565b03610f8d576040516335e2f38360e21b815260048101829052602401610c75565b606061086e83836000611ab6565b611a6c6117ff565b610dd6838383611b53565b60606000611a8483611c7d565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b606081471015611adb5760405163cd78605960e01b8152306004820152602401610c75565b600080856001600160a01b03168486604051611af791906124d2565b60006040518083038185875af1925050503d8060008114611b34576040519150601f19603f3d011682016040523d82523d6000602084013e611b39565b606091505b5091509150611b49868383611ca5565b9695505050505050565b6001600160a01b038316611b7e578060026000828254611b7391906124ee565b90915550611bf09050565b6001600160a01b03831660009081526020819052604090205481811015611bd15760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610c75565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611c0c57600280548290039055611c2b565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7091815260200190565b60405180910390a3505050565b600060ff8216601f81111561052f57604051632cd44ac360e21b815260040160405180910390fd5b606082611cba57611cb582611d01565b61086e565b8151158015611cd157506001600160a01b0384163b155b15611cfa57604051639996b31560e01b81526001600160a01b0385166004820152602401610c75565b508061086e565b805115611d115780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b60005b83811015611d48578181015183820152602001611d30565b50506000910152565b60008151808452611d69816020860160208601611d2d565b601f01601f19169290920160200192915050565b60208152600061086e6020830184611d51565b6001600160a01b0381168114611d2a57600080fd5b60008060408385031215611db857600080fd5b8235611dc381611d90565b946020939093013593505050565b60008060408385031215611de457600080fd5b823591506020830135611df681611d90565b809150509250929050565b600080600060608486031215611e1657600080fd5b8335611e2181611d90565b92506020840135611e3181611d90565b929592945050506040919091013590565b600060208284031215611e5457600080fd5b5035919050565b600060208284031215611e6d57600080fd5b813561086e81611d90565b60ff60f81b881681526000602060e06020840152611e9960e084018a611d51565b8381036040850152611eab818a611d51565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eff57835183529284019291840191600101611ee3565b50909c9b505050505050505050505050565b600060c08284031215611f2357600080fd5b50919050565b60008083601f840112611f3b57600080fd5b50813567ffffffffffffffff811115611f5357600080fd5b602083019150836020828501011115611f6b57600080fd5b9250929050565b60008060008060006101208688031215611f8b57600080fd5b853594506020860135611f9d81611d90565b9350611fac8760408801611f11565b925061010086013567ffffffffffffffff811115611fc957600080fd5b611fd588828901611f29565b969995985093965092949392505050565b60ff81168114611d2a57600080fd5b600080600080600080600060e0888a03121561201057600080fd5b873561201b81611d90565b9650602088013561202b81611d90565b95506040880135945060608801359350608088013561204981611fe6565b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561207957600080fd5b823561208481611d90565b91506020830135611df681611d90565b6000806000806000808688036101a08112156120af57600080fd5b8735965060208801356120c181611d90565b95506120d08960408a01611f11565b945061010088013567ffffffffffffffff8111156120ed57600080fd5b6120f98a828b01611f29565b909550935050608061011f198201121561211257600080fd5b50610120870190509295509295509295565b600181811c9082168061213857607f821691505b602082108103611f2357634e487b7160e01b600052602260045260246000fd5b60006020828403121561216a57600080fd5b5051919050565b60006020828403121561218357600080fd5b815161086e81611fe6565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121df5781600019048211156121c5576121c561218e565b808516156121d257918102915b93841c93908002906121a9565b509250929050565b6000826121f65750600161052f565b816122035750600061052f565b816001811461221957600281146122235761223f565b600191505061052f565b60ff8411156122345761223461218e565b50506001821b61052f565b5060208310610133831016604e8410600b8410161715612262575081810a61052f565b61226c83836121a4565b80600019048211156122805761228061218e565b029392505050565b600061086e83836121e7565b808202811582820484141761052f5761052f61218e565b6000826122c857634e487b7160e01b600052601260045260246000fd5b500490565b65ffffffffffff81168114611d2a57600080fd5b6000806000606084860312156122f657600080fd5b835161230181611d90565b6020850151909350612312816122cd565b6040850151909250612323816122cd565b809150509250925092565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03858116825260009061010090863561237681611d90565b818116602086015250602087013561238d81611d90565b81811660408601525060408701356123a4816122cd565b65ffffffffffff8082166060870152606089013591506123c3826122cd565b166080858101919091528701356123d981611d90565b81811660a0860152505060a086013560c08401528060e0840152612400818401858761232e565b979650505050505050565b60006020828403121561241d57600080fd5b813561086e81611fe6565b8181038181111561052f5761052f61218e565b6000808585111561244b57600080fd5b8386111561245857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156124925780818660140360031b1b83161692505b505092915050565b6000602082840312156124ac57600080fd5b8151801515811461086e57600080fd5b634e487b7160e01b600052602160045260246000fd5b600082516124e4818460208701611d2d565b9190910192915050565b8082018082111561052f5761052f61218e56fea264697066735822122048157c8164d184618efdfa8af4ef8d17f608251f2cd0dc6062ded08b353a14a964736f6c63430008180033a26469706673582212206d9ed64717f6060f0670295a129a34b50a92e5e1f4d18e47df7701e4e13282d364736f6c634300081800330000000000000000000000004722a337b03f5252ab3c53b5c5399f489e46789600000000000000000000000023ca477089466ac4d563a89e4f0df8c46b92735d000000000000000000000000735023ec9a51eb41c9e298fa74bed454d581a471000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ca477089466ac4d563a89e4f0df8c46b92735d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000646169ae184d94cf0f632d94e3e08eca6163d63