0 txs
40 calls
constructor
constructor()
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
deposits
viewfunction deposits(uint256) view returns (address owner, uint128 liquidity, address token0, address token1)
feeCollector
viewfunction feeCollector() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
marketTokenIds
viewfunction marketTokenIds(address, uint256) view returns (uint256)
onERC721Received
viewfunction onERC721Received(address, address, uint256, bytes) view returns (bytes4)
orderManager
viewfunction orderManager() view returns (address)
permit2
viewfunction permit2() view returns (address)
poolManager
viewfunction poolManager() view returns (address)
positionManager
viewfunction positionManager() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
swapValidator
viewfunction swapValidator() view returns (address)
tokenConverter
viewfunction tokenConverter() view returns (address)
tokenIdMarket
viewfunction tokenIdMarket(uint256) view returns (address)
ensurePermit2Approvals
nonpayablefunction ensurePermit2Approvals(address[] tokens, uint256[] amounts)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _poolManager, address _positionManager, address _permit2)
mintAndProvideLiquidity
nonpayablefunction mintAndProvideLiquidity(address truthMarket, uint256 paymentTokenAmount)
mintAndProvideLiquidityWithPrice
nonpayablefunction mintAndProvideLiquidityWithPrice(address truthMarket, uint256 paymentTokenAmount, uint256 yesInitialPrice, uint256 singleSidedLiquidityAmount)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 tokenId)
removeMarketLiquidity
nonpayablefunction removeMarketLiquidity(address market)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setOrderManager
nonpayablefunction setOrderManager(address _orderManager)
setSwapValidator
nonpayablefunction setSwapValidator(address _swapValidator)
setTokenConverter
nonpayablefunction setTokenConverter(address _tokenConverter)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawAllToken
nonpayablefunction withdrawAllToken(address token, address to)
withdrawToken
nonpayablefunction withdrawToken(address token, uint256 amount, address to)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
FeeCollectorUpdated
event FeeCollectorUpdated(address indexed feeCollector)
Initialized
event Initialized(uint8 version)
LiquidityRemoved
event LiquidityRemoved(address indexed market, uint256 indexed tokenId)
MarketLiquidityProvided
event MarketLiquidityProvided(address indexed market)
MarketLiquidityRemoved
event MarketLiquidityRemoved(address indexed market)
OrderManagerUpdated
event OrderManagerUpdated(address indexed orderManager)
PositionBurned
event PositionBurned(address indexed market, uint256 indexed tokenId)
PositionCreated
event PositionCreated(address indexed market, uint256 indexed tokenId, uint128 liquidity)
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)
TokenConverterUpdated
event TokenConverterUpdated(address indexed tokenConverter)
Upgraded
event Upgraded(address indexed implementation)
errors
ArrayLengthMismatch
error ArrayLengthMismatch()
InvalidLiquidityAmount
error InvalidLiquidityAmount()
InvalidMarket
error InvalidMarket()
InvalidPaymentAmount
error InvalidPaymentAmount()
InvalidPrice
error InvalidPrice()
InvalidPriceRatio
error InvalidPriceRatio()
InvalidRecipient
error InvalidRecipient()
InvalidSlippageTolerance
error InvalidSlippageTolerance()
InvalidTickRange
error InvalidTickRange()
NoLiquidityPositions
error NoLiquidityPositions()
OnlyPositionManager
error OnlyPositionManager()
PoolNotInitialized
error PoolNotInitialized()
TickOutOfBounds
error TickOutOfBounds()
UnsupportedMarketVersion
error UnsupportedMarketVersion()
creation bytecode
0x60a0806040523460d657306080525f549060ff8260081c166084575060ff80821603604b575b6040516151fb90816100db82396080518181816114a3015281816115fd01526119cf0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f6025565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a71461286a5750806312261ee714612841578063150b7a02146127b05780631a5a8e8c1461276c578063248a9ca3146127395780632f2ff15d1461268057806331c1aa3f14611ce257806336568abe14611c4f5780633659cfe6146119b05780633aeebedb146118e25780633ccdbb28146118735780634f1ef2861461158757806351f8705a1461155357806352d1902d1461149057806358700bed14611466578063791b98bc1461143c57806391d14854146113f25780639c8f9f23146112ae578063a217fddf14611292578063a42dce8014611218578063a67aee1f146111ee578063b02c43d01461117e578063b73178bf146107e2578063c0c53b8b14610522578063c0da840d146104b9578063c415b95c1461048f578063c56aa16614610426578063d28bb1b2146103ce578063d547741f14610387578063dc4c90d31461035d578063f002d74b1461028d578063f9b6117f146102635763fbe4bc3714610189575f80fd5b34610234576040366003190112610234576101a26128bd565b6101aa612d49565b6001600160a01b038116908115610254576101c490612e15565b156102455781906101d3612f87565b303b1561024257604051906331c1aa3f60e01b82526004820152602435602482015260326044820152816064820152818160848183305af180156102375761021f575b50600160fb5580f35b8161022991612949565b61023457805f610216565b80fd5b6040513d84823e3d90fd5b50fd5b63dec895c360e01b8252600482fd5b639db8d5b160e01b8352600483fd5b5034610234578060031936011261023457610133546040516001600160a01b039091168152602090f35b5034610234576040366003190112610234576004356001600160401b038111610359576102be9036906004016129ae565b6024356001600160401b038111610355576102dd9036906004016129ae565b916102e6612d49565b6102ee612f87565b82810361034657845b8181106103075785600160fb5580f35b610312818387612c4c565b35906001600160a01b03821682036103425761033c600192610335838888612c4c565b35906131f9565b016102f7565b8680fd5b63512509d360e11b8552600485fd5b8380fd5b5080fd5b503461023457806003193601126102345761012d546040516001600160a01b039091168152602090f35b5034610234576040366003190112610234576103cb6004356103a76128d3565b906103c66103c1825f5260c9602052600160405f20015490565b612dc0565b6138ff565b80f35b5034610234576040366003190112610234576103e86128bd565b6001600160a01b0316815261013160205260408120805460243592908310156102345760206104178484612985565b90549060031b1c604051908152f35b5034610234576020366003190112610234576104406128bd565b610448612c5c565b61013580546001600160a01b0319166001600160a01b039290921691821790557faa77a54d963c19f507d9395c07a00f3a53c3b96633692280885aafd353b0ad968280a280f35b5034610234578060031936011261023457610134546040516001600160a01b039091168152602090f35b5034610234576020366003190112610234576104d36128bd565b6104db612c5c565b61013380546001600160a01b0319166001600160a01b039290921691821790557fd1c99dbb06b491ff9cac3a83f1700de2d3daf2d3be561f3e5dee80937bb5269a8280a280f35b50346102345760603660031901126102345761053c6128bd565b6105446128d3565b61054c6128e9565b9083549260ff8460081c1615938480956107d5575b80156107be575b156107625760ff198116600117865584610751575b506105a960ff865460081c1661059281613dac565b61059b81613dac565b6105a481613dac565b613dac565b600160fb5561012d80546001600160a01b03199081166001600160a01b039384161790915561012e805482169383169390931790925561012f8054909216921691909117905581805260c960209081526040808420335f908152925290205460ff1615610702575b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929825260c960209081526040808420335f908152925290205460ff1615610691575b61065a5780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92980835260c960209081526040808520335f8181529190935220805460ff191660011790559081907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8580a4610653565b81805260c960209081526040808420335f8181529190935220805460ff1916600117905580837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4610611565b61ffff19166101011785555f61057d565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156105685750600160ff821614610568565b50600160ff821610610561565b5034610234576020366003190112610234576107fc6128bd565b610804612d49565b6001600160a01b0381169081156102545761081e81612e15565b1561116f5761082b612f87565b8183526101316020526040832080541561116057610134546001600160a01b031680610f91575b508054805b610f225750508183526101316020526040832080549084815581610f04575b505060405163a3dd261960e01b8152602081600481865afa908115610aa0578491610ec9575b506008811015610eb5579060078492146108de575b50807f4f0c5005c46eea79c9293cca4153e74cb161eae81f21acac234bac10a92b41fc91a2600160fb5580f35b604051632486d67160e01b8152602081600481875afa908115610a5a578391610e80575b50604051630786cdd960e51b8152602081600481885afa908115610aa0578491610e46575b506040516308d4f88560e11b815291602083600481895afa928315610e3b578593610dfb575b5060018103610aab57506040516370a0823160e01b8152306004820152926001600160a01b039091169150602083602481855afa928315610aa0578493610a65575b5082806109e7575b505050823b15610359576040519063db006a7560e01b82526004820152818160248183875af18015610237576109d2575b50505b815f6108b1565b816109dc91612949565b61035957815f6109c8565b60405163095ea7b360e01b81526001600160a01b039290921660048301526024820152906020908290604490829087905af18015610a5a57610a2b575b8082610997565b610a4c9060203d602011610a53575b610a448183612949565b8101906129ff565b505f610a24565b503d610a3a565b6040513d85823e3d90fd5b935091506020833d602011610a98575b81610a8260209383612949565b81010312610a9457849251915f61098f565b5f80fd5b3d9150610a75565b6040513d86823e3d90fd5b60028103610bdc5750506040516370a0823160e01b8152306004820152916001600160a01b039190911690602083602481855afa928315610aa0578493610ba5575b508280610b42575b505050823b15610359576040519063db006a7560e01b82526004820152818160248183875af1801561023757610b2d575b50506109cb565b81610b3791612949565b61035957815f610b26565b60405163095ea7b360e01b81526001600160a01b039290921660048301526024820152906020908290604490829087905af18015610a5a57610b86575b8082610af5565b610b9e9060203d602011610a5357610a448183612949565b505f610b7f565b935091506020833d602011610bd4575b81610bc260209383612949565b81010312610a9457849251915f610aed565b3d9150610bb5565b60039192945014610bf0575b5050506109cb565b6040516370a0823160e01b81523060048201526001600160a01b0391909116928590602083602481885afa928315610237578293610dc4575b506040516370a0823160e01b81523060048201526001600160a01b0391909116949092602084602481895afa938415610a5a578394610d8d575b5080610d1e575b50505080610cbb575b505050803b1561035957604051633415a4cf60e01b81528290818160048183875af1801561023757610ca6575b80610be8565b81610cb091612949565b61035957815f610ca0565b60405163095ea7b360e01b81526001600160a01b039290921660048301526024820152906020908290604490829087905af18015610a5a57610cff575b8080610c73565b610d179060203d602011610a5357610a448183612949565b505f610cf8565b60405163095ea7b360e01b81526001600160a01b038616600482015260248101919091529160209183916044918391905af18015610d8257610d63575b808691610c6a565b610d7b9060203d602011610a5357610a448183612949565b505f610d5b565b6040513d88823e3d90fd5b925092506020823d602011610dbc575b81610daa60209383612949565b81010312610a9457869151925f610c63565b3d9150610d9d565b915091506020813d602011610df3575b81610de160209383612949565b81010312610a9457859051915f610c29565b3d9150610dd4565b9092506020813d602011610e33575b81610e1760209383612949565b81010312610e2f57610e28906129de565b915f61094d565b8480fd5b3d9150610e0a565b6040513d87823e3d90fd5b90506020813d602011610e78575b81610e6160209383612949565b8101031261035557610e72906129de565b5f610927565b3d9150610e54565b9250506020823d602011610ead575b81610e9c60209383612949565b81010312610a94578391515f610902565b3d9150610e8f565b634e487b7160e01b84526021600452602484fd5b90506020813d602011610efc575b81610ee460209383612949565b8101031261035557516008811015610355575f61089c565b3d9150610ed7565b845260208420908101905b8181101561087657848155600101610f0f565b5f198101818111610f7d5790610f3b610f689284612985565b905460039190911b1c80875261013260205260408720546001600160a01b03168614610f6e575b50612c40565b80610857565b610f7790613b88565b5f610f62565b634e487b7160e01b86526011600452602486fd5b6040516368c1ff7760e11b81529061014082600481885afa8015610d82578692879161112b575b50604051926060610fc98186612949565b60028552604090895b8281106110f757505050610fe584612be0565b52610fef83612be0565b50610ff983612bed565b5261100382612bed565b50803b156110f35790859160405191637de5df3560e11b835260248301602060048501528151809152602060448501920190855b8181106110cb575050508391838381809403925af18015610237576110b6575b50610135546001600160a01b031680611071575b50610852565b803b15610359578180916024604051809481936378e9df5160e01b83528a60048401525af18015610237571561106b57816110ab91612949565b61035557835f61106b565b816110c091612949565b61035557835f611057565b919394955091602060a0826110e36001948851612bfd565b0194019101918995949392611037565b8580fd5b602090604051611106816128ff565b8c81528c838201528c60408201528c848201528c608082015282828a01015201610fd2565b90506111509192506101403d8111611159575b6111488183612949565b810190612a9f565b9190915f610fb8565b503d61113e565b63d63f379960e01b8452600484fd5b63dec895c360e01b8352600483fd5b503461023457602036600319011261023457604060809160043581526101306020522060018060a01b03815416906001600160801b036001820154169060018060a01b0360028201541690600360018060a01b039101541691604051938452602084015260408301526060820152f35b5034610234578060031936011261023457610135546040516001600160a01b039091168152602090f35b5034610234576020366003190112610234576112326128bd565b61123a612c5c565b6001600160a01b031680156112835761013480546001600160a01b031916821790557fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f8280a280f35b634e46966960e11b8252600482fd5b5034610234578060031936011261023457602090604051908152f35b5034610234576020366003190112610234576004356112cb612d49565b6112d3612f87565b6112dc81613b88565b80825261013260205260408220546001600160a01b03169081611303575b82600160fb5580f35b8183526101316020526040832091835b8354808210156113e857836113288387612985565b90549060031b1c1461133d5750600101611313565b929391925f198101908111610f7d579061136b61135d6113839385612985565b90549060031b1c9184612985565b90919082549060031b91821b915f19901b1916179055565b805480156113d4575f1901906113998282612985565b8154905f199060031b1b19169055555b7fc2c3f06e49b9f15e7b4af9055e183b0d73362e033ad82a07dec9bf98401717198380a35f806112fa565b634e487b7160e01b85526031600452602485fd5b50509091506113a9565b503461023457604036600319011261023457604061140e6128d3565b91600435815260c9602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b503461023457806003193601126102345761012e546040516001600160a01b039091168152602090f35b5034610234578060031936011261023457610136546040516001600160a01b039091168152602090f35b50346102345780600319360112610234577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036114e85760206040515f805160206151a68339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b50346102345760203660031901126102345760209060043581526101328252604060018060a01b0391205416604051908152f35b5060403660031901126102345761159c6128bd565b602435906001600160401b03821161186f573660238301121561186f57816004013591836115c98461296a565b916115d76040519384612949565b8483526020830194366024828401011161186f578060246020930187378301015261164f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661163130821415612b1e565b5f805160206151a6833981519152546001600160a01b031614612b7f565b611657612c5c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561168c57506103cb91506143f0565b6040516352d1902d60e01b81529091906001600160a01b03821690602081600481855afa86918161183b575b506117195760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f805160206151a6833981519152036117e457611735826143f0565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2838251158015906117dc575b611771575b5050505080f35b806117d29460405194611785606087612949565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020870152660819985a5b195960ca1b60408701525190845af46117cc614f67565b9161510c565b505f80808361176a565b506001611765565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011611867575b8161185760209383612949565b81010312610a945751905f6116b8565b3d915061184a565b8280fd5b50346102345760603660031901126102345761188d6128bd565b6118956128e9565b61189d612c5c565b6118a5612f87565b6001600160a01b038116156118d3576118cb9160243591906001600160a01b0316613980565b600160fb5580f35b634e46966960e11b8352600483fd5b5034610234576040366003190112610234576118fc6128bd565b6119046128d3565b9061190d612c5c565b611915612f87565b6001600160a01b038216156118d3576040516370a0823160e01b81523060048201526001600160a01b039190911691602082602481865afa918215610aa057849261197c575b508161196b575b83600160fb5580f35b61197492613980565b5f8080611962565b9091506020813d6020116119a8575b8161199860209383612949565b81010312610a945751905f61195b565b3d915061198b565b5034610234576020366003190112610234576119ca6128bd565b611a037f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661163130821415612b1e565b611a0b612c5c565b602090604051611a1b8382612949565b83815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a605750506103cb91506143f0565b6040516352d1902d60e01b81529192916001600160a01b038316908581600481855afa879181611c20575b50611aec5760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b9394937fc9f76b5ec45e5cdef99837d7b6d2467235c1df8933c8ca56df5c35afa2c7d44401611bc957908591611b21846143f0565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115801590611bc2575b611b5d575b505050505080f35b611bb79482917f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405196611b93606089612949565b60278852870152660819985a5b195960ca1b60408701525190845af46117cc614f67565b505f80808381611b55565b5081611b50565b60405162461bcd60e51b815260048101859052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611c48575b611c388183612949565b81010312610a945751905f611a8b565b503d611c2e565b503461023457604036600319011261023457611c696128d3565b336001600160a01b03821603611c85576103cb906004356138ff565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b5034610a94576080366003190112610a9457611cfc6128bd565b60243560443560643592611d0e612d49565b6001600160a01b03811693841561267157611d2882612e15565b1561266257611d35612f87565b82158015612657575b61264857831561263957604051633013ce2960e01b8152602081600481895afa9081156125c3575f916125ff575b506001600160a01b0316936064848103949085116125eb57611d8e83836129f2565b60405163095ea7b360e01b81526001600160a01b0386166004820152602481018290526020816044815f8c5af180156125c3576125ce575b50873b15610a94576040519063140e25ad60e31b825260048201525f81602481838c5af180156125c3576125ae575b506040516368c1ff7760e11b815290610140826004818b5afa9384156125a35789928a9561257c575b50610133548a906001600160a01b0316806124c1575b505060018060a01b038351169160018060a01b03602085015116978b8b600460018060a01b038a51169b602060018060a01b03818d0151169360405193848092630786cdd960e51b82525afa918215610aa0578f90859361247e575b506020600491604051928380926308d4f88560e11b82525afa9485156124725794612432575b508d808914988993849a61241f575b84156123f7575b50505050156123e8578b808c149b8c93849d6123d5575b84156123ad575b505050501561239e5781611f0f8a611f1593611f09886064978b612fee565b8a612fee565b86612ac6565b048085039480861161238a5760405163313ce56760e01b8152998c60208c600481855afa9b8c1561237d57602060ff8f9e6004938591612360575b50169d60405192838092630786cdd960e51b82525afa908115610237578291612321575b5060405163313ce56760e01b815290602090829060049082906001600160a01b03165afa9889156102375760208f9260049b60ff918691612304575b5016926040519b8c80926308d4f88560e11b82525afa998a15610a5a57839a6122c5575b5060405163313ce56760e01b8152996020908b9060049082906001600160a01b03165afa8015610a5a578f908f9b9060ff918691612296575b50169a61201984612b10565b6120239088612ac6565b61202c82612b10565b61203591612ad9565b9661203f8d612b10565b61204891612ac6565b61205182612b10565b61205a91612ad9565b9361206490612b10565b61206e908a612ac6565b9061207890612b10565b61208191612ad9565b9e8f9b61208d90612b10565b612097908a612ac6565b906120a190612b10565b6120aa91612ad9565b9a6120b590876129f2565b956120c08c856129f2565b966120cb848a6129f2565b90604051630786cdd960e51b81528080865a92600491602094fa90811561228b578891612240575b50936121036020926004966131f9565b6040516308d4f88560e11b815294859182905afa968715610d82578f988f988e9589916121de575b5061215f95936121769c936121458d979461214a946131f9565b6131f9565b8c156121d757815b8d156121c8575090613472565b8c156121d05780925b508c156121c8575090613472565b6121a9575b88887f2f9eb3607e1ab9527e84637029cbf03ef11854f6342d9be56434e8f8ea66a9138280a2600160fb5580f35b846121b7926121bc9861361d565b61361d565b5f80808080808061217b565b905090613472565b8192612168565b8091612152565b9395505097509197506020813d602011612238575b8161220060209383612949565b810103126110f357612176988f988f9861215f958f949561214561214a936122288f996129de565b945094975050939c50939561212b565b3d91506121f3565b9490506020853d602011612283575b8161225c60209383612949565b8101031261227f576121036020926122756004976129de565b92965092506120f3565b8780fd5b3d915061224f565b6040513d8a823e3d90fd5b6122b8915060203d6020116122be575b6122b08183612949565b810190612af7565b5f61200d565b503d6122a6565b995060208a3d6020116122fc575b816122e060209383612949565b8101031261186f5760206122f560049b6129de565b9a50611fd4565b3d91506122d3565b61231b9150833d85116122be576122b08183612949565b5f611fb0565b90506020813d602011612358575b8161233c60209383612949565b810103126103595760206123516004926129de565b9150611f74565b3d915061232f565b6123779150833d85116122be576122b08183612949565b5f611f50565b50604051903d90823e3d90fd5b634e487b7160e01b8c52601160045260248cfd5b639db8d5b160e01b8c5260048cfd5b6001600160a01b031614925090826123cb575b50505f8b8180611eea565b1490508a5f6123c0565b6001600160a01b03811684149450611ee3565b639db8d5b160e01b8e5260048efd5b6001600160a01b03161492509082612415575b50505f8d8180611ecc565b1490508c5f61240a565b6001600160a01b03811684149450611ec5565b9093506020813d60201161246a575b8161244e60209383612949565b810103126124665761245f906129de565b925f611eb6565b8f80fd5b3d9150612441565b604051903d90823e3d90fd5b9250506020823d6020116124b9575b8161249a60209383612949565b810103126103555760048f926124b16020916129de565b939150611e90565b3d915061248d565b60a085209060a0882091813b1561035557839160448392604051948593849263051f24b160e51b84526004840152600160248401525af1908115610a5a578391612567575b5050610133546001600160a01b031690813b1561186f57829160448392604051948593849263051f24b160e51b84526004840152600160248401525af180156102375715611e34578161255891612949565b61256357895f611e34565b8980fd5b8161257191612949565b61035957815f612506565b9094506125999192506101403d8111611159576111488183612949565b919091935f611e1e565b6040513d8b823e3d90fd5b6125bb9198505f90612949565b5f965f611df5565b6040513d5f823e3d90fd5b6125e69060203d602011610a5357610a448183612949565b611dc6565b634e487b7160e01b5f52601160045260245ffd5b90506020813d602011612631575b8161261a60209383612949565b81010312610a945761262b906129de565b5f611d6c565b3d915061260d565b637e2897ef60e11b5f5260045ffd5b63e598f05760e01b5f5260045ffd5b506064831015611d3e565b63dec895c360e01b5f5260045ffd5b639db8d5b160e01b5f5260045ffd5b34610a94576040366003190112610a945760043561269c6128d3565b906126b66103c1825f5260c9602052600160405f20015490565b805f5260c960205260405f2060018060a01b0383165f5260205260ff60405f205416156126df57005b5f81815260c9602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4005b34610a94576020366003190112610a945760206127646004355f5260c9602052600160405f20015490565b604051908152f35b34610a94576020366003190112610a94576127856128bd565b61278d612c5c565b61013680546001600160a01b0319166001600160a01b0392909216919091179055005b34610a94576080366003190112610a94576127c96128bd565b506127d26128d3565b506064356001600160401b038111610a945736602382011215610a945780600401356001600160401b038111610a945736910160240111610a945761012e546001600160a01b0316330361283257604051630a85bd0160e11b8152602090f35b637b7524c960e01b5f5260045ffd5b34610a94575f366003190112610a945761012f546040516001600160a01b039091168152602090f35b34610a94576020366003190112610a94576004359063ffffffff60e01b8216809203610a9457602091637965db0b60e01b81149081156128ac575b5015158152f35b6301ffc9a760e01b149050836128a5565b600435906001600160a01b0382168203610a9457565b602435906001600160a01b0382168203610a9457565b604435906001600160a01b0382168203610a9457565b60a081019081106001600160401b0382111761291a57604052565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b0382111761291a57604052565b90601f801991011681019081106001600160401b0382111761291a57604052565b6001600160401b03811161291a57601f01601f191660200190565b805482101561299a575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b9181601f84011215610a94578235916001600160401b038311610a94576020808501948460051b010111610a9457565b51906001600160a01b0382168203610a9457565b919082018092116125eb57565b90816020910312610a9457518015158103610a945790565b51908160020b8203610a9457565b91908260a0910312610a9457604051612a3d816128ff565b8092612a48816129de565b8252612a56602082016129de565b602083015260408101519062ffffff82168203610a94576080916040840152612a8160608201612a17565b60608401520151906001600160a01b0382168203610a945760800152565b919061014083820312610a94578060a0612abc612ac39386612a25565b9401612a25565b90565b818102929181159184041417156125eb57565b8115612ae3570490565b634e487b7160e01b5f52601260045260245ffd5b90816020910312610a94575160ff81168103610a945790565b604d81116125eb57600a0a90565b15612b2557565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15612b8657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b80511561299a5760200190565b80516001101561299a5760400190565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b80156125eb575f190190565b919081101561299a5760051b0190565b335f9081527f81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be756602052604090205460ff1615612c9457565b612d456020612d256011612ca733614487565b603784612cb35f61456e565b6040519687947f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000828701528051918291018587015e8401907001034b99036b4b9b9b4b733903937b6329607d1b84830152805192839101604883015e01015f838201520301601f198101835282612949565b60405162461bcd60e51b8152602060048201529182916024830190613ad6565b0390fd5b335f9081527fc99cfc74cbb51adc7ca8731c432a51a31a086a1789003f0b773be6e802362bf4602052604090205460ff1615612d8157565b612d456020612d256011612d9433614487565b603784612cb37f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961456e565b5f81815260c96020908152604080832033845290915290205460ff1615612de45750565b6020612d256011612d4593603784612cb3612dfe33614487565b9361456e565b90815181101561299a570160200190565b6040516001621794a360e21b03198152905f90829060049082906001600160a01b03165afa5f9181612f0c575b50612e4c57505f90565b80519060038210159182612ee8575b5081612ec1575b81612e97575b81612e71575090565b809150516002101561299a5760220151603960f81b6001600160f81b0319909116111590565b809150516002101561299a576022810151600360fc1b6001600160f81b0319909116101590612e68565b809150516001101561299a5760218101516001600160f81b031916601760f91b1490612e62565b9091501561299a5760208101516001600160f81b031916601960f91b14905f612e5b565b9091503d805f833e612f1e8183612949565b810190602081830312610a94578051906001600160401b038211610a94570181601f82011215610a9457805190612f548261296a565b92612f626040519485612949565b82845260208383010111610a9457815f9260208093018386015e83010152905f612e42565b600260fb5414612f9857600260fb55565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b60ff16604d81116125eb57600a0a90565b61012d5460a082206001600160a01b03909116935f9390916130109086613e0c565b5050506001600160a01b03166131df57825160208085015160405163313ce56760e01b8152946001600160a01b039182169390929186916004918391165afa9182156125c3576004945f936131bd575b506020906040519586809263313ce56760e01b82525afa9384156125c3575f9461319c575b50156131785760646130a4869361309e6130ab94612fdd565b90612ac6565b0492612fdd565b9061316457905b8115801561315c575b61314e5760209284613103936130e56130e060c49560018060a01b039360c01b612ad9565b614607565b1696604051978895869463313b65df60e11b86526004860190612bfd565b60a48401525af1801561237d57613118575050565b6020823d602011613146575b8161313160209383612949565b81010312610234575061314390612a17565b50565b3d9150613124565b62bfc92160e01b8452600484fd5b5080156130bb565b634e487b7160e01b84526011600452602484fd5b606491945061318961319591612fdd565b9461309e5f9694612fdd565b04906130b2565b6131b691945060203d6020116122be576122b08183612949565b925f613085565b60209193506131d890823d84116122be576122b08183612949565b9290613060565b5050505050565b519065ffffffffffff82168203610a9457565b61012f54604051636eb1769f60e11b81523060048201526001600160a01b03918216602482018190529183169291602082604481875afa80156125c35785925f9161343c575b5082116133db575b505061012f5461012e5460405163927da10560e01b81523060048201526001600160a01b03938416602482015290831660448201819052929091169390606081606481885afa9081156125c35782905f905f9361337b575b506001600160a01b03161090811561335d575b506132be575b50505050565b6001600160a01b0381111561334e57506001600160a01b03925b620151804201928342116125eb57813b15610a94575f60849265ffffffffffff829660405198899788966387517c4560e01b88526004880152602487015260018060a01b031660448601521660648401525af180156125c35761333e575b8080806132b8565b5f61334891612949565b5f613336565b6001600160a01b0316926132d8565b9050610e104201908142116125eb5765ffffffffffff16105f6132b2565b925050506060813d6060116133d3575b8161339860609383612949565b81010312610a945780516001600160a01b0381168103610a945782906133cc60406133c5602086016131e6565b94016131e6565b505f61329f565b3d915061338b565b60405163095ea7b360e01b81526001600160a01b0391909116600482015260248101919091526020816044815f875af180156125c35761341d575b8390613247565b6134359060203d602011610a5357610a448183612949565b505f613416565b9250506020823d60201161346a575b8161345860209383612949565b81010312610a9457848092519061323f565b3d915061344b565b929190926060820193845160020b9061348f82620d89e7196135e4565b8215612ae35782620d89e7190760020b613582575b956134b28361351098613606565b92620d89e7198460020b12613566575b620d89e88460020b13613550575b505160020b926134ec846134e781620d89e86135e4565b613606565b93620d89e7198560020b1261352a575b620d89e88560020b13613514575b50613f6a565b5050565b6135239194506134e7816135d3565b925f61350a565b935061354a846134e7816135456135408261359a565b6135b8565b6135e4565b936134fc565b61355f9193506134e7816135d3565b915f6134d0565b925061357c836134e7816135456135408261359a565b926134c2565b60020b95627fffff1987146125eb57955f19016134a4565b60020b620d89e7190190627fffff198212627fffff8313176125eb57565b60020b5f190190627fffff198212627fffff8313176125eb57565b60020b8015612ae357620d89e80590565b60020b9060020b908115612ae357627fffff1981145f198314166125eb570590565b9060020b9060020b02908160020b9182036125eb57565b5f949381156138f757825160208401516001600160a01b0390811692911681156138f057825b82156138e85750915b6060850192835160020b916040519260408401908482106001600160401b0383111761291a576040919091525f80855260208501908152926136af91906001600160a01b03808216908516106138da576136a982620d89e8613ec5565b93614a79565b60020b9060020b8181125f146138d057835281525b610136546001600160a01b031680613871575b5061012d5460a087206136f2916001600160a01b0316613e0c565b509094916001600160a01b0316159050613862571561381857505160020b90825160020b9060020b03627fffff8113627fffff198212176138045761373f61377a91845160020b90613ec5565b9261376f6137636137588b97955b845160020b906135e4565b835160020b90613606565b94825160020b906135e4565b905160020b90613606565b928360020b8360020b818112156137f657620d89e71981129081156137e9575b506137da57620d89e71981129081156137cd575b506137be57613510969750613f6a565b633e1f710360e21b8852600488fd5b620d89e89150135f6137ae565b633e1f710360e21b8952600489fd5b620d89e89150135f61379a565b6264847d60e41b8a5260048afd5b634e487b7160e01b88526011600452602488fd5b9190508293925160020b9060020b01627fffff198112627fffff8213176138045761384b61377a91855160020b90613ec5565b915160020b929361376f6137636137588b9561374d565b63486aa30760e01b8a5260048afd5b60a08720835160020b835160020b92803b15610a94575f92836064926040519687958694631d3d07d560e31b86526004860152602485015260448401525af180156125c357156136d7576138c89199505f90612949565b5f975f6136d7565b90835281526136c4565b6136a982620d89e719613ec5565b90509161364c565b8092613643565b505050509050565b805f5260c960205260405f2060018060a01b0383165f5260205260ff60405f205416613929575050565b5f81815260c9602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4565b60405163a9059cbb60e01b602082019081526001600160a01b03939093166024820152604480820194909452928352613a149291905f9081906139c4606486612949565b60018060a01b031692604051946139dc604087612949565b602086527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020870152519082855af16117cc614f67565b8051908115918215613a82575b505015613a2a57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b613a9592506020809183010191016129ff565b5f80613a21565b60405160609190613aad8382612949565b6002815291601f1901825f5b828110613ac557505050565b806060602080938501015201613ab9565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90613b0d90604083526040830190613ad6565b906020818303910152815180825260208201916020808360051b8301019401925f915b838310613b3f57505050505090565b9091929394602080613b5d600193601f198682030187528951613ad6565b97019301930191939290613b30565b929190613b83602091604086526040860190613ad6565b930152565b604051600360f81b6020820152601160f81b602182015260028152613bae602282612949565b5f90825f5261013060205260405f20604051613bc98161292e565b81546001600160a01b03908116825260018301546001600160801b031660208301526002830154811660408301908152600390930154166060909101908152613c8b613c13613a9c565b926040518760208201525f60408201525f60608201526080808201525f60a082015260a08152613c4460c082612949565b613c4d85612be0565b52613c5784612be0565b50519151604080516001600160a01b0394851660208201529390911690830152306060808401919091528252608082612949565b613c9482612bed565b52613c9e81612bed565b50603c42018042116125eb57613cda60018060a01b0361012e541693613ccc60405194859260208401613afa565b03601f198101845283612949565b823b15610a9457613d04925f928360405180968195829463dd46508f60e01b845260048401613b6c565b03925af180156125c357613d99575b5081815261013260205260018060a01b0360408220541690828152610130602052806003604082208281558260018201558260028201550155828152610132602052604081206001600160601b0360a01b815416905581613d7357505050565b807fed74d7b7c481ed25046eda5ec37f1b67b45270d8db43f82d1d85c3b04933bb5491a3565b613da591505f90612949565b5f80613d13565b15613db357565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b91906020906040518281019182526006604082015260408152613e30606082612949565b519020604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa9182156125c3575f92613e91575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011613ebd575b81613ead60209383612949565b81010312610a945751905f613e69565b3d9150613ea0565b81613ed081836135e4565b9160020b5f81129081613f50575b50613f38575b613eed91613606565b90620d89e7198260020b12613f1c575b620d89e88260020b13613f0e575090565b612ac391506134e7816135d3565b9050613f32816134e7816135456135408261359a565b90613efd565b5060020b627fffff1981146125eb575f190181613ee4565b91905060020b8015612ae35783910760020b15155f613ede565b959391929490945f8715806143e8575b6143d957835160208501805161012d5460a088206001600160a01b0392831698948316979492613faa9216613e0c565b5050506001600160a01b0381169081156143ca578c90613fc98b61474c565b8d613fd38a61474c565b9283836001600160a01b03808316908216116143bf575b50506001600160a01b038316861161435c5750506140089350614f1a565b975b889a612742908d8281029e8f048314901517156125eb578181029181830414901517156125eb57604051600160f91b6020820152600d60f81b6021820152600281529c61405860228f612949565b614060613a9c565b9a6001600160801b031697604051936020850161407d9087612bfd565b60020b60c085015260020b60e08401528761010084015261271090046001600160801b031661012083015261271090046001600160801b031661014082015230610160820152610180810161018090526101a081015f90526101a081526140e66101c082612949565b6140ef89612be0565b526140f988612be0565b50519051604080516001600160a01b03938416602082015292909116828201528152614126606082612949565b61412f87612bed565b5261413986612bed565b5061012e54604051631d5e528f60e21b8152966001600160a01b03909116908780835a92600491602094fa9788156125c3575f98614328575b50879a603c4201908142116125eb5761419790613ccc60405194859260208401613afa565b823b15610a94576141c1925f928360405180968195829463dd46508f60e01b845260048401613b6c565b03925af180156125c357614313575b506001600160a01b031680825261013160205260408220805490680100000000000000008210156142ff576040926142198961136b858295600160039d9c9b9a98018155612985565b818352610132602052838320816001600160601b0360a01b8254161790557fa0528c820d2e814dd0217a9ed9c8eb103a0b8d34b5f7065d4e7754126cc4c05660208551878152a381519661426c8861292e565b308852602080890194855283890195865260608901968752908252610130905220945185546001600160a01b03199081166001600160a01b0392831617875591516001870180546fffffffffffffffffffffffffffffffff19166001600160801b039290921691909117905591516002860180548316918416919091179055915192909301805490911691909216179055565b634e487b7160e01b84526041600452602484fd5b6143209192505f90612949565b5f905f6141d0565b9097506020813d602011614354575b8161434460209383612949565b81010312610a945751965f614172565b3d9150614337565b919490939192906001600160a01b03821611156143b3578291614383916143899594614f1a565b93614ee0565b6001600160801b0381166001600160801b038316105f146143ac57505b9761400a565b90506143a6565b9150506143a692614ee0565b945092505f80613fea565b63486aa30760e01b5f5260045ffd5b631f2c4df760e11b5f5260045ffd5b508615613f7a565b803b1561442c5760018060a01b03166001600160601b0360a01b5f805160206151a68339815191525416175f805160206151a683398151915255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b614491602a61296a565b9061449f6040519283612949565b602a82526144ad602a61296a565b6020830190601f190136823782511561299a576030905381516001101561299a576078602183015360295b6001811161452c57506144e85790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f811690601082101561299a57614569916f181899199a1a9b1b9c1cb0b131b232b360811b901a61455f8486612e04565b5360041c91612c40565b6144d8565b614578604261296a565b906145866040519283612949565b60428252614594604261296a565b6020830190601f190136823782511561299a576030905381516001101561299a576078602183015360415b600181116145cf57506144e85790565b90600f811690601082101561299a57614602916f181899199a1a9b1b9c1cb0b131b232b360811b901a61455f8486612e04565b6145bf565b8015614747576146d56001825f908460801c8061473b575b508060401c8061472e575b508060201c80614721575b508060101c80614714575b508060081c80614707575b508060041c806146fa575b508060021c806146ed575b50821c6146e6575b811c1b6146768184612ad9565b0160011c6146848184612ad9565b0160011c6146928184612ad9565b0160011c6146a08184612ad9565b0160011c6146ae8184612ad9565b0160011c6146bc8184612ad9565b0160011c6146ca8184612ad9565b0160011c8092612ad9565b808210156146e1575090565b905090565b8101614669565b600291509101905f614661565b600491509101905f614656565b600891509101905f61464b565b601091509101905f614640565b602091509101905f614635565b604091509101905f61462a565b9150506080905f61461f565b505f90565b60020b908160ff1d82810118620d89e88111614a665763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116614a4a575b60048116614a2e575b60088116614a12575b601081166149f6575b602081166149da575b604081166149be575b608081166149a2575b6101008116614986575b610200811661496a575b610400811661494e575b6108008116614932575b6110008116614916575b61200081166148fa575b61400081166148de575b61800081166148c2575b6201000081166148a6575b62020000811661488b575b620400008116614870575b6208000016614857575b5f1261484f575b0160201c90565b5f1904614848565b6b048a170391f7dc42444e8fa290910260801c90614841565b6d2216e584f5fa1ea926041bedfe9890920260801c91614837565b916e5d6af8dedb81196699c329225ee6040260801c9161482c565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91614821565b916f31be135f97d08fd981231505542fcfa60260801c91614816565b916f70d869a156d2a1b890bb3df62baf32f70260801c9161480c565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91614802565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916147f8565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916147ee565b916ff3392b0822b70005940c7a398e4b70f30260801c916147e4565b916ff987a7253ac413176f2b074cf7815e540260801c916147da565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916147d0565b916ffe5dee046a99a2a811c461f1969c30530260801c916147c6565b916fff2ea16466c96a3843ec78b326b528610260801c916147bd565b916fff973b41fa98c081472e6896dfb254c00260801c916147b4565b916fffcb9843d60f6159c9db58835c9266440260801c916147ab565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916147a2565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91614799565b916ffff97272373d413259a46990580e213a0260801c91614790565b826345c3193d60e11b5f5260045260245ffd5b60405163313ce56760e01b81525f93926001600160a01b039283169216602082600481865afa9182156125c3575f92614ebf575b5060405163313ce56760e01b815292602084600481855afa9384156125c3575f94614e9e575b5010614e8257614ae290612fdd565b614aed849192612fdd565b9061316457905b6001600160401b03811115614e72578060401c9060018201809211614e5e5791614b3182614b286130e094614b3796612ad9565b60c01b92612ad9565b90612ad9565b6001600160a01b038116929073fffd8963efd1fc6a506488495d951d5263988d268410614b695750505050620d89e890565b6401000276a3841115614e525773fffd8963efd1fc6a506488495d951d51639616826401000276a21985016001600160a01b031611614e3e5760201b640100000000600160c01b031680801561186f5760ff826001600160801b031060071b83811c6001600160401b031060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f14614e325750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c6780000000000000001690607f190160401b1717171717171717171717171717693627a301d71055774c85026f028f6481ab7f045a5af012a19d003aa919810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f1494612ac395614e0c5750509050613ec5565b6001600160a01b03614e1d8561474c565b16119050614e2b5750613ec5565b9050613ec5565b905081607f031b614c49565b6318521d4960e21b82526004849052602482fd5b50505050620d89e71990565b634e487b7160e01b85526011600452602485fd5b614b37916130e09160c01b612ad9565b9250614e8d90612fdd565b5f92614e9890612fdd565b90614af4565b614eb891945060203d6020116122be576122b08183612949565b925f614ad3565b614ed991925060203d6020116122be576122b08183612949565b905f614aad565b612ac392614f0f9290916001600160a01b0380831690821611614f14575b90036001600160a01b031690614f96565b6150e9565b90614efe565b612ac392614f0f929091906001600160a01b0380821690831611614f61575b614f4f6001600160a01b03828116908416615020565b9190036001600160a01b031691615069565b90614f39565b3d15614f91573d90614f788261296a565b91614f866040519384612949565b82523d5f602084013e565b606090565b90606082901b905f19600160601b840992828085109403938085039485841115610a945714615019578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b1115610a94571461506057600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f1981850993838086109503948086039586851115610a9457146150e1579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906001600160801b0382168092036150fd57565b6393dafdf160e01b5f5260045ffd5b9192901561516e5750815115615120575090565b3b156151295790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156151815750805190602001fd5b60405162461bcd60e51b815260206004820152908190612d45906024830190613ad656fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fe5872fc2973e1448dae18a871999f98f12c1c7519f2b699dc9f2f305075434c64736f6c634300081a0033