0 txs
0 calls
constructor
constructor(address admin)
functions
allPairs
viewfunction allPairs(uint256) view returns (address)
allPairsLength
viewfunction allPairsLength() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
feeTo
viewfunction feeTo() view returns (address)
getPair
viewfunction getPair(address tokenA, address tokenB) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
PAIR_CREATOR_ROLE
viewfunction PAIR_CREATOR_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
template
viewfunction template() view returns (address)
createPair
nonpayablefunction createPair(address tokenA, address tokenB) returns (address pair)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setFeeTo
nonpayablefunction setFeeTo(address _feeTo)
events
PairCreated
event PairCreated(address indexed token0, address indexed token1, address pair, uint256)
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)
errors
No errors.
creation bytecode
0x60a03461012857601f613a3838819003918201601f19168301926001600160401b039290918385118386101761011257816020928492604097885283398101031261012857516001600160a01b03808216918290036101285783516129db808201948511828610176101125761105d823980600094039084f0801561010857166080528180528160205282822081835260205260ff8383205416156100bd575b8251610f2f908161012e823960805181818161059201526109080152f35b81805281602052828220818352602052828220600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4388061009f565b84513d85823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe608060408181526004918236101561001657600080fd5b600092833560e01c918263017e7e5814610b4c5750816301ffc9a714610aab5781631e3dd18b14610a53578163248a9ca314610a295781632f2ff15d1461097f57816336568abe1461094b578163574f2ba31461092c5781636f2ddd93146108e857816391d14854146108a3578163a217fddf14610888578163c9c65396146104bb578163d547741f1461047b578163e6a43905146102de578163f46901ed14610107575063f6ab9bb0146100ca57600080fd5b34610103578160031936011261010357602090517f02d639b3242e624c4062ce3346179a769447ef0a01fb09608afc904d0268f1908152f35b5080fd5b919050346102da5760203660031901126102da57610123610b87565b91600080526000602052816000203360005260205260ff8260002054161561017157836001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff19600154161760015580f35b61017a33610dff565b600083519261018884610bc8565b604284526020840160603682378451156102c757603090538351906001918210156102b45790607860218601536041915b818311610245575050506102405761023261020892601161024095519485947f416363657373436f6e74726f6c3a206163636f756e742000000000000000000060208701526037860190610b9d565b7f206973206d697373696e6720726f6c652000000000000000000000000000000081520190610b9d565b0390601f1982018152610bfa565b600080fd5b909192600f8116601081101561029f576f181899199a1a9b1b9c1cb0b131b232b360811b901a6102758588610dd8565b53811c92801561028a576000190191906101b9565b601182634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b826032602492634e487b7160e01b835252fd5b602483603284634e487b7160e01b835252fd5b8280fd5b8284346104785781600319360112610478576103096102fb610b87565b610303610b71565b90610eca565b939083519485927f6f2ddd93000000000000000000000000000000000000000000000000000000008452602096879181305afa92831561046e57849361042a575b506001600160a01b0393926055926103926103a060379489519283918c83019586906028926bffffffffffffffffffffffff19809260601b16835260601b1660148201520190565b03601f198101835282610bfa565b51902086517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606092831b60148201527f5af43d82803e903d91602b57fd5bf3ff0000000000000000000000000000000060288201523090921b6038830152604c820152818120606c820152012090813b156104225750915b5191168152f35b90509161041b565b9092508581813d8311610467575b6104428183610bfa565b8101031261046357516001600160a01b03811681036104635791603761034a565b8380fd5b503d610438565b85513d86823e3d90fd5b80fd5b919050346102da57806003193601126102da576104b891356104b360016104a0610b71565b9383875286602052862001543390610c1c565b610d63565b80f35b8383346101035780600319360112610103576104d5610b87565b916104de610b71565b937f02d639b3242e624c4062ce3346179a769447ef0a01fb09608afc904d0268f19093848352602094838652848420848052865260ff858520541615610742575b506037949561052d91610eca565b91909284518781019061056781610392878986906028926bffffffffffffffffffffffff19809260601b16835260601b1660148201520190565b5190208551907f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060601b60148301527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288301526001600160a01b0397889284f51695861561010357863b1561010357808651957f485cc9550000000000000000000000000000000000000000000000000000000087521693848487015216938460248201528181604481838b5af180156107385761070e575b509060025491680100000000000000008310156106fc575060018201806002558210156106e7575060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace018473ffffffffffffffffffffffffffffffffffffffff198254161790557f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e98360025481519087825288820152a351908152f35b603290634e487b7160e01b6000525260246000fd5b6041602492634e487b7160e01b835252fd5b67ffffffffffffffff811161072557855287610645565b506041602492634e487b7160e01b835252fd5b86513d84823e3d90fd5b808452838652848420338552865260ff858520541661051f579050848461076833610dff565b9281519461077586610bc8565b60428652838601606036823786511561087557603090538551906001918210156108625790607860218801536041915b8183116107f7575050506107f3576104789360116102087f416363657373436f6e74726f6c3a206163636f756e74200000000000000000009561023294519687968701526037860190610b9d565b8480fd5b909192600f8116601081101561084f576f181899199a1a9b1b9c1cb0b131b232b360811b901a610827858a610dd8565b53811c92801561083c576000190191906107a5565b602489601184634e487b7160e01b835252fd5b60248a603285634e487b7160e01b835252fd5b876032602492634e487b7160e01b835252fd5b602488603284634e487b7160e01b835252fd5b50503461010357816003193601126101035751908152602090f35b9050346102da57816003193601126102da578160209360ff926108c4610b71565b903582528186526001600160a01b0383832091168252855220541690519015158152f35b505034610103578160031936011261010357602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346101035781600319360112610103576020906002549051908152f35b919050346102da5736600319011261010357610965610b71565b336001600160a01b038216036102da576104b89135610d63565b9050346102da57816003193601126102da57359061099b610b71565b90828452836020526109b4600182862001543390610c1c565b828452836020526001600160a01b0381852092169182855260205260ff8185205416156109df578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b9050346102da5760203660031901126102da57816020936001923581528085522001549051908152f35b9050346102da5760203660031901126102da57356002548110156102da576001600160a01b03906002602094527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0154169051908152f35b9050346102da5760203660031901126102da5735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036102da57602092507f7965db0b000000000000000000000000000000000000000000000000000000008214918215610b22575b50519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000014915038610b19565b8490346101035781600319360112610103576020906001600160a01b03600154168152f35b602435906001600160a01b038216820361024057565b600435906001600160a01b038216820361024057565b9081519160005b838110610bb5575050016000815290565b8060208092840101518185015201610ba4565b6080810190811067ffffffffffffffff821117610be457604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610be457604052565b600091818352826020526001600160a01b036040842091169081845260205260ff60408420541615610c4d57505050565b610c5690610dff565b9060405190610c6482610bc8565b60428252602082016060368237825115610d4f57603090538151600190811015610d4f57607860218401536041905b808211610ce35750506102da57610478916102326102089260116040519485947f416363657373436f6e74726f6c3a206163636f756e742000000000000000000060208701526037860190610b9d565b9091600f81166010811015610d3b576f181899199a1a9b1b9c1cb0b131b232b360811b901a610d128486610dd8565b5360041c918015610d27576000190190610c93565b602486634e487b7160e01b81526011600452fd5b602487634e487b7160e01b81526032600452fd5b602485634e487b7160e01b81526032600452fd5b90600091808352826020526001600160a01b036040842092169182845260205260ff604084205416610d9457505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b908151811015610de9570160200190565b634e487b7160e01b600052603260045260246000fd5b604051906060820182811067ffffffffffffffff821117610be457604052602a8252602082016040368237825115610de957603090538151600190811015610de957607860218401536029905b808211610e5c5750506102405790565b9091600f81166010811015610eb5576f181899199a1a9b1b9c1cb0b131b232b360811b901a610e8b8486610dd8565b5360041c918015610ea0576000190190610e4c565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b90916001600160a01b0391828416838216818114610240571015610ef457925b9183161561024057565b610eea56fea2646970667358221220666122432b07aed5630f2095fe8e963fc4f56191f57cae7fa56a5d0441799be364736f6c6343000811003360a08060405234620000e3576000805460ff8160081c161590818092620000d5575b8015620000bc575b15620000b85760ff198116600117835581620000a6575b50336080526200006b575b6040516128f29081620000e9823960805181818161050f015261233b0152f35b805461ff0019169055600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a138806200004b565b61ffff19166101011782553862000040565b8280fd5b50303b158015620000295750600160ff82161462000029565b50600160ff82161062000021565b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c8063022c0d9f1461169557806306fdde03146115ef5780630902f1ac14611595578063095ea7b31461156e5780630dfe1681146115475780631296ee621461150f57806318160ddd146114f157806323b872dd146114d7578063313ce567146114bb5780633177029f146114835780633644e51514611460578063395093511461140e5780634000aea0146113f4578063485cc95514610f005780635909c0d514610ee15780635a3d549314610ec25780636a62784214610c0c57806370a0823114610bd45780637464fc3d14610bb55780637ecebe0014610b7d57806389afcb441461084c57806395d89b4114610763578063a457c2d714610710578063a9059cbb146106de578063ba9a7a56146106c1578063bc25cf7714610587578063c1d34b8914610533578063c45a0155146104ef578063cae9ca51146104d5578063d21220a7146104ae578063d505accf14610346578063d8fbe99414610312578063dd62ed3e146102c25763fff6cae91461019357600080fd5b346102bf57806003193601126102bf57600260cc54146102bf57600260cc556001600160a01b038060fe54169060405190816370a0823160e01b9384825230600483015281602460209586935afa9182156102b45783918693610283575b5060ff54169360246040518096819382523060048301525afa918215610278578492610241575b50610239925061010054916001600160701b03808460701c16931691612197565b600160cc5580f35b90915082813d8311610271575b6102588183611bfa565b8101031261026c5761023991519038610218565b600080fd5b503d61024e565b6040513d86823e3d90fd5b8281939294503d83116102ad575b61029b8183611bfa565b8101031261026c5782905191386101f1565b503d610291565b6040513d87823e3d90fd5b80fd5b50346102bf5760403660031901126102bf576102dc611afd565b60406102e6611b13565b926001600160a01b03809316815260346020522091166000526020526020604060002054604051908152f35b50346102bf5761033c60209161032736611b71565b916040519361033585611ba6565b8452612819565b6040519015158152f35b50346102bf5760e03660031901126102bf57610360611afd565b610368611b13565b6044359060843560643560ff821682036104aa578042116104aa576001600160a01b039081861692838852609960205260408820908154916001830190556040519260208401927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452866040860152858816606086015288608086015260a085015260c084015260c0835260e083019183831067ffffffffffffffff8411176104945761047e9361047693604052519020610422611f53565b916040519160208301937f19010000000000000000000000000000000000000000000000000000000000008552602284015260428301526042825261046682611bde565b60c4359260a43592519020611e9e565b919091611e47565b16036104905761048d92611de6565b80f35b8380fd5b634e487b7160e01b600052604160045260246000fd5b8580fd5b50346102bf57806003193601126102bf5760206001600160a01b0360ff5416604051908152f35b50346102bf57602061033c6104e936611c7f565b91612859565b50346102bf57806003193601126102bf5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102bf5760803660031901126102bf5761054d611afd565b610555611b13565b916064359067ffffffffffffffff82116102bf57602061033c858561057d3660048801611c38565b9160443591612819565b50346102bf576020806003193601126106bd576105a2611afd565b90600260cc54146106b957600260cc556001600160a01b03918260fe54169260ff5416916040516370a0823160e01b8082523060048301528282602481895afa91821561067f57879261068a575b506106156001600160701b03968561060f610100958a875416906120fc565b9161245a565b6040519081523060048201528281602481885afa92831561067f57879361064d575b5050906102399461060f925460701c16906120fc565b90809350813d8311610678575b6106648183611bfa565b8101031261026c579051908461060f610637565b503d61065a565b6040513d89823e3d90fd5b9091508281813d83116106b2575b6106a28183611bfa565b8101031261026c575190386105f0565b503d610698565b8280fd5b5080fd5b50346102bf57806003193601126102bf5760206040516103e88152f35b50346102bf5760403660031901126102bf576107056106fb611afd565b6024359033611d6e565b602060405160018152f35b50346102bf5760403660031901126102bf5761072a611afd565b6024353383526034602052604083206001600160a01b038316600052602052604060002054818110610490576107059350039033611de6565b50346102bf57806003193601126102bf57604051908060375461078581611cc5565b8085529160019180831690811561082257506001146107c7575b6107c3856107af81870382611bfa565b604051918291602083526020830190611b4c565b0390f35b9250603783527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae5b82841061080a5750505081016020016107af826107c361079f565b805460208587018101919091529093019281016107ef565b8695506107c3969350602092506107af94915060ff191682840152151560051b820101929361079f565b50346102bf57602090816003193601126102bf57610868611afd565b90600260cc54146102bf57600260cc55610898610100546001600160701b0391828216928260701c169160e01c90565b509390926001600160a01b038060fe5416938160ff541696604051916370a0823160e01b9889845230600485015286846024818b5afa938415610b72578294610b43575b5060405199808b523060048c0152878b602481855afa988915610b38578a9b849b9a610b05575b503084526033895261093f61091d8660408720549c612300565b966109336109388d610933603554948592612109565b61211c565b9d8d612109565b998b151580610afc575b15610af8573015610af85730855260338a5260408520548181106104aa579185828c936024979695036040832055610983816035546120fc565b6035556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843092a36109bc8d8b8361245a565b6109c78c8b8661245a565b604051948580928582523060048301525afa928315610278579089918594610ac7575b5060246040518094819382523060048301525afa928315610abb5792610a85575b5098610a1a929160409a612197565b610a60575b855191858352848484015216907fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496863392a3600160cc558351928352820152f35b610a7c610100546001600160701b03808260701c169116612109565b61010355610a1f565b929150988683813d8311610ab4575b610a9e8183611bfa565b8101031261026c57915191989091906040610a0b565b503d610a94565b604051903d90823e3d90fd5b8281939295503d8311610af1575b610adf8183611bfa565b8101031261026c5788905192386109ea565b503d610ad5565b8480fd5b508a1515610949565b8980929c50819b503d8311610b31575b610b1f8183611bfa565b8101031261026c578a98519938610903565b503d610b15565b6040513d85823e3d90fd5b9093508681813d8311610b6b575b610b5b8183611bfa565b8101031261026c575192386108dc565b503d610b51565b6040513d84823e3d90fd5b50346102bf5760203660031901126102bf5760406020916001600160a01b03610ba4611afd565b168152609983522054604051908152f35b50346102bf57806003193601126102bf57602061010354604051908152f35b50346102bf5760203660031901126102bf5760406020916001600160a01b03610bfb611afd565b168152603383522054604051908152f35b50346102bf57602090816003193601126102bf57610c28611afd565b600260cc54146106bd57600260cc55610c57610100546001600160701b0391828216928260701c169160e01c90565b5092906001600160a01b03928360fe5416946040519487866024816370a0823160e01b9a8b82523060048301525afa9586156102b4579088918697610e91575b5060ff54169660246040518099819382523060048301525afa958615610278578496610e62575b506001600160701b039283811696610cd688886120fc565b9685841694610ce586846120fc565b97610cf08686612300565b966035549b8c15600014610e2b575050610d12610d0d8a8c612109565b6125ec565b6103e7198101908111610e17579a6103e890818101809111610e015760355561dead60005260338d52604060002090815491818301809311610e01578e60009261dead947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9355604051908152a35b8a156102bf575090610d998a610d9e9695949361213c565b612197565b610de1575b50604051918252838201527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f60403392a2600160cc55604051908152f35b610df7906101005490808260701c169116612109565b6101035538610da3565b634e487b7160e01b600052601160045260246000fd5b602482634e487b7160e01b81526011600452fd5b90610933610e44610e4b938f959f8f9061093391612109565b938c612109565b80821015610e5b57505b99610d81565b9050610e55565b9095508681813d8311610e8a575b610e7a8183611bfa565b8101031261026c57519438610cbe565b503d610e70565b8281939298503d8311610ebb575b610ea98183611bfa565b8101031261026c578790519538610c97565b503d610e9f565b50346102bf57806003193601126102bf57602061010254604051908152f35b50346102bf57806003193601126102bf57602061010154604051908152f35b50346102bf5760403660031901126102bf57610f1a611afd565b610f22611b13565b90825460ff8160081c16158080916113e7575b80156113d0575b15610af857600191818360ff1983161787556113bf575b50610f5d83611ff8565b92610f6785611ff8565b610ff4602460405180938851610f858160209b8c8087019101611b29565b82017f2f000000000000000000000000000000000000000000000000000000000000008a820152610fbf825180938c602185019101611b29565b017f204c5000000000000000000000000000000000000000000000000000000000006021820152036004810184520182611bfa565b610ffc611fbf565b9060ff885460081c16156111a157815167ffffffffffffffff928382116113ab57819061102a603654611cc5565b601f811161133c575b508890601f83116001146112bd578b926112b2575b5050600019600383901b1c191690861b176036555b805191821161129e578190611073603754611cc5565b601f811161122f575b508690601f83116001146111b05789926111a5575b5050600019600383901b1c191690841b176037555b6110ae611fbf565b9486549560ff8760081c16156111a1577f3100000000000000000000000000000000000000000000000000000000000000866040516110ec81611bc2565b87815201528581519101206065557fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66066558360cc556001600160a01b0390817fffffffffffffffffffffffff000000000000000000000000000000000000000093168360fe54161760fe55169060ff54161760ff5561116a578380f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989261ff0019168455604051908152a13880808380f35b8780fd5b015190503880611091565b60378a528693507f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae9190601f1984168b5b8a8282106112195750508411611200575b505050811b016037556110a6565b015160001960f88460031b161c191690553880806111f2565b8385015186558a979095019493840193016111e1565b909150603789527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae601f840160051c810191888510611294575b84939291601f89920160051c01915b82811061128657505061107c565b8b8155859450889101611278565b9091508190611269565b602488634e487b7160e01b81526041600452fd5b015190503880611048565b60368c528893507f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b89190601f1984168d5b8c828210611326575050841161130d575b505050811b0160365561105d565b015160001960f88460031b161c191690553880806112ff565b8385015186558c979095019493840193016112ee565b90915060368b527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b8601f840160051c8101918a85106113a1575b84939291601f8b920160051c01915b828110611393575050611033565b8d81558594508a9101611385565b9091508190611376565b60248a634e487b7160e01b81526041600452fd5b61ffff191661010117855538610f53565b50303b158015610f3c5750600160ff831614610f3c565b50600160ff831610610f35565b50346102bf57602061033c61140836611c7f565b9161273a565b50346102bf5760403660031901126102bf5761070590604061142e611afd565b913381526034602052206001600160a01b038216600052602052611459602435604060002054611d61565b9033611de6565b50346102bf57806003193601126102bf57602061147b611f53565b604051908152f35b50346102bf5760403660031901126102bf5761033c6020916114a3611afd565b604051916114b083611ba6565b825260243590612859565b50346102bf57806003193601126102bf57602060405160128152f35b50346102bf57602061033c6114eb36611b71565b91611cff565b50346102bf57806003193601126102bf576020603554604051908152f35b50346102bf5760403660031901126102bf5761033c60209161152f611afd565b6040519161153c83611ba6565b82526024359061273a565b50346102bf57806003193601126102bf5760206001600160a01b0360fe5416604051908152f35b50346102bf5760403660031901126102bf5761070561158b611afd565b6024359033611de6565b50346102bf57806003193601126102bf57606063ffffffff6115cd610100546001600160701b0391828216928260701c169160e01c90565b909291604051936001600160701b038092168552166020840152166040820152f35b50346102bf57806003193601126102bf57604051908060365461161181611cc5565b80855291600191808316908115610822575060011461163a576107c3856107af81870382611bfa565b9250603683527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b85b82841061167d5750505081016020016107af826107c361079f565b80546020858701810191909152909301928101611662565b50346102bf5760803660031901126102bf576001600160a01b0380604435169081604435036106b95760643567ffffffffffffffff91828211610af85736602383011215610af85781600401358381116104aa5736602482850101116104aa57600260cc54146104aa57600260cc55600435159384158095611af2575b15611aee57611737610100546001600160701b0391828216928260701c169160e01c90565b50929091886001600160701b03968785166004351080611ae1575b156106bd578660fe54169660ff541698878b141580611ad7575b156106b957611ac3575b602435611aaf575b836119f4575b50505050604051926020846024816370a0823160e01b948582523060048301525afa9384156119e95788946119b4575b5060209060246040518098819382523060048301525afa94851561067f578795611980575b506117e86004358583166120fc565b831115611979576118066118006004358684166120fc565b846120fc565b945b6118166024358685166120fc565b8111156119725761183461182e6024358786166120fc565b826120fc565b945b8615158715611969575b15611965576103e88086028681048214871517156119515760058902908982046005148a15171561193d5790611875916120fc565b908084029084820414841517156119515760058802908882046005148915171561193d57916118aa6118b0926118bc946120fc565b90612109565b91808616908516612109565b90620f42409182810292818404149015171561192957106111a1576118e093612197565b6040519182526020820152600435604082015260243560608201527fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260803392a3600160cc5580f35b60248a634e487b7160e01b81526011600452fd5b60248c634e487b7160e01b81526011600452fd5b60248b634e487b7160e01b81526011600452fd5b8880fd5b50851515611840565b8794611836565b8694611808565b9094506020813d6020116119ac575b8161199c60209383611bfa565b8101031261026c575193386117d9565b3d915061198f565b9093506020813d6020116119e1575b816119d060209383611bfa565b8101031261026c57519260206117b4565b3d91506119c3565b6040513d8a823e3d90fd5b893b156106bd5760a46024918560405196879485937f10d1e85c00000000000000000000000000000000000000000000000000000000855233600486015260043582860152813560448601526080606486015282608486015201848401378181018301859052601f01601f19168101030181838c5af18015611aa457611a7c575b8881611784565b8198929811611a9057604052953880611a75565b602482634e487b7160e01b81526041600452fd5b6040513d8b823e3d90fd5b611abe6024356044358b61245a565b61177e565b611ad26004356044358961245a565b611776565b50898b141561176c565b5087861660243510611752565b8680fd5b506024351515611712565b600435906001600160a01b038216820361026c57565b602435906001600160a01b038216820361026c57565b60005b838110611b3c5750506000910152565b8181015183820152602001611b2c565b90602091611b6581518092818552858086019101611b29565b601f01601f1916010190565b606090600319011261026c576001600160a01b0390600435828116810361026c5791602435908116810361026c579060443590565b6020810190811067ffffffffffffffff82111761049457604052565b6040810190811067ffffffffffffffff82111761049457604052565b6080810190811067ffffffffffffffff82111761049457604052565b90601f8019910116810190811067ffffffffffffffff82111761049457604052565b67ffffffffffffffff811161049457601f01601f191660200190565b81601f8201121561026c57803590611c4f82611c1c565b92611c5d6040519485611bfa565b8284526020838301011161026c57816000926020809301838601378301015290565b606060031982011261026c576004356001600160a01b038116810361026c5791602435916044359067ffffffffffffffff821161026c57611cc291600401611c38565b90565b90600182811c92168015611cf5575b6020831014611cdf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cd4565b9291906000936001600160a01b03811685526034602052604085203386526020526040852054946000198603611d41575b50611d3c939450611d6e565b600190565b8386106102bf5750611d5a83611d3c9596033383611de6565b8493611d30565b91908201809211610e0157565b6001600160a01b0380911691821561026c571691821561026c576000828152603360205260408120548281106106bd57916040602092827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95038282205586815220611ddb828254611d61565b9055604051908152a3565b6001600160a01b0380911691821561026c571691821561026c5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260348252604060002085600052825280604060002055604051908152a3565b6005811015611e885780611e585750565b60018103611e6557600080fd5b60028103611e7257600080fd5b60038103611e7f57600080fd5b60041461026c57565b634e487b7160e01b600052602160045260246000fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311611f475760ff16601b81141580611f3c575b611f30579160809493916020936040519384528484015260408301526060820152600093849182805260015afa15611f235781516001600160a01b03811615611f1d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600490565b50601c811415611ed6565b50505050600090600390565b6065546066546040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176104945760405251902090565b60405190611fcc82611bc2565b600f82527f303020444558204c5020546f6b656e00000000000000000000000000000000006020830152565b6001600160a01b03604051917f95d89b41000000000000000000000000000000000000000000000000000000008352826004816000948594165afa9091828261207c575b5050611cc2575060405161204f81611bc2565b600781527f756e6b6e6f776e00000000000000000000000000000000000000000000000000602082015290565b909192503d8082843e61208f8184611bfa565b8201916020818403126106bd5780519067ffffffffffffffff82116106b9570182601f820112156106bd578051916120c683611c1c565b936120d46040519586611bfa565b838552602084840101116102bf5750906120f49160208085019101611b29565b90388061203c565b91908203918211610e0157565b81810292918115918404141715610e0157565b8115612126570490565b634e487b7160e01b600052601260045260246000fd5b6001600160a01b031690811561026c577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208261217e600094603554611d61565b6035558484526033825260408420611ddb828254611d61565b91926001600160701b039081841115806122f6575b1561026c576101009081549463ffffffff9560e01c8642160391868311610e01577f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad19760409786941690811515806122eb575b806122e0575b61226e575b5050501692837bffffffffffffffffffffffffffff00000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000004260e01b169260701b161717809155835192835260701c166020820152a1565b6122ad6122c8936122a87bffffffffffffffffffffffffffffffffffffffffffffffffffffffff936122b386866122ad846122a88861256d565b6125b9565b16612109565b6122c1610101918254611d61565b905561256d565b6122d6610102918254611d61565b905538808061220a565b508483161515612205565b5084811615156121ff565b50818311156121ac565b919091604051907f017e7e580000000000000000000000000000000000000000000000000000000082526001600160a01b03602083600481847f0000000000000000000000000000000000000000000000000000000000000000165afa92831561244e57600093612410575b50821615159361010391825492866000146123ff57508261238e575b50505050565b610d0d6123ab916123b1936001600160701b038091169116612109565b916125ec565b908181116123c0575b80612388565b6123dd6123e3926123d76035546118aa83866120fc565b92611d61565b9061211c565b806123ef575b806123ba565b6123f89161213c565b38806123e9565b9350505061240a5750565b60009055565b6020939193813d8211612446575b8161242b60209383611bfa565b810103126106bd57519083821682036102bf5750913861236c565b3d915061241e565b6040513d6000823e3d90fd5b9060405190602092838301947fa9059cbb0000000000000000000000000000000000000000000000000000000086526001600160a01b0380931660248501526044840152604483526124ab83611bde565b16927f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564836040516124db81611bc2565b8181520152833b1561026c5761252391600094859283809351925af13d15612553573d9061250882611c1c565b916125166040519384611bfa565b82523d858584013e612557565b8051806125305750505050565b818391810103126106b95701518015908115036106bd576102bf57808080612388565b6060905b1561255f5790565b805190811561026c57602001fd5b7bffffffffffffffffffffffffffff00000000000000000000000000006001600160701b0382169160701b16908082046e0100000000000000000000000000001490151715610e015790565b906001600160701b0316908115612126577bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160490565b906000600383111561263957508160019080821c828101809111610e015791905b84831061261957505050565b909193506126308461262b818461211c565b611d61565b821c919061260d565b9161264057565b60019150565b9081602091031261026c57517fffffffff000000000000000000000000000000000000000000000000000000008116810361026c5790565b9092611cc294936080936001600160a01b03809216845216602083015260408201528160608201520190611b4c565b60009060033d116126ba57565b905060046000803e60005160e01c90565b600060443d10611cc257604051600319913d83016004833e815167ffffffffffffffff918282113d60248401111761272957818401948551938411612731573d850101602084870101116127295750611cc292910160200190611bfa565b949350505050565b50949350505050565b60206001600160a01b039361277392612754858233611d6e565b6040518080958194632229f29760e21b9889845233336004860161267e565b03916000978891165af18391816127e9575b506127bc57505060016127966126ad565b6308c379a0146127ab575b6102bf5750600190565b6127b36126cb565b156127a1575080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000016036102bf5750600190565b61280b91925060203d8111612812575b6128038183611bfa565b810190612646565b9038612785565b503d6127f9565b91612825818385611cff565b1561026c576001600160a01b039361277392602092604051809581948293632229f29760e21b998a8552336004860161267e565b60206001600160a01b039361277392612873858233611de6565b60405180809581947f7b04a2d000000000000000000000000000000000000000000000000000000000988984523360048501526024840152606060448401526064830190611b4c56fea2646970667358221220a4b13fd18a7277da4c0c56480542ba10f3b87467d89a73a96bd1e06ce682575c64736f6c634300081100330000000000000000000000004f05774b4226ec3724da8603c2e0052bc1612d94