0 txs
8 calls
constructor
No constructor.
functions
gems
viewfunction gems() view returns (address)
getNamesToken
viewfunction getNamesToken(address pair) view returns (address token)
getPair
viewfunction getPair(address token) view returns (address pair)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
symbolCount
viewfunction symbolCount(string symbol) view returns (uint8 count)
tokenName
viewfunction tokenName(string name) view returns (address tokenAddress)
tokenSymbol
viewfunction tokenSymbol(string symbol) view returns (address tokenAddress)
totalPairs
viewfunction totalPairs() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
wETH
viewfunction wETH() view returns (address)
create
nonpayablefunction create(tuple setupParams) returns (address namesToken, address pair, string symbol, uint256 total)
initialize
nonpayablefunction initialize(address positionManager_, address liquidityLocker_, address factoryV3_, address swapRouter_, address gems_, address weth_, address router_)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
InitializeAuthority
event InitializeAuthority(address authority)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PairCreated
event PairCreated(address indexed namesToken, address pair, uint256 totalPairs)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
CallerNotAuthority
error CallerNotAuthority()
CallerNotPendingAuthority
error CallerNotPendingAuthority()
DuplicateName
error DuplicateName()
DuplicateSymbol
error DuplicateSymbol()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidAddress
error InvalidAddress()
InvalidAuthorityAssignment
error InvalidAuthorityAssignment()
InvalidInitialization
error InvalidInitialization()
InvalidString
error InvalidString()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156012575f5ffd5b50608051615a816100395f395f8181610ac101528181610aea0152610c2e0152615a815ff3fe6080604052600436106100ef575f3560e01c8063715018a611610087578063dca7c84111610057578063dca7c8411461030f578063e186df531461033e578063f24286211461038a578063f2fde38b146103a9575f5ffd5b8063715018a6146102425780638da5cb5b14610256578063aacde5c714610292578063ad3cb1cc146102d2575f5ffd5b80634f1ef286116100c25780634f1ef286146101d957806352d1902d146101ec5780635d8c32a91461020e5780636c30505514610223575f5ffd5b80631a788a02146100f3578063261650e614610144578063335393011461018457806335876476146101b8575b5f5ffd5b3480156100fe575f5ffd5b5061012761010d366004611344565b603a6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014f575f5ffd5b5061012761015e36600461142f565b8051602081830181018051603c825292820191909301209152546001600160a01b031681565b34801561018f575f5ffd5b5061012761019e366004611344565b603b6020525f90815260409020546001600160a01b031681565b3480156101c3575f5ffd5b506101d76101d2366004611469565b6103c8565b005b6101d76101e73660046114ea565b6105db565b3480156101f7575f5ffd5b506102006105fa565b60405190815260200161013b565b348015610219575f5ffd5b5061020060395481565b34801561022e575f5ffd5b50603754610127906001600160a01b031681565b34801561024d575f5ffd5b506101d7610615565b348015610261575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610127565b34801561029d575f5ffd5b506101276102ac36600461142f565b8051602081830181018051603d825292820191909301209152546001600160a01b031681565b3480156102dd575f5ffd5b50610302604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161013b9190611576565b34801561031a575f5ffd5b5061032e610329366004611588565b610628565b60405161013b9493929190611646565b348015610349575f5ffd5b5061037861035836600461142f565b8051602081830181018051603e8252928201919093012091525460ff1681565b60405160ff909116815260200161013b565b348015610395575f5ffd5b50603854610127906001600160a01b031681565b3480156103b4575f5ffd5b506101d76103c3366004611344565b610a42565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561040d5750825b90505f8267ffffffffffffffff1660011480156104295750303b155b905081158015610437575080155b156104555760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047f57845460ff60401b1916600160401b1785555b610487610a84565b61049033610a8c565b61049986610a9d565b6001600160a01b038c1615806104b657506001600160a01b038b16155b806104c857506001600160a01b038a16155b806104da57506001600160a01b038916155b806104ec57506001600160a01b038816155b806104fe57506001600160a01b038716155b8061051057506001600160a01b038616155b156105255761052563e6c4247b60e01b610aae565b603380546001600160a01b03199081166001600160a01b038f8116919091179092556034805482168e84161790556035805482168d84161790556036805482168c84161790556037805482168b84161790556038805490911691891691909117905583156105cd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6105e3610ab6565b6105ec82610b5a565b6105f68282610b62565b5050565b5f610603610c23565b505f516020615a2c5f395f51905f5290565b61061d610c6c565b6106265f610cc7565b565b5f5f60605f610635610d37565b60408051602081019091525f8152855161064e91610d58565b1561066357610663630ec0325960e21b610aae565b6040805160208082019092525f81529086015161067f91610d58565b1561069457610694630ec0325960e21b610aae565b84516040515f91603c916106a89190611699565b908152604051908190036020019020546001600160a01b0316146106d6576106d66303d0eb6360e51b610aae565b6106e38560200151610d7e565b6020860181905285516033546040519192916001600160a01b039091169069021e19e0c9bab2400000906107169061130f565b61072394939291906116a4565b604051809103905ff08015801561073c573d5f5f3e3d5ffd5b5093505f604051806020016107509061131c565b818103601f199081018352601f9091011660408190526038546bffffffffffffffffffffffff19606091821b811660208401529088901b1660348201529091505f90604801604051602081830303815290604052805190602001209050808251602084015ff594506107d99150506001600160a01b0385168469021e19e0c9bab2400000610e9b565b60408051610160810182525f546001600160a01b0390811682526033548116602083015260345481168284015260355481166060808401919091526036548216608080850191909152603754831660a0850152603854831660c085015288831660e085015289850151831661010085015290890151610120840152880151610140830152915163bb585c5d60e01b8152909185169063bb585c5d906108829084906004016116e5565b5f604051808303815f87803b158015610899575f5ffd5b505af11580156108ab573d5f5f3e3d5ffd5b5050604051634cfdc04f60e11b81526001600160a01b038781166004830152881692506399fb809e91506024015f604051808303815f87803b1580156108ef575f5ffd5b505af1158015610901573d5f5f3e3d5ffd5b5050506001600160a01b038087165f818152603a602090815260408083208054958b166001600160a01b031996871681179091558352603b90915290819020805490931690911790915587519051879250603c9161095e91611699565b90815260200160405180910390205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084603d87602001516040516109a49190611699565b90815260200160405180910390205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060395f81546109e390611803565b9182905550602080880151604080516001600160a01b038981168252938101859052919650929450908716917fc1db9ba7c4b7ce660fe8d17bbcf07167549381df2abd694a970bd1402d86d313910160405180910390a2509193509193565b610a4a610c6c565b6001600160a01b038116610a7857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a8181610cc7565b50565b610626610eed565b610a94610eed565b610a8181610f36565b610aa5610eed565b610a8181610f3e565b805f5260045ffd5b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610b3c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b305f516020615a2c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156106265760405163703e46dd60e11b815260040160405180910390fd5b610a81610c6c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bbc575060408051601f3d908101601f19168201909252610bb99181019061181b565b60015b610be457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a6f565b5f516020615a2c5f395f51905f528114610c1457604051632a87526960e21b815260048101829052602401610a6f565b610c1e8383610f67565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106265760405163703e46dd60e11b815260040160405180910390fd5b33610c9e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146106265760405163118cdaa760e01b8152336004820152602401610a6f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f546001600160a01b03163314610626576106266306be7e5360e31b610aae565b5f81518351148015610d77575081805190602001208380519060200120145b9392505050565b606081604051602001610d919190611832565b60405160208183030381529060405290508091505f603e83604051610db69190611699565b9081526040519081900360200190205460ff1690508015610e4e575f610dde8260ff16610fbc565b90508381604051602001610df392919061184f565b60405160208183030381529060405292505f6001600160a01b0316603d84604051610e1e9190611699565b908152604051908190036020019020546001600160a01b031614610e4c57610e4c630deebfab60e11b610aae565b505b603e83604051610e5e9190611699565b90815260405190819003602001902080545f90610e7d9060ff16611863565b91906101000a81548160ff021916908360ff16021790555050919050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c1e90849061104c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661062657604051631afcd79f60e31b815260040160405180910390fd5b610a4a610eed565b610f46610eed565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b610f70826110be565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610fb457610c1e8282611121565b6105f6611193565b60605f610fc8836111b2565b60010190505f8167ffffffffffffffff811115610fe757610fe761135d565b6040519080825280601f01601f191660200182016040528015611011576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461101b57509392505050565b5f5f60205f8451602086015f885af18061106b576040513d5f823e3d81fd5b50505f513d9150811561108257806001141561108f565b6001600160a01b0384163b155b156110b857604051635274afe760e01b81526001600160a01b0385166004820152602401610a6f565b50505050565b806001600160a01b03163b5f036110f357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a6f565b5f516020615a2c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161113d9190611699565b5f60405180830381855af49150503d805f8114611175576040519150601f19603f3d011682016040523d82523d5f602084013e61117a565b606091505b509150915061118a85838361128a565b95945050505050565b34156106265760405163b398979f60e01b815260040160405180910390fd5b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106111f05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061121c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061123a57662386f26fc10000830492506010015b6305f5e1008310611252576305f5e100830492506008015b612710831061126657612710830492506004015b60648310611278576064830492506002015b600a8310611284576001015b92915050565b60608261129f5761129a826112e6565b610d77565b81511580156112b657506001600160a01b0384163b155b156112df57604051639996b31560e01b81526001600160a01b0385166004820152602401610a6f565b5092915050565b8051156112f65780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6117e38061188283390190565b6129c78061306583390190565b80356001600160a01b038116811461133f575f5ffd5b919050565b5f60208284031215611354575f5ffd5b610d7782611329565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff811182821017156113945761139461135d565b60405290565b5f5f67ffffffffffffffff8411156113b4576113b461135d565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156113e3576113e361135d565b6040528381529050808284018510156113fa575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f830112611420575f5ffd5b610d778383356020850161139a565b5f6020828403121561143f575f5ffd5b813567ffffffffffffffff811115611455575f5ffd5b61146184828501611411565b949350505050565b5f5f5f5f5f5f5f60e0888a03121561147f575f5ffd5b61148888611329565b965061149660208901611329565b95506114a460408901611329565b94506114b260608901611329565b93506114c060808901611329565b92506114ce60a08901611329565b91506114dc60c08901611329565b905092959891949750929550565b5f5f604083850312156114fb575f5ffd5b61150483611329565b9150602083013567ffffffffffffffff81111561151f575f5ffd5b8301601f8101851361152f575f5ffd5b61153e8582356020840161139a565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610d776020830184611548565b5f60208284031215611598575f5ffd5b813567ffffffffffffffff8111156115ae575f5ffd5b820160a081850312156115bf575f5ffd5b6115c7611371565b813567ffffffffffffffff8111156115dd575f5ffd5b6115e986828501611411565b825250602082013567ffffffffffffffff811115611605575f5ffd5b61161186828501611411565b60208301525061162360408301611329565b604082015260608281013590820152608091820135918101919091529392505050565b6001600160a01b038581168252841660208201526080604082018190525f9061167190830185611548565b905082606083015295945050505050565b5f81518060208401855e5f93019283525090919050565b5f610d778284611682565b608081525f6116b66080830187611548565b82810360208401526116c88187611548565b6001600160a01b0395909516604084015250506060015292915050565b81516001600160a01b031681526101608101602083015161171160208401826001600160a01b03169052565b50604083015161172c60408401826001600160a01b03169052565b50606083015161174760608401826001600160a01b03169052565b50608083015161176260808401826001600160a01b03169052565b5060a083015161177d60a08401826001600160a01b03169052565b5060c083015161179860c08401826001600160a01b03169052565b5060e08301516117b360e08401826001600160a01b03169052565b506101008301516117d06101008401826001600160a01b03169052565b5061012083015161012083015261014083015161014083015292915050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201611814576118146117ef565b5060010190565b5f6020828403121561182b575f5ffd5b5051919050565b5f61183d8284611682565b6121a760f11b81526002019392505050565b5f61146161185d8386611682565b84611682565b5f60ff821660ff8103611878576118786117ef565b6001019291505056fe610180604052348015610010575f5ffd5b506040516117e33803806117e383398101604081905261002f9161041b565b6040805180820190915260018152603160f81b602082015284908190818660036100598382610529565b5060046100668282610529565b5061007691508390506005610151565b61012052610085816006610151565b61014052815160208084019190912060e052815190820120610100524660a05261011160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250600880546001600160a01b031916339081179091556001600160a01b038316610160526101489082610183565b5050505061065a565b5f60208351101561016c57610165836101c0565b905061017d565b816101778482610529565b5060ff90505b92915050565b6001600160a01b0382166101b15760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6101bc5f83836101fd565b5050565b5f5f829050601f815111156101ea578260405163305a27a960e01b81526004016101a891906105e3565b80516101f582610618565b179392505050565b600954600160a01b900460ff1615801561022b5750610160516001600160a01b0316336001600160a01b0316145b1561024057610240631eb49d6d60e11b610250565b61024b838383610258565b505050565b805f5260045ffd5b6001600160a01b038316610282578060025f828254610277919061063b565b909155506102f29050565b6001600160a01b0383165f90815260208190526040902054818110156102d45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101a8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661030e5760028054829003905561032c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161037191815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126103a1575f5ffd5b81516001600160401b038111156103ba576103ba61037e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103e8576103e861037e565b6040528181528382016020018510156103ff575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f6080858703121561042e575f5ffd5b84516001600160401b03811115610443575f5ffd5b61044f87828801610392565b602087015190955090506001600160401b0381111561046c575f5ffd5b61047887828801610392565b604087015190945090506001600160a01b0381168114610496575f5ffd5b6060959095015193969295505050565b600181811c908216806104ba57607f821691505b6020821081036104d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024b57805f5260205f20601f840160051c810160208510156105035750805b601f840160051c820191505b81811015610522575f815560010161050f565b5050505050565b81516001600160401b038111156105425761054261037e565b6105568161055084546104a6565b846104de565b6020601f821160018114610588575f83156105715750848201515b5f19600385901b1c1916600184901b178455610522565b5f84815260208120601f198516915b828110156105b75787850151825560209485019460019092019101610597565b50848210156105d457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104d8575f1960209190910360031b1b16919050565b8082018082111561017d57634e487b7160e01b5f52601160045260245ffd5b60805160a05160c05160e0516101005161012051610140516101605161112e6106b55f395f610a7001525f61084001525f61081301525f61078801525f61076001525f6106bb01525f6106e501525f61070f015261112e5ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c806379cc67901161009e57806399fb809e1161006e57806399fb809e1461022c578063a9059cbb1461023f578063b1b3d3f614610252578063d505accf1461025a578063dd62ed3e1461026d575f5ffd5b806379cc6790146101e35780637ecebe00146101f657806384b0196e1461020957806395d89b4114610224575f5ffd5b806323b872dd116100e457806323b872dd1461017c578063313ce5671461018f5780633644e5151461019e57806342966c68146101a657806370a08231146101bb575f5ffd5b806306fdde0314610115578063095ea7b31461013357806318160ddd1461015657806319e1fca414610168575b5f5ffd5b61011d6102a5565b60405161012a9190610e93565b60405180910390f35b610146610141366004610ec7565b610335565b604051901515815260200161012a565b6002545b60405190815260200161012a565b60095461014690600160a01b900460ff1681565b61014661018a366004610eef565b61034e565b6040516012815260200161012a565b61015a610371565b6101b96101b4366004610f29565b61037f565b005b61015a6101c9366004610f40565b6001600160a01b03165f9081526020819052604090205490565b6101b96101f1366004610ec7565b61038c565b61015a610204366004610f40565b6103a5565b6102116103c2565b60405161012a9796959493929190610f59565b61011d610404565b6101b961023a366004610f40565b610413565b61014661024d366004610ec7565b61043e565b6101b961044b565b6101b9610268366004610fef565b61048a565b61015a61027b36600461105c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102b49061108d565b80601f01602080910402602001604051908101604052809291908181526020018280546102e09061108d565b801561032b5780601f106103025761010080835404028352916020019161032b565b820191905f5260205f20905b81548152906001019060200180831161030e57829003601f168201915b5050505050905090565b5f336103428185856105c5565b60019150505b92915050565b5f3361035b8582856105d7565b610366858585610652565b506001949350505050565b5f61037a6106af565b905090565b61038933826107d8565b50565b6103978233836105d7565b6103a182826107d8565b5050565b6001600160a01b0381165f90815260076020526040812054610348565b5f6060805f5f5f60606103d361080c565b6103db610839565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102b49061108d565b6008546001600160a01b0316331461043557610435631c90b19160e01b610866565b6103898161086e565b5f33610342818585610652565b610453610902565b600954600160a01b900460ff161561047557610475636a4648d760e01b610866565b6009805460ff60a01b1916600160a01b179055565b834211156104b35760405163313c898160e11b8152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886104fe8c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61055882610926565b90505f61056782878787610952565b9050896001600160a01b0316816001600160a01b0316146105ae576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016104aa565b6105b98a8a8a6105c5565b50505050505050505050565b6105d2838383600161097e565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461064c578181101561063e57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104aa565b61064c84848484035f61097e565b50505050565b6001600160a01b03831661067b57604051634b637e8f60e11b81525f60048201526024016104aa565b6001600160a01b0382166106a45760405163ec442f0560e01b81525f60048201526024016104aa565b6105d2838383610a50565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561070757507f000000000000000000000000000000000000000000000000000000000000000046145b1561073157507f000000000000000000000000000000000000000000000000000000000000000090565b61037a604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821661080157604051634b637e8f60e11b81525f60048201526024016104aa565b6103a1825f83610a50565b606061037a7f00000000000000000000000000000000000000000000000000000000000000006005610ab2565b606061037a7f00000000000000000000000000000000000000000000000000000000000000006006610ab2565b805f5260045ffd5b6001600160a01b03811661088c5761088c6312e6291160e01b610866565b6008546001600160a01b0316156108ae57600880546001600160a01b03191690555b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527fac1f812621b6c406f47d89f077576cabc56e1309dc67429449723f66ad0dd2269060200160405180910390a150565b6009546001600160a01b03163314610924576109246306be7e5360e31b610866565b565b5f6103486109326106af565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f61096288888888610b5b565b9250925092506109728282610c23565b50909695505050505050565b6001600160a01b0384166109a75760405163e602df0560e01b81525f60048201526024016104aa565b6001600160a01b0383166109d057604051634a1406b160e11b81525f60048201526024016104aa565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561064c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a4291815260200190565b60405180910390a350505050565b600954600160a01b900460ff16158015610a925750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b15610aa757610aa7631eb49d6d60e11b610866565b6105d2838383610cdb565b606060ff8314610acc57610ac583610e01565b9050610348565b818054610ad89061108d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b049061108d565b8015610b4f5780601f10610b2657610100808354040283529160200191610b4f565b820191905f5260205f20905b815481529060010190602001808311610b3257829003601f168201915b50505050509050610348565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b9457505f91506003905082610c19565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610be5573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c1057505f925060019150829050610c19565b92505f91508190505b9450945094915050565b5f826003811115610c3657610c366110c5565b03610c3f575050565b6001826003811115610c5357610c536110c5565b03610c715760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c8557610c856110c5565b03610ca65760405163fce698f760e01b8152600481018290526024016104aa565b6003826003811115610cba57610cba6110c5565b036103a1576040516335e2f38360e21b8152600481018290526024016104aa565b6001600160a01b038316610d05578060025f828254610cfa91906110d9565b90915550610d759050565b6001600160a01b0383165f9081526020819052604090205481811015610d575760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104aa565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610d9157600280548290039055610daf565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610df491815260200190565b60405180910390a3505050565b60605f610e0d83610e3e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034857604051632cd44ac360e21b815260040160405180910390fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610ea56020830184610e65565b9392505050565b80356001600160a01b0381168114610ec2575f5ffd5b919050565b5f5f60408385031215610ed8575f5ffd5b610ee183610eac565b946020939093013593505050565b5f5f5f60608486031215610f01575f5ffd5b610f0a84610eac565b9250610f1860208501610eac565b929592945050506040919091013590565b5f60208284031215610f39575f5ffd5b5035919050565b5f60208284031215610f50575f5ffd5b610ea582610eac565b60ff60f81b8816815260e060208201525f610f7760e0830189610e65565b8281036040840152610f898189610e65565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015610fde578351835260209384019390920191600101610fc0565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611005575f5ffd5b61100e88610eac565b965061101c60208901610eac565b95506040880135945060608801359350608088013560ff8116811461103f575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561106d575f5ffd5b61107683610eac565b915061108460208401610eac565b90509250929050565b600181811c908216806110a157607f821691505b6020821081036110bf57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b8082018082111561034857634e487b7160e01b5f52601160045260245ffdfea26469706673582212202049ba810a512fdddc3ead924e9305f4200ed90ee3ad5f010282ae4c92ebc07464736f6c634300081c003360a06040526729a2241af62c00006007556103e860075460466100229190610088565b61002c91906100b1565b6008556310e352d56007546305f5e1006100469190610088565b61005091906100b1565b600955682792cfc56ddaad6000600a5534801561006b575f5ffd5b505f80546001600160a01b031916339081179091556080526100d0565b80820281158282048414176100ab57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826100cb57634e487b7160e01b5f52601260045260245ffd5b500490565b6080516128d86100ef5f395f8181610218015261077b01526128d85ff3fe608060405260043610610108575f3560e01c8063ad5c464811610092578063bc25cf7711610062578063bc25cf7714610314578063be9a655514610333578063fa2af9da14610347578063fc0c546a14610366578063fff6cae914610385575f5ffd5b8063ad5c4648146102ac578063b01388ea146102cb578063bb585c5d146102e0578063bc22593e146102ff575f5ffd5b806326232a2e116100d857806326232a2e146101f25780632dd31000146102075780636c305055146102525780638120192c1461027657806399fb809e1461028b575f5ffd5b80630902f1ac146101135780630b4a7eb3146101585780630d8d7f141461017b578063135f0f85146101a4575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b50610127610399565b604080516001600160701b03948516815293909216602084015263ffffffff16908201526060015b60405180910390f35b348015610163575f5ffd5b5061016d60115481565b60405190815260200161014f565b348015610186575f5ffd5b50600b546101949060ff1681565b604051901515815260200161014f565b3480156101af575f5ffd5b506101c36101be36600461232c565b6103c3565b6040805194855260208501939093526001600160701b039182169284019290925216606082015260800161014f565b3480156101fd575f5ffd5b5061016d600f5481565b348015610212575f5ffd5b5061023a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014f565b34801561025d575f5ffd5b50600b5461023a9061010090046001600160a01b031681565b348015610281575f5ffd5b5061016d60085481565b348015610296575f5ffd5b506102aa6102a5366004612387565b61074c565b005b3480156102b7575f5ffd5b50600c5461023a906001600160a01b031681565b3480156102d6575f5ffd5b5061016d60105481565b3480156102eb575f5ffd5b506102aa6102fa3660046123a2565b610779565b34801561030a575f5ffd5b5061016d60075481565b34801561031f575f5ffd5b506102aa61032e366004612387565b610af7565b34801561033e575f5ffd5b506102aa610b7d565b348015610352575f5ffd5b50600e5461023a906001600160a01b031681565b348015610371575f5ffd5b50600d5461023a906001600160a01b031681565b348015610390575f5ffd5b506102aa610c5d565b6006546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b5f5f5f5f6103cf610c9c565b6103d7610d09565b600b5460ff16156103f2576103f2632d7737a360e21b610d27565b8815806103fd575087155b1561041257610412632ca2f52b60e11b610d27565b600c546001600160a01b038681169116148061043b5750600d546001600160a01b038681169116145b1561045057610450631e4ec46b60e01b610d27565b610458610399565b5090925090505f808089156104b457600d54600f546001600160701b03861694506001600160a01b0390911692506103e890610494908e6123d0565b61049e91906123fb565b90506104aa818d61240e565b96508a95506104fd565b600c54600f546001600160701b03871694506001600160a01b0390911692506103e8906104e1908d6123d0565b6104eb91906123fb565b8c975090506104fa818c61240e565b95505b828b11156105155761051563713654fb60e01b610d27565b881561058d57600c54604051632e1a7d4d60e01b8152600481018890526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b15801561055e575f5ffd5b505af1158015610570573d5f5f3e3d5ffd5b50610588925050506001600160a01b03891687610d2f565b6105a1565b6105a16001600160a01b0383168988610dd3565b600e546105be908290612710905f906001600160a01b0316610e32565b505050505f5f6105cc610fcb565b91509150826001600160701b0316846001600160701b03166105ee91906123d0565b6105fb90620f42406123d0565b61060582846123d0565b61061290620f42406123d0565b10156106285761062863a932492f60e01b610d27565b610634828286866110ca565b600c546040516370a0823160e01b81523060048201529296509094505f93506001600160a01b031691506370a0823190602401602060405180830381865afa158015610682573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a69190612421565b905060075481106106e957600854600e546106d09190612710905f906001600160a01b0316610e32565b506008546106de908261240e565b90506106e9816112ac565b60408051868152602081018690528915158183015290516001600160a01b0388169133917f15df6b17ebbe8381abae058b80360eb98bd18ff544a05e3661ffbed247b47e689181900360600190a350610740611bc5565b95509550955095915050565b5f546001600160a01b0316331461076d5761076d631c90b19160e01b610d27565b61077681611bef565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146107b9576107b9631dd2188d60e31b610d27565b5f6107ca6040830160208401612387565b6001600160a01b031614806107f657505f6107eb6060830160408401612387565b6001600160a01b0316145b8061081857505f61080d6080830160608401612387565b6001600160a01b0316145b8061083a57505f61082f60a0830160808401612387565b6001600160a01b0316145b8061085c57505f61085160c0830160a08401612387565b6001600160a01b0316145b8061087e57505f61087360e0830160c08401612387565b6001600160a01b0316145b806108a157505f610896610100830160e08401612387565b6001600160a01b0316145b806108c557505f6108ba61012083016101008401612387565b6001600160a01b0316145b156108da576108da63e6c4247b60e01b610d27565b61012081013515806108ef5750610140810135155b1561090457610904632ca2f52b60e11b610d27565b6109146040820160208301612387565b600280546001600160a01b0319166001600160a01b03929092169190911790556109446060820160408301612387565b600380546001600160a01b0319166001600160a01b03929092169190911790556109746080820160608301612387565b600480546001600160a01b0319166001600160a01b03929092169190911790556109a460a0820160808301612387565b600580546001600160a01b0319166001600160a01b03929092169190911790556109d460c0820160a08301612387565b600b80546001600160a01b039290921661010002610100600160a81b0319909216919091179055610a0b60e0820160c08301612387565b600c80546001600160a01b0319166001600160a01b0392909216919091179055610a3c610100820160e08301612387565b600d80546001600160a01b0319166001600160a01b0392909216919091179055610a6e61012082016101008301612387565b600e80546001600160a01b0319166001600160a01b0392909216919091179055610120810135600f5561014081013560078190556310e352d590610ab6906305f5e1006123d0565b610ac091906123fb565b6009556007546103e890610ad59060466123d0565b610adf91906123fb565b600855610776610af26020830183612387565b611bef565b610aff610c9c565b5f5f610b09610fcb565b915091505f5f610b17610399565b509092509050610b4785610b346001600160701b0385168761240e565b600c546001600160a01b03169190610dd3565b610b7185610b5e6001600160701b0384168661240e565b600d546001600160a01b03169190610dd3565b50505050610776611bc5565b610b85610c9c565b610b8d610d09565b5f5f610b97610fcb565b915091505f5f610ba5610399565b5090925090505f610bbf6001600160701b0384168661240e565b90505f610bd56001600160701b0384168661240e565b90505f610bea610be583856123d0565b611c81565b9050805f03610c0357610c03633489be7560e21b610d27565b610c0f878787876110ca565b5050604080518481526020810184905233917f9bd12ff361235cfc00ce4754dc56d7091bb0a6a4db278a4e8b2f23d84a14c5d4910160405180910390a250505050505050610c5b611bc5565b565b610c65610c9c565b5f5f610c6f610fcb565b915091505f5f610c7d610399565b5091509150610c8e848484846110ca565b505050505050610c5b611bc5565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610cdc57604051633ee5aeb560e01b815260040160405180910390fd5b610c5b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90611dd4565b6001546001600160a01b03163314610c5b57610c5b6306be7e5360e31b5b805f5260045ffd5b80471015610d5e5760405163cf47918160e01b8152476004820152602481018290526044015b60405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610da7576040519150601f19603f3d011682016040523d82523d5f602084013e610dac565b606091505b5050905080610dce5760405163d6bda27560e01b815260040160405180910390fd5b505050565b6040516001600160a01b03838116602483015260448201839052610dce91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611ddb565b5f845f03610e4a57610e4a632ca2f52b60e11b610d27565b600554600c54610e67916001600160a01b03918216911687611e4d565b600c54600b546040515f92610e96926001600160a01b0391821692899261010090920490911690602001612438565b60408051601f1981840301815260a0830182528083526001600160a01b03861660208401524291830191909152606082018890525f608083015291508415610f4f5760055460405163c04b8d5960e01b81526001600160a01b039091169063c04b8d5990610f089084906004016124a1565b6020604051808303815f875af1158015610f24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f489190612421565b9250610fc1565b60055460405163c04b8d5960e01b81526001600160a01b039091169063c04b8d5990610f7f9084906004016124a1565b6020604051808303815f875af1925050508015610fb9575060408051601f3d908101601f19168201909252610fb691810190612421565b60015b15610fc15792505b5050949350505050565b600954600c546040516370a0823160e01b81523060048201525f92839290916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561101a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103e9190612421565b61104891906124f8565b600a54600d546040516370a0823160e01b815230600482015292945090916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611096573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ba9190612421565b6110c491906124f8565b90509091565b600b545f90819060ff16156110e9576110e9632d7737a360e21b610d27565b6001600160701b0386118061110457506001600160701b0385115b1561111957611119631a93c68960e11b610d27565b5f6111296401000000004261250b565b6006549091505f9061114890600160e01b900463ffffffff168361251e565b90505f8163ffffffff1611801561116757506001600160701b03861615155b801561117b57506001600160701b03851615155b15611208578063ffffffff166111a38761119488611edc565b6001600160e01b031690611efa565b6001600160e01b03166111b691906123d0565b60105f8282546111c691906124f8565b909155505063ffffffff81166111df8661119489611edc565b6001600160e01b03166111f291906123d0565b60115f82825461120291906124f8565b90915550505b6006805463ffffffff8416600160e01b026001600160e01b036001600160701b038b8116600160701b9081026001600160e01b03199095168e83161794909417918216831794859055604080519382169282169290921780845293909404909316602082018190529196509094507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505094509492505050565b600d546040516370a0823160e01b81523060048201525f91829182918291829182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156112fe573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113229190612421565b600d54600c549192506001600160a01b0390811691161061136157600d54600c546001600160a01b039182169116828961135c8183611f15565b611380565b600c54600d546001600160a01b03918216911688836113808183611f15565b60408051610160810182526001600160a01b03808816825286166020820152610bb891810191909152949a50929850909650945092505f9060608101603c6113cc81620d89e71961253a565b6113d69190612572565b60020b8152602001603c806113ee620d89e719612598565b6113f8919061253a565b6114029190612572565b600290810b825260208201889052604082018790525f6060830181905260808301523060a08301524260c09092019190915254600c54919250611452916001600160a01b0390811691168a611e4d565b600d5f9054906101000a90046001600160a01b03166001600160a01b031663b1b3d3f66040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561149e575f5ffd5b505af11580156114b0573d5f5f3e3d5ffd5b5050600254600d546114d193506001600160a01b0390811692501684611e4d565b600b805460ff191660011790556002546040516309f56ab160e11b81526001600160a01b0389811660048301528881166024830152610bb860448301528581166064830152909116906313ead562906084016020604051808303815f875af115801561153f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156391906125b8565b50600254604051634418b22b60e11b81525f916001600160a01b0316906388316456906115949085906004016125d3565b6080604051808303815f875af11580156115b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d49190612697565b505060408051610140810182526002546001600160a01b0390811682526020808301869052600e54909116828401819052606083018190526080830181905260a08301525f1960c0830152606d60e08301528251808401845260078152661111519055531560ca1b8183015261010083015282515f808252918101909352939450915061012082019083611678565b60608152602001906001900390816116635790505b50905260025460035460405163a22cb46560e01b81526001600160a01b03918216600482015260016024820152929350169063a22cb465906044015f604051808303815f87803b1580156116ca575f5ffd5b505af11580156116dc573d5f5f3e3d5ffd5b505060035460405163146b52d760e31b81526001600160a01b03909116925063a35a96b89150611710908490600401612738565b6020604051808303815f875af115801561172c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117509190612421565b50600d546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bb9190612421565b600554600d549192506117db916001600160a01b03908116911683611e4d565b600d54600c546040515f92611806926001600160a01b0391821692610bb89290911690602001612438565b60408051808303601f1901815260a0830182528083523060208401524283830152606083018590525f6080840152600554915163c04b8d5960e01b81529093506001600160a01b039091169063c04b8d59906118669084906004016124a1565b6020604051808303815f875af19250505080156118a0575060408051601f3d908101601f1916820190925261189d91810190612421565b60015b156118a757505b5050600c546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156118ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119139190612421565b600554600c54919250611933916001600160a01b03908116911683611e4d565b600c54600d546040515f9261195e926001600160a01b0391821692610bb89290911690602001612438565b60408051808303601f1901815260a0830182528083523060208401524283830152606083018590525f6080840152600554915163c04b8d5960e01b81529093506001600160a01b039091169063c04b8d59906119be9084906004016124a1565b6020604051808303815f875af19250505080156119f8575060408051601f3d908101601f191682019092526119f591810190612421565b60015b156119ff57505b5050600c546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611a47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6b9190612421565b90508015611aeb57600c54600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303815f875af1158015611ac5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae99190612814565b505b600d546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611b31573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b559190612421565b91508115611bb757600d54604051630852cd8d60e31b8152600481018490526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611ba0575f5ffd5b505af1158015611bb2573d5f5f3e3d5ffd5b505050505b505050505050505050505050565b610c5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610d03565b6001600160a01b038116611c0d57611c0d6312e6291160e01b610d27565b5f546001600160a01b031615611c2d575f80546001600160a01b03191690555b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fac1f812621b6c406f47d89f077576cabc56e1309dc67429449723f66ad0dd2269060200160405180910390a150565b5f60018211611c8e575090565b816001600160801b8210611ca75760809190911c9060401b5b600160401b8210611cbd5760409190911c9060201b5b6401000000008210611cd45760209190911c9060101b5b620100008210611ce95760109190911c9060081b5b6101008210611cfd5760089190911c9060041b5b60108210611d105760049190911c9060021b5b60048210611d1c5760011b5b600302600190811c90818581611d3457611d346123e7565b048201901c90506001818581611d4c57611d4c6123e7565b048201901c90506001818581611d6457611d646123e7565b048201901c90506001818581611d7c57611d7c6123e7565b048201901c90506001818581611d9457611d946123e7565b048201901c90506001818581611dac57611dac6123e7565b048201901c9050611dcb818581611dc557611dc56123e7565b04821190565b90039392505050565b80825d5050565b5f5f60205f8451602086015f885af180611dfa576040513d5f823e3d81fd5b50505f513d91508115611e11578060011415611e1e565b6001600160a01b0384163b155b15611e4757604051635274afe760e01b81526001600160a01b0385166004820152602401610d55565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611e9e8482611f35565b611e47576040516001600160a01b0384811660248301525f6044830152611ed291869182169063095ea7b390606401610e00565b611e478482611ddb565b5f611ef4600160701b6001600160701b03841661282f565b92915050565b5f611f0e6001600160701b03831684612860565b9392505050565b5f611f0e611f2b611f268585611f7e565b611fbc565b600160601b611fdc565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611f7457508115611f665780600114611f74565b5f866001600160a01b03163b115b9695505050505050565b5f815f03611f8a575f5ffd5b5f611f95848461203c565b90506f7fffffffffffffffffffffffffffffff6001600160801b0382161115611f0e575f5ffd5b5f5f82600f0b1215611fcc575f5ffd5b611ef4604083600f0b901b61219b565b5f815f03611fe757505f5b5f83600f0b1215611ff6575f5ffd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115612024575f5ffd5b60401b8119811115612034575f5ffd5b019392505050565b5f815f03612048575f5ffd5b5f6001600160c01b0384116120725782604085901b8161206a5761206a6123e7565b049050612188565b60c084811c640100000000811061208b576020918201911c5b62010000811061209d576010918201911c5b61010081106120ae576008918201911c5b601081106120be576004918201911c5b600481106120ce576002918201911c5b600281106120dd576001820191505b60bf820360018603901c6001018260ff0387901b816120fe576120fe6123e7565b0492506001600160801b03831115612114575f5ffd5b608085901c83026001600160801b038616840260c088901c604089901b82811015612140576001820391505b608084901b92900382811015612157576001820391505b829003608084901c821461216d5761216d61288e565b88818161217c5761217c6123e7565b04870196505050505050505b6001600160801b03811115611f0e575f5ffd5b5f815f036121aa57505f919050565b816001600160801b82106121c35760809190911c9060401b5b600160401b82106121d95760409190911c9060201b5b64010000000082106121f05760209190911c9060101b5b6201000082106122055760109190911c9060081b5b61010082106122195760089190911c9060041b5b6010821061222c5760049190911c9060021b5b600882106122385760011b5b6001818581612249576122496123e7565b048201901c90506001818581612261576122616123e7565b048201901c90506001818581612279576122796123e7565b048201901c90506001818581612291576122916123e7565b048201901c905060018185816122a9576122a96123e7565b048201901c905060018185816122c1576122c16123e7565b048201901c905060018185816122d9576122d96123e7565b048201901c90505f8185816122f0576122f06123e7565b0490508082106123005780612302565b815b95945050505050565b8015158114610776575f5ffd5b6001600160a01b0381168114610776575f5ffd5b5f5f5f5f5f60a08688031215612340575f5ffd5b853594506020860135935060408601356123598161230b565b925060608601356123698161230b565b9150608086013561237981612318565b809150509295509295909350565b5f60208284031215612397575f5ffd5b8135611f0e81612318565b5f6101608284031280156123b4575f5ffd5b509092915050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417611ef457611ef46123bc565b634e487b7160e01b5f52601260045260245ffd5b5f82612409576124096123e7565b500490565b81810381811115611ef457611ef46123bc565b5f60208284031215612431575f5ffd5b5051919050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f825160a060208401526124bc60c0840182612473565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b80820180821115611ef457611ef46123bc565b5f82612519576125196123e7565b500690565b63ffffffff8281168282160390811115611ef457611ef46123bc565b5f8160020b8360020b80612550576125506123e7565b627fffff1982145f1982141615612569576125696123bc565b90059392505050565b5f8260020b8260020b028060020b9150808214612591576125916123bc565b5092915050565b5f8160020b627fffff1981036125b0576125b06123bc565b5f0392915050565b5f602082840312156125c8575f5ffd5b8151611f0e81612318565b81516001600160a01b03168152610160810160208301516125ff60208401826001600160a01b03169052565b506040830151612616604084018262ffffff169052565b50606083015161262b606084018260020b9052565b506080830151612640608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008301516101008301526101208301516126876101208401826001600160a01b03169052565b5061014092830151919092015290565b5f5f5f5f608085870312156126aa575f5ffd5b845160208601519094506001600160801b03811681146126c8575f5ffd5b6040860151606090960151949790965092505050565b5f82825180855260208501945060208160051b830101602085015f5b8381101561272c57601f19858403018852612716838351612473565b60209889019890935091909101906001016126fa565b50909695505050505050565b602081526127526020820183516001600160a01b03169052565b602082015160408201525f604083015161277760608401826001600160a01b03169052565b5060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e083015260e08301516127d761010084018261ffff169052565b506101008301516101406101208401526127f5610160840182612473565b9050610120840151601f198483030161014085015261230282826126de565b5f60208284031215612824575f5ffd5b8151611f0e8161230b565b6001600160e01b03818116838216818102909216918183048114821517612858576128586123bc565b505092915050565b5f6001600160e01b03831680612878576128786123e7565b6001600160e01b03929092169190910492915050565b634e487b7160e01b5f52600160045260245ffdfea2646970667358221220171e1fa2432c657c44faa122b267de9daccb61fe8ba784690b8a9ded283aff4d64736f6c634300081c0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220792f7625371e21219a06efc6b9fa43b84e2cf9409b264b603b4becb413e16efd64736f6c634300081c0033