0 txs
120.6k calls
constructor
constructor()
functions
calcLiquidationPrice
viewfunction calcLiquidationPrice(bytes32 positionKey, bytes32 key, uint256 indexPrice, bool long) view returns (uint256 liqPrice, uint256 markPrice, bool liquidate, uint256 collateral, uint256 size)
getEOAaddress
viewfunction getEOAaddress(address _smartAccount) view returns (address)
getMarketFundingRate
viewfunction getMarketFundingRate(bytes32 key, uint256 indexPrice) view returns (int256 fundingRate)
getMarketOI
viewfunction getMarketOI(bytes32 key) view returns (uint256 marketOI, uint256 longOI, uint256 shortOI)
getMarkPrice
viewfunction getMarkPrice(bytes32 key, uint256 indexPrice) view returns (uint256 markPrice)
getPerpetualPrice
viewfunction getPerpetualPrice(bytes32 key, uint256 indexPrice) view returns (uint256)
getPerpetualPriceForPosition
viewfunction getPerpetualPriceForPosition(bytes32 key, uint256 indexPrice, int256 size, bool long) view returns (uint256)
getPositionsData
viewfunction getPositionsData(bytes32[] positionsKey) view returns (tuple[])
owner
viewfunction owner() view returns (address)
ownershipRegistry
viewfunction ownershipRegistry() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
totalWeights
viewfunction totalWeights() view returns (uint256)
unrealizedPnL
viewfunction unrealizedPnL() view returns (int256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
version
purefunction version() pure returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
chargeMakerFeeFromOrder
nonpayablefunction chargeMakerFeeFromOrder(address trader, bytes32 key, uint256 size)
initialize
nonpayablefunction initialize(address liqPool, address t, address usdc, address _users)
initializeMarket
nonpayablefunction initializeMarket(bytes32 key, uint256 weight, uint256 makerFeeMultiplier, uint256 takerFeeMultiplier, uint256 tradingFeeToLPs, uint256 tradingFeeToTreasury, uint256 fundingFeeToLPs, uint256 fundingFeeToTreasury, uint256 allowedLeverage, uint256 chillFactor)
liquidatePosition
nonpayablefunction liquidatePosition(address owner, bool isLong, uint256 indexPrice, bytes32 key)
modifyPosition
nonpayablefunction modifyPosition(address owner, uint256 collateral, uint256 size, uint256 indexPrice, bool isLong, bool isIncrease, bytes32 key, uint256 price, uint256 slippage, bool checkSlippage)
modifyPosition
nonpayablefunction modifyPosition(uint256 collateral, uint256 size, bool isLong, bool isIncrease, bytes32 key, uint256 price, uint256 slippage)
renounceOwnership
nonpayablefunction renounceOwnership()
setAutomationLiquidation
nonpayablefunction setAutomationLiquidation(bytes32 key, address automation)
setAutomationOrders
nonpayablefunction setAutomationOrders(bytes32 key, address automationOpen, address automationTp, address automationSl)
setAutomationPosition
nonpayablefunction setAutomationPosition(bytes32 key, address automation)
setLiquidityPool
nonpayablefunction setLiquidityPool(address _liquidityPool)
setOperator
nonpayablefunction setOperator(address _operator)
setOperatorPnL
nonpayablefunction setOperatorPnL(address _operator)
setTreasury
nonpayablefunction setTreasury(address _treasury)
setUsers
nonpayablefunction setUsers(address _users)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateFundingFeeGrowth
nonpayablefunction updateFundingFeeGrowth(tuple[] marketUpdate)
updateUnrealizedPnL
nonpayablefunction updateUnrealizedPnL(tuple[] marketUpdate)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
InitiateTrade
event InitiateTrade(address msgSender, uint256 collateral, uint256 size, bool isLong, bool isIncrease, bytes32 key, uint256 price, uint256 slippage)
ModifiedPosition
event ModifiedPosition(uint256 indexed positionId, address indexed owner, bytes32 indexed positionKey, bytes32 marketKey, bool isLong, uint256 size, uint256 collateral, uint256 price, uint256 perpetualPrice, uint256 txType, address eoa, uint256 badDebt, int256 trackingFundingFee)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PositionLiquidated
event PositionLiquidated(uint256 indexed positionId, address indexed owner, bytes32 indexed positionKey, bytes32 marketKey, uint256 perpetualPrice, uint256 liqPrice, int256 trackingFundingFee)
TradingFees
event TradingFees(bytes32 marketKey, address eoa, address trader, uint256 feeType, bool toLP, uint256 usdcAmount)
UpdatedFundingFeeGrowth
event UpdatedFundingFeeGrowth(uint256 perpetualPrice, uint256 fundingFeeToLPs)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
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
0x60a080604052346100e857306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b604051614e1090816100ed8239608051818181611f5a01526120560152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610054565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c8063018770201461346a5780630719da2d146122d9578063073814fa146122355780632ebb24a31461221b57806337ea6ea0146122015780634f1ef28614611fda578063522a4fd014611fae57806352d1902d14611f4757806354fd4d5014611f2b5780635f9c01d714611df65780636f75010d1461156c5780637100d69614611334578063715018a6146112b5578063735b10fb1461128057806377c6044b1461123457806379ba5097146111e45780637f2224d014610fd85780638b805e6514610f8c5780638da5cb5b14610f57578063926323d514610f39578063a74456ba14610f1b578063ad3cb1cc14610ebf578063af79293b14610d8f578063b3ab15fb14610d43578063bdccb048146108dd578063c2fa690d14610678578063d47b495f14610629578063d47c3bc114610590578063ddbbfa5614610540578063e30c39781461050b578063f0f44260146104bf578063f2fde38b14610439578063f8c8765e14610282578063fa8bce3d1461022e578063fe637432146101de5763ffbe7bbf146101a6575f80fd5b346101db5760203660031901126101db5760206101c96101c46134b4565b613f04565b6040516001600160a01b039091168152f35b80fd5b50346101db5760403660031901126101db576101f86134ca565b610200613f8c565b6004358252600a6020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b50346101db5760203660031901126101db576060906002604060043592838152600960205260018282200154938152600960205220015461026f818361372c565b9160405192835260208301526040820152f35b50346101db5760803660031901126101db5761029c6134b4565b6102a46134ca565b6102ac6134e0565b6102b46134f6565b915f80516020614d9b833981519152549360ff8560401c16159467ffffffffffffffff811680159081610431575b6001149081610427575b15908161041e575b5061040f5767ffffffffffffffff1981166001175f80516020614d9b83398151915255856103e3575b50610326614c62565b61032e614c62565b61033733614b83565b85546001600160a01b03199081166001600160a01b039283161787556001805482169383169390931790925560068054831693821693909317909255600280549091169290911691909117905561038b5780f35b68ff0000000000000000195f80516020614d9b83398151915254165f80516020614d9b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff191668010000000000000001175f80516020614d9b833981519152555f61031d565b63f92ee8a960e01b8752600487fd5b9050155f6102f4565b303b1591506102ec565b8791506102e2565b50346101db5760203660031901126101db576104536134b4565b61045b613f8c565b5f80516020614dbb83398151915280546001600160a01b0319166001600160a01b039283169081179091555f80516020614d1b833981519152549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346101db5760203660031901126101db576104d96134b4565b6104e1613f8c565b6001600160a01b03166104f581151561366e565b6001600160601b0360a01b600154161760015580f35b50346101db57806003193601126101db575f80516020614dbb833981519152546040516001600160a01b039091168152602090f35b50346101db5760403660031901126101db5761055a6134ca565b610562613f8c565b6004358252600b6020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b50346101db5760803660031901126101db576004356105ad6134ca565b906105b66134e0565b6105be6134f6565b926105c7613f8c565b828552600c6020818152604080882080546001600160a01b03199081166001600160a01b039687161790915586895283835281892060010180548216968616969096179095559487525291842060020180549091169290911691909117905580f35b50346101db5760803660031901126101db5760a061065661064861350c565b604435602435600435613aa1565b9260409291925194855260208501521515604084015260608301526080820152f35b50346101db5760203660031901126101db5760043567ffffffffffffffff81116108d957366023820112156108d9578060040135906106b6826135a0565b916106c46040519384613562565b8083526024602084019160051b830101913683116108d557602401905b8282106108c55750505080516106f6816135a0565b916107046040519384613562565b818352601f19610713836135a0565b01845b818110610870575050835b8281106107d0578385604051918291602083016020845282518091526020604085019301915b818110610755575050500390f35b919350916020610140600192610120875180518352848101518584015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e08401526101008101516101008401520151610120820152019401910191849392610747565b806107dd60019284613a31565b5186526008602052604086206009604051916107f883613531565b80548352848101546020840152600281015460408401526003810154606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008810154610100840152015461012082015261085e8287613a31565b526108698186613a31565b5001610721565b60209060405161087f81613531565b87815287838201528760408201528760608201528760808201528760a08201528760c08201528760e0820152876101008201528761012082015282828801015201610716565b81358152602091820191016106e1565b8480fd5b5080fd5b50346101db576108ec366135b8565b6003546001600160a01b031633036108d957805190825b82811061090e578380f35b6109188183613a31565b515160206109268385613a31565b5101516109338183613975565b918652600960205260408620600861095d8893610958610953828861377a565b613915565b61395b565b059087918881135f14610d10576109759192506137fd565b906602386f26fc1000808313610d08575b505b87821315610b6357600981019182546127100392612710841180610b4f576127106109b386856136e8565b046109c36003860191825461372c565b9055600284018054909590918c8315610aef5750610adb5794670de0b6b3a7640000610a8c61271082610a8360019d9c99610a7e8f9a5f80516020614d3b8339815191529e9b610aca9b60409f610a939c610a308a610a25610a3594886136e8565b0485890154906136e8565b6136fb565b610a446006870191825461372c565b90555b549387610a5486856136e8565b04610a646007830191825461372c565b905560088101610a748154613719565b90550154906136e8565b6136e8565b040492546136cd565b049061372c565b915b610ab383898060a01b03600654168d8b8060a01b0390541690613fbf565b600654885460a08a901b8a90039081169116613fbf565b82519182526020820152a101610903565b634e487b7160e01b8c52601160045260248cfd5b5f80516020614d3b8339815191529850610a939350670de0b6b3a7640000915061271082610a8360019d9c99610a7e8f9a610aca9a9b8560409f9a88610b3d610b4892610a8c9c50866136e8565b0483870154906136e8565b049c610a47565b634e487b7160e01b8b52601160045260248bfd5b9087811215610ca757610b7590613739565b90600981019182546127100392612710841180610b4f57612710610b9986856136e8565b04610ba96004860191825461372c565b9055600184018054909590918c8315610c525750610adb5794670de0b6b3a7640000610a8c61271082610a8360019d9c99610a7e8a60025f80516020614d3b8339815191529f9c9b60409f610c4c9c610a30610aca9f610a25610c0d948d926136e8565b610c1c6005870191825461372c565b90555b60078501610c2d8154613719565b9055549387610c3c86856136e8565b04610a746008830191825461372c565b91610a95565b5f80516020614d3b8339815191529850610c4c9350670de0b6b3a7640000915061271082610a8360019d9c99610a7e610aca999a60028560409f9a88610b3d610ca092610a8c9c50866136e8565b049c610c1f565b50600193925f80516020614d3b83398151915292610aca610c4c84600760409601610cd28154613719565b905560088101610ce28154613719565b9055670de0b6b3a7640000610a8c600282610cff8d8601546136cd565b049301546136cd565b91505f610986565b888112610d1e575b50610988565b610d29919250613763565b906602386f26fc0fff1980831215610d185791505f610d18565b50346101db5760203660031901126101db57610d5d6134b4565b610d65613f8c565b6001600160a01b0316610d7981151561366e565b6001600160601b0360a01b600354161760035580f35b50346101db576101403660031901126101db5760043560a435608435602435610db6613f8c565b612710610dc3848461372c565b03610e7a57610dd48160055461372c565b600555838552600960205260408520558284526009602052604435600b6040862001558284526009602052606435600c6040862001558284526009602052600d6040852001558183526009602052600e604084200155808252600960205260c4356009604084200155808252600960205260e435600a60408420015580825260096020526101043560116040842001558152600960205261012435601260408320015580f35b60405162461bcd60e51b815260206004820152601860248201527f46656573206d7573742061646420757020746f203130302500000000000000006044820152606490fd5b50346101db57806003193601126101db5760408051610ede8282613562565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b50346101db57806003193601126101db576020600754604051908152f35b50346101db57806003193601126101db576020600554604051908152f35b50346101db57806003193601126101db575f80516020614d1b833981519152546040516001600160a01b039091168152602090f35b50346101db5760203660031901126101db57610fa66134b4565b610fae613f8c565b6001600160a01b0316610fc281151561366e565b6001600160601b0360a01b600254161760025580f35b50346101db5760e03660031901126101db5780602435604435908115158092036111e05761100461350c565b6084359061101133613f04565b9382865260096020526040862054156111dc575f80516020614d7b8339815191526101009561271061116f8684611122846110e4600d7f0e615c3ac19c7c5ae48bf8728eeeff6696b16b8e94edba84543f06b08f57e23b9f808f620186a061108d611096928b604096526009602052600b8686200154906136e8565b04338d8b614552565b5060065482548a84526009602052848420860154929a926110d4926001600160a01b0390811692169089906110cb908e6136e8565b04913390614a3e565b81526009602052200154856136e8565b604080518d81526001600160a01b038a1660208201523391810191909152600160608201819052608082015291900460a082015290819060c0820190565b0390a1600654600154898e52600960205260408e20600e0154611159926001600160a01b0390811692169086906110cb90866136e8565b878c526009602052600e60408d200154906136e8565b604080518881526001600160a01b039490941660208501523390840152600160608401525f60808401520460a082015260c090a1604051933385526004356020860152604085015260608401521515608083015260a082015260a43560c082015260c43560e0820152a180f35b8580fd5b5050fd5b50346101db57806003193601126101db575f80516020614dbb83398151915254336001600160a01b03909116036112215761121e33614b83565b80f35b63118cdaa760e01b815233600452602490fd5b50346101db5760203660031901126101db5761124e6134b4565b611256613f8c565b6001600160a01b031661126a81151561366e565b6001600160601b0360a01b600d541617600d5580f35b50346101db5760803660031901126101db5760206112ad61129f61350c565b604435602435600435613a59565b604051908152f35b50346101db57806003193601126101db576112ce613f8c565b5f80516020614dbb83398151915280546001600160a01b03199081169091555f80516020614d1b8339815191528054918216905581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101db5760603660031901126101db5761134e6134b4565b602435808352600a60205260408320546001600160a01b03163314801561154e575b801561152d575b801561150c575b156115085761138c82613f04565b90808452600960205260408420600b0154604435906113aa916136e8565b620186a090046113bc90848484614552565b506006548554838752600960205260408720600d01546001600160a01b0392831692879216906113ec90856136e8565b6127109004916113fb93614a3e565b818552600960205260408520600d015461141590826136e8565b604080518481526001600160a01b038681166020830152871691810191909152600160608201819052608082015261271090910460a08201525f80516020614d7b8339815191529060c090a1600654600154838752600960205260408720600e01546001600160a01b03928316928792169061149190856136e8565b6127109004916114a093614a3e565b818552600960205260408520600e01546114b9916136e8565b604080519283526001600160a01b0393841660208401529390921692810192909252600160608301525f6080830152612710900460a08201525f80516020614d7b8339815191529060c090a180f35b8280fd5b50808352600c60205260408320600201546001600160a01b0316331461137e565b50808352600c60205260408320600101546001600160a01b03163314611377565b50808352600c60205260408320546001600160a01b03163314611370565b50346101db5760803660031901126101db57806115876134b4565b60243580151581036111e057606435808452600b6020526040842054909290604435906001600160a01b031633036108d55781906115c482613f04565b9086916115d2868886614a80565b885260086020528660408920988992886116028187866115fd83826115f78582613975565b9e614a80565b613aa1565b5050505096815f14611d835784845260096020528361169086670de0b6b3a7640000610a8c61163d600560408720015460088d0154906136ac565b610a7e8c60066007604087611657600186015480986136e8565b049a89815260096020528861167b88610a7e6003868620015460048a0154906136ac565b049981526009602052200154910154906136ac565b905b81811115611c8457906116a4916136ac565b9860028701996116b5818c5461372c565b808c55819b60018a015482811115611c21575b5050505093608099979383879361177b6117757fd644618c5fd5e256f16ca24b14608d481e8716a67c80483f8cc95c2336ed7c9d9f61176d819f9d999c620186a0610a8c6119609f6119569f600b8f8e6040916117559488965b15611c045790600361173b6117449360018401546136e8565b910154906136fb565b9781526009602052200154856136e8565b04928c8c526009602052600c60408d200154906136e8565b908689614097565b9061372c565b908c600288019485548085105f14611aa15750839291815f80516020614d7b83398151915280938b611841612710611800600d8f6040906117ef6118ff9f60018060a01b036006541690876117e860018060a01b03865416928c87526009602052888888200154906136e8565b0491613fbf565b86815260096020522001548b6136e8565b604080519485526001600160a01b03958616602086015294881694840194909452600360608401526001608084015290920460a082015290819060c0820190565b0390a16006546001548b8b52600960205260408b20600e015461187a926001600160a01b03908116921690612710906117e8908a6136e8565b89895260096020526118d9612710611899600e60408d200154886136e8565b604080518e81526001600160a01b0395861660208201529590941693850193909352600360608501525f608085015290910460a0830152819060c0820190565b0390a16118e78286546136ac565b8555600188016118f88382546136ac565b905561377a565b945b866001820195865492836119e7575b50505050925050505f146119b1578c8b818313156119865760408260019261194294526009602052200191825461372c565b90555b611950898b88614ab5565b89613975565b9854968885614a80565b6040805198895260208901999099529787015260608601526001600160a01b031693a480f35b9160406119aa92611998600193613739565b948152600960205220019182546136ac565b9055611945565b8c8b818313156119d5576040826002926119aa94526009602052200191825461372c565b9160406119aa92611998600293613739565b938697989593611a1d93611a1283611a18956003611a709c9a015493611a0c86613739565b91613a59565b90614a01565b613739565b815480821015611a8057506006548354611a679291611a4a9183916001600160a01b039182169116613fbf565b8d611a6160018060a01b03600654169285546136ac565b91613fbf565b5583549061377a565b91555f8d818c8f8f879082611910565b6006548454611a9c93506001600160a01b039081169116613fbf565b611a67565b60065488548a8a52600960205260408a20600d0154959b96505f80516020614d7b83398151915295611aea936001600160a01b039384169390921691612710916117e8916136e8565b611b8587896127106117e88a54838552600960205288611b5584611b15600d60408a200154856136e8565b604080518981526001600160a01b03808e1660208301528e1691810191909152600360608201526001608082015291900460a082015290819060c0820190565b0390a160065460015494865260096020526040909520600e01546001600160a01b039586169590941693906136e8565b611be6612710611ba688548b8b526009602052600e60408c200154906136e8565b604080518c81526001600160a01b0395861660208201529590941693850193909352600360608501525f608085015290910460a0830152819060c0820190565b0390a183611bfa600183019788549061377a565b9655838355611901565b610a308260036001611c1b950154910154906136e8565b976110d4565b88949d50978a9b97938f9d9b9799938b9793611c3e8c96836136ac565b9182611c49916136ac565b90556006548354611c689183916001600160a01b039081169116613fbf565b611c71916136ac565b9d9498965083979b9a9c508195506116c8565b611c8d916136ac565b98611c978a613739565b996002880190808254115f14611d105793879361177b6117757fd644618c5fd5e256f16ca24b14608d481e8716a67c80483f8cc95c2336ed7c9d9f60809f9d9995819f9d999c620186a0610a8c6119609f6119569f9b600b8f8e604091611755948f8b611d098b9961176d9e546136ac565b9055611722565b5086925093858c9a989496929b99955585600185018386818354611d3390613749565b93557fd644618c5fd5e256f16ca24b14608d481e8716a67c80483f8cc95c2336ed7c9d9f60809f6119609c620186a0610a8c816119569f600b604061177b9a6117759a61176d9961175595611722565b848452600960205283611df086670de0b6b3a7640000610a8c611db2600660408720015460098d0154906136ac565b610a7e8c60076008604087611dcc600186015480986136e8565b049a89815260096020528861167b88610a7e6004868620015460058a0154906136ac565b90611692565b50346101db57611e05366135b8565b600d546001600160a01b031633036108d95780518291825b828110611e2d5750505060075580f35b611e378183613a31565b515185611e526020611e498587613a31565b51015183613975565b8282526009602052600f604083200154611ee3575b82825260096020526010604083200154611e87575b505050600101611e1d565b611ed38361095884611ece610953670de0b6b3a764000096611eda9960019b9e9952600960205260106040852001549584526009602052600260408520015493508561377a565b613939565b0590613823565b9390855f611e7c565b95611f25908383526009602052670de0b6b3a7640000611ed3600f60408620015486865260096020526109588b611ece61095384600160408c2001549361377a565b95611e67565b50346101db57806003193601126101db57602060405160018152f35b50346101db57806003193601126101db577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611f9f5760206040515f80516020614d5b8339815191528152f35b63703e46dd60e11b8152600490fd5b50346101db57806003193601126101db576020604051701c5b32f37f5bea87bdd5374eb2ac54ea8e8152f35b5060403660031901126101db57611fef6134b4565b6024359067ffffffffffffffff82116115085736602383011215611508578160040135908361201d83613584565b9361202b6040519586613562565b8385526020850193366024828401011161150857806024602093018637850101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156121df575b506121d05761208e613f8c565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181612198575b506120d157634c9c8ce360e01b86526004859052602486fd5b93845f80516020614d5b8339815191528796036121865750823b15612174575f80516020614d5b83398151915280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115612159576121559382915190845af461214f614c8d565b91614cbc565b5080f35b50505050346121655780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d6020116121c8575b816121b460209383613562565b810103126121c45751905f6120b8565b8680fd5b3d91506121a7565b63703e46dd60e11b8452600484fd5b5f80516020614d5b833981519152546001600160a01b0316141590505f612081565b50346101db5760206112ad6122153661351b565b906139f5565b50346101db5760206112ad61222f3661351b565b90613975565b50346101db57612268602091600861224c3661351b565b839491945061095861095382612263818899613975565b61377a565b05818113156122a25761227c9192506137fd565b906602386f26fc100090818313612298575b5050604051908152f35b5090505f8061228e565b8181126122b1575b50506112ad565b6122bc919250613763565b906602386f26fc0fff1990818312156122aa575090505f806122aa565b5034612eea57610140366003190112612eea576122f46134b4565b608435908115158203612eea5760a435918215158303612eea5761012435928315158403612eea5760c4355f52600a60205260018060a01b0360405f2054163314801561344b575b8015613429575b8015613407575b15612eea5761235883613f04565b936123668360c43586614a80565b5f52600860205260405f209461238060643560c435613975565b5f905f895f915f965f988c60018101548c81613201575b50505080806131f9575b15612c4357505050506123bc8760443560643560c435613a59565b508961271061010435116101db5761250f6127106124fd87600e60405f80516020614d7b833981519152968f6124ea90612415886123ff6101043560e4356136e8565b0461240c8160e43561372c565b5060e4356136ac565b5060c435835260096020528981612446620186a061243b600c89892001546044356136e8565b04828a60c435614552565b50600654865460c43588526009602052888820600d0154929a92612487926001600160a01b0390811692169085908f90612480908f6136e8565b0492614a3e565b60c435865260096020526124b48b6124a5600d8a8a2001548c6136e8565b04885193849360c43585613792565b0390a160065460015460c435855260096020528585208701546001600160a01b039283169391909216918a90612480908a6136e8565b60c43581526009602052200154906136e8565b046040519182918c8960c435856137c8565b0390a160065461252f906024359030908b906001600160a01b0316614a3e565b868a60018b015480155f14612bba57505050600454808a555f198114610b4f578a91600161258b920160045560443560018c015560243560028c015561257d8960443560643560c435613a59565b60038c015560443590613823565b915b60c43582526009602052600360408320015460048b015560c43582526009602052600460408320015460058b0155875f14612b875760c43582526009602052600760408320015460068b015560c43582526009602052600560408320015460088b01555b8715612a8a57818313156129e45790610a306126489261177560409560c4358552600960205261264260018887200154600f61262d848361372c565b998a9860c435815260096020522001546136e8565b926136e8565b60c4358a526009602052600f60408b20015560c43589526009602052600160408a2001555b600381036128025787600288018054806127e1575b5050506126928560c43588614ab5565b60c4358852600b602052604088205488906001600160a01b0316803b156108d957816126d86101a48b83604051958694859363167ffd4960e21b85526004850190613878565b6001600160a01b038e1661014484015260c4356101648401528c15156101848401525af180156127d6576127b3575b50509261014092602096927f9b5839247c12920537ab678b686b686c324a25cd2e07ad010effbcb2702b62f8955b61274360643560c435613975565b8a54986127538160c43589614a80565b9b600181015460036002830154920154926040519d8e9160c4358352151591015260408d015260608c015260808b015260a08a015260c089015260018060a01b031660e088015261010087015261012086015260018060a01b031693a480f35b816127c391989496939598613562565b6127d25792909491875f612707565b8780fd5b6040513d84823e3d90fd5b6006546127f991908a906001600160a01b0316613fbf565b55875f80612682565b600287015460c43589526009602052612822601160408b200154826136e8565b600189015480911061299f5710612966576128488560643560c4356115fd83828c614a80565b50506129545786156129595781116129545788905b8261290b5760c4358252600b60205260408220546001600160a01b0316803b15611508578783918b838c6128ab60405197889687958694630ff8de2760e31b865260c43591600487016138da565b03925af180156127d6576128ec575b50509261014092602096927f9b5839247c12920537ab678b686b686c324a25cd2e07ad010effbcb2702b62f895612735565b816128fc91989496939598613562565b6127d25792909491875f6128ba565b60c4358252600b60205260408220546001600160a01b0316803b15611508578783918b838c6128ab604051978896879586946315bd16c360e21b865260c43591600487016138da565b61383e565b811061295457889061285d565b60405162461bcd60e51b81526020600482015260116024820152701cda5e99480f0818dbdb1b185d195c985b607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f4d6f7265207468616e206d6178696d756d206c657665726167650000000000006044820152606490fd5b5081126129f2575b5061266d565b6129fb90613739565b60c43589526009602052600160408a2001548111612a375760c43589526009602052612a2f600160408b20019182546136ac565b90555f6129ec565b60405162461bcd60e51b815260206004820152602560248201527f52656475636520616d6f756e74206578636565647320746f74616c206c6f6e676044820152642073697a6560d81b6064820152608490fd5b81831315612ae95790610a30612ac09261177560409560c4358552600960205261264260028887200154601061262d848361372c565b60c4358a526009602052601060408b20015560c43589526009602052600260408a20015561266d565b508112612af6575061266d565b612aff90613739565b60c43589526009602052600260408a2001548111612b335760c43589526009602052612a2f600260408b20019182546136ac565b60405162461bcd60e51b815260206004820152602660248201527f52656475636520616d6f756e74206578636565647320746f74616c2073686f72604482015265742073697a6560d01b6064820152608490fd5b60c43582526009602052600860408320015460078b015560c43582526009602052600660408320015460098b01556125f1565b612c2a929550612c1c908c612c11612bff6003612be460019997999b60443560643560c435613a59565b930192611775612bf58686546136e8565b91604435906136e8565b612c0b6044358561372c565b906136fb565b90556044359061372c565b60018c015560443590613823565b9160028a01612c3c602435825461372c565b905561258d565b9394929315806131f1575b612c5a575b505061258d565b909392506131ba575b60018a015415612eea578a91612cb9611775620186a0612cae8e868e156131a25790600361173b612c96936044356136e8565b60c4355f526009602052600c60405f200154906136e8565b048c8960c435614097565b9060028c01908c8c8984548681115f146130795750915f80516020614d7b8339815191528281612de096948996612d1c60018060a01b036006541660018060a01b035f541660c4355f5260096020526127106117e8600d60405f2001548d6136e8565b60c4355f526009602052612d4d612710612d3d600d60405f2001548b6136e8565b0460405193849360c43585613792565b0390a1612d8760018060a01b036006541660018060a01b036001541660c4355f5260096020526127106117e8600e60405f2001548a6136e8565b60c4355f5260096020528c612db9612710612da9600e60405f200154896136e8565b0460405193849360c435856137c8565b0390a1612dc78386546136ac565b85556001612dd884828401546136ac565b91015561377a565b945b612c5357919450959150612e138860038c015460443590611a1283612e08604435613739565b60643560c435613a59565b925f841315612f2c57612e5190612e3a8c6001612e328b6044356136ac565b9101546136ac565b60018d0155612e4b886044356136ac565b9061377a565b95602435612eee575b50505f546001600160a01b0316803b15612eea57604051630b16327960e11b81526001600160a01b038a16600482015260248101849052905f908290604490829084905af19081612ed5575b50612ecd5750925b600188015415612ec457886002925b5f80612c53565b88600392612ebd565b939050612eae565b612ee2919b505f90613562565b5f995f612ea6565b5f80fd5b612f2591612f08612f01836024356136ac565b82546136ac565b90556006546001600160a01b0316908a90611a61906024356136ac565b5f80612e5a565b92612f3a9096919296613739565b9282548085105f1461303a5750612f6c84612fb992612f5a8287546136ac565b86558d6001612dd884828401546136ac565b6006545f54612f899187916001600160a01b039081169116613fbf565b612fa48c6001612e3288612f9f886044356136ac565b6136ac565b60018d0155612e4b85612f9f856044356136ac565b92602435612fc7828461372c565b1115612fd6575b505050612eae565b612f9f612fe5926024356136ac565b81549182821161301c576130149250612fff8282546136ac565b905560065489906001600160a01b0316613fbf565b5f8080612fce565b90506130345f928a60018060a01b0360065416613fbf565b55613014565b6006545f805461306e975093959094509261306292916001600160a01b039182169116613fbf565b5560018901549061377a565b5f6001890155612eae565b6006545f805460c435825260096020526040909120600d0154969c50969a506130bc966001600160a01b03918216969116945061271093506117e89250906136e8565b61313b845460c4355f5260096020525f80516020614d7b8339815191526127106130ed600d60405f200154846136e8565b048d6131026040519283928d60c43585613792565b0390a160018060a01b0360065416906127106117e860018060a01b03600154169260c4355f526009602052600e60405f200154906136e8565b60c4355f5260096020525f80516020614d7b833981519152612710613167600e60405f200154846136e8565b048b61317c6040519283928b60c435856137c8565b0390a16131936001955f865560018d01549061377a565b935f60018d0155600395612de2565b610a3060036131b59301546044356136e8565b612c96565b6131c988612e08604435613739565b506127106101043511612eea576131eb6127106123ff6101043560e4356136e8565b50612c63565b508115612c4e565b5082156123a1565b829c509181670de0b6b3a764000092935f1461338457610a7e61323b9260c4355f5260096020526008600560405f200154910154906136ac565b0460c4355f5260096020526132948c670de0b6b3a7640000610a8c85610a7e8361327583610a7e600360405f20015460048a0154906136ac565b049460c4355f5260096020526006600760405f200154910154906136ac565b915b828211156133215750906132a9916136ac565b6132b78160028d015461372c565b908160028d0155809b6001810154838111156132db575b505050505b8c5f8c612397565b613317949d506132f76132f0600292866136ac565b80956136ac565b9101556006545f54612f9f9184916001600160a01b039081169116613fbf565b985f808e816132ce565b9b919061332d916136ac565b61333681613739565b9b816002840154115f1461335c5750613354600291828401546136ac565b9101556132d3565b9298505092506133759194505f60026001940155613749565b925f60018d01556003956132d3565b610a7e6133a89260c4355f5260096020526009600660405f200154910154906136ac565b0460c4355f5260096020526134018c670de0b6b3a7640000610a8c85610a7e836133e283610a7e600460405f20015460058a0154906136ac565b049460c4355f5260096020526007600860405f200154910154906136ac565b91613296565b5060c4355f52600c60205260018060a01b03600260405f20015416331461234a565b5060c4355f52600c60205260018060a01b03600160405f200154163314612343565b5060c4355f52600c60205260018060a01b0360405f205416331461233c565b34612eea576020366003190112612eea576134836134b4565b61348b613f8c565b6001600160a01b031661349f81151561366e565b6001600160601b0360a01b5f5416175f555f80f35b600435906001600160a01b0382168203612eea57565b602435906001600160a01b0382168203612eea57565b604435906001600160a01b0382168203612eea57565b606435906001600160a01b0382168203612eea57565b606435908115158203612eea57565b6040906003190112612eea576004359060243590565b610140810190811067ffffffffffffffff82111761354e57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761354e57604052565b67ffffffffffffffff811161354e57601f01601f191660200190565b67ffffffffffffffff811161354e5760051b60200190565b6020600319820112612eea5760043567ffffffffffffffff8111612eea5781602382011215612eea578060040135906135f0826135a0565b926135fe6040519485613562565b8284526024602085019360061b83010191818311612eea57602401925b828410613629575050505090565b604084830312612eea5760405190604082019082821067ffffffffffffffff83111761354e57604092602092845286358152828701358382015281520193019261361b565b1561367557565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606490fd5b919082039182116136b957565b634e487b7160e01b5f52601160045260245ffd5b9081650b5e620f48000291650b5e620f48008304036136b957565b818102929181159184041417156136b957565b8115613705570490565b634e487b7160e01b5f52601260045260245ffd5b90650b5e620f480082018092116136b957565b919082018092116136b957565b600160ff1b81146136b9575f0390565b905f82810392125f83128116905f8413901516176136b957565b90650b5e620f47ff1982019182136001166136b957565b81810392915f1380158285131691841216176136b957565b9081526001600160a01b03918216602082015291166040820152600260608201526001608082015260a081019190915260c00190565b9081526001600160a01b03918216602082015291166040820152600260608201525f608082015260a081019190915260c00190565b90650b5e620f48008201915f650b5e620f4800841291129080158216911516176136b957565b9190915f83820193841291129080158216911516176136b957565b60405162461bcd60e51b8152602060048201526012602482015271416c7265616479206c697175696461626c6560701b6044820152606490fd5b6009610120918054845260018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e085015260088101546101008501520154910152565b91926101a09396959491966138f4846101c0810199613878565b6001600160a01b031661014084015261016083015215156101808201520152565b90670de0b6b3a7640000820291808305670de0b6b3a764000014901517156136b957565b81810292915f8212600160ff1b8214166136b95781840514901517156136b957565b811561370557600160ff1b81145f198314166136b9570590565b5f81815260096020526040902060018101546002909101549092919061399b8185613823565b9081156139ed576139e993926139c76139e3936109586109536139dd95670de0b6b3a76400009a61377a565b905f526009602052601260405f2001549061395b565b84613823565b906136e8565b0490565b505050905090565b816139ff91613975565b6019810290808204601914901517156136b957604b820291808304604b14901517156136b9576064916139e99161372c565b8051821015613a455760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b5f8181526009602052604090206001810154600290910154949293919215613a915790613a8591613823565b925b61399b8185613823565b9390613a9c91613823565b613a87565b919392905f925f52600860205260405f209460405192613ac084613531565b86548452600187015460208501526002870154604085015260038701548060608601526004880154906080860191825260058901549060a0870191825260068a015460c0880152600960078b01549a60e089019b8c5260088101546101008a0152015461012088015215613e9d575f9886868515613e0d57925050505f526009602052613bd6670de0b6b3a7640000613ba0613b9582613b7b613b70600560405f2001546101008d0151906136ac565b60208c0151906136e8565b0494885f526009602052600360405f2001549051906136ac565b6020890151906136e8565b04855f526009602052670de0b6b3a7640000610a8c613bcb600760405f20015460c08b0151906136ac565b60208a0151906136e8565b905b81811115613dd757613bf791613bed916136ac565b604086015161372c565b806040860152602085015190811115613dbb575b505b602084015160408501518114613d9f575b5015613cf257613c3760208401516040850151906136ac565b906020840151670de0b6b3a7640000810290808204670de0b6b3a764000014901517156136b9576060850151613c6c916136fb565b91670de0b6b3a7640000810290808204670de0b6b3a764000014811517156136b95769021e5f445b3cf7340000029080820461271514901517156136b95761271083029280840461271014901517156136b957613ce392613ccc916136fb565b965b613ce65760206040850151945b0151926139f5565b93565b60208085015194613cdb565b613d0560208401516040850151906136ac565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156136b9576060840151613d34916136fb565b906020840151670de0b6b3a7640000810290808204670de0b6b3a764000014811517156136b95769021dd47d38386d4c0000029080820461270b14901517156136b95761271083029280840461271014901517156136b957613ce392613d99916136fb565b96613cce565b9096505f1981019081116136b95760408401526001955f613c1e565b9096505f1981019081116136b95760408401526001955f613c0b565b613de0916136ac565b604085015181811115613e015790613df7916136ac565b6040850152613c0d565b50509350600193613c0d565b613e97939450613bcb670de0b6b3a7640000613e7d613e7282613e588197610a8c975f5260096020526020613e4f600660405f200154610120840151906136ac565b910151906136e8565b04988c5f526009602052600460405f2001549051906136ac565b60208d0151906136e8565b0493895f526009602052600860405f2001549051906136ac565b90613bd8565b60405162461bcd60e51b815260206004820152602560248201527f456e747279207072696365206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608490fd5b51906001600160a01b0382168203612eea57565b60405163fa54416160e01b81526001600160a01b0382166004820152602081602481701c5b32f37f5bea87bdd5374eb2ac54ea8e5afa5f9181613f50575b50613f4b575090565b905090565b9091506020813d602011613f84575b81613f6c60209383613562565b81010312612eea57613f7d90613ef0565b905f613f42565b3d9150613f5f565b5f80516020614d1b833981519152546001600160a01b03163303613fac57565b63118cdaa760e01b5f523360045260245ffd5b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448201929092526140079161400282606481015b03601f198101845283613562565b614bee565b565b60e081830312612eea5780519261402260208301613ef0565b9260408301519260608101519260808201519260a08301519260c08101519067ffffffffffffffff8211612eea570181601f82011215612eea5780519061406882613584565b926140766040519485613562565b82845260208383010111612eea57815f9260208093018386015e8301015290565b5060025460405160016236769560e01b031981526001600160a01b0380841660048301525f958695509216918491908282602481875afa918215614283575f905f9361452e575b50806144c7575b506001600160a01b038216801515969091908761445d575b604051630194a30960e11b81526020816004818a5afa908115614283575f9161442b575b5081116143ef5761413290826136e8565b90604051630194a30960e11b81526020816004818a5afa908115614283575f916143bb575b506141659061416b936136fb565b906136ac565b95614183575b505050505081614180916136ac565b91565b90919395506040949294519063ffc9896b60e01b825260048201525f81602481885afa908115614283575f91614392575b5080156142c4576141c590836136e8565b604051630194a30960e11b815290602082600481895afa908115614283575f9161428e575b6141f492506136fb565b945b843b15612eea57604051629ba3af60e21b81526001600160a01b0391821660048201529116602482015260448101859052925f908490606490829084905af191821561428357614180938593614270575b50506006546002546142679184916001600160a01b039081169116613fbf565b915f8080614171565b61427c91505f90613562565b5f80614247565b6040513d5f823e3d90fd5b90506020823d6020116142bc575b816142a960209383613562565b81010312612eea576141f49151906141ea565b3d915061429c565b50604051632af99f2760e21b8152602081600481885afa8015614283575f9061435e575b6142f39150836136e8565b604051630194a30960e11b815290602082600481895afa908115614283575f91614328575b61432292506136fb565b946141f6565b90506020823d602011614356575b8161434360209383613562565b81010312612eea57614322915190614318565b3d9150614336565b506020813d60201161438a575b8161437860209383613562565b81010312612eea576142f390516142e8565b3d915061436b565b6143ae91503d805f833e6143a68183613562565b810190614009565b505093505050505f6141b4565b90506020813d6020116143e7575b816143d660209383613562565b81010312612eea575161416b614157565b3d91506143c9565b60405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819995948191a5cd8dbdd5b9d60621b6044820152606490fd5b90506020813d602011614455575b8161444660209383613562565b81010312612eea57515f614121565b3d9150614439565b60405163053d782d60e21b8152906020826004818a5afa908115614283575f91614491575b61448c925061372c565b6140fd565b90506020823d6020116144bf575b816144ac60209383613562565b81010312612eea5761448c915190614482565b3d915061449f565b9095506040519063edc829dd60e01b82526004820152602081602481875afa908115614283575f916144fc575b50945f6140e5565b90506020813d602011614526575b8161451760209383613562565b81010312612eea57515f6144f4565b3d915061450a565b90506145459192503d805f833e6143a68183613562565b505050505091905f6140de565b60025460405160016236769560e01b031981526001600160a01b03848116600483018190525f9788979591949092169287928382602481885afa918215614283575f905f936149dd575b5080614976575b506001600160a01b038216801515999091908a61490c575b604051630194a30960e11b81526020816004818b5afa908115614283575f916148da575b5081116143ef576145f090826136e8565b90604051630194a30960e11b81526020816004818b5afa908115614283575f916148a6575b5061416590614623936136fb565b9861463b575b505050505050505081614180916136ac565b90919293949698506040979597519063ffc9896b60e01b825260048201525f81602481885afa908115614283575f91614885575b5080156147b75761468090866136e8565b604051630194a30960e11b815290602082600481895afa908115614283575f91614781575b6146af92506136fb565b975b843b15612eea57604051629ba3af60e21b81526001600160a01b0391821660048201529116602482015260448101889052925f908490606490829084905af1918215614283576141809688965f80516020614d7b8339815191529560c09561476c575b50600654600254614735918a916001600160a01b0390811691869116614a3e565b604051938452602084015260018060a01b031660408301526004606083015260808201528460a0820152a1915f8080808080614629565b6147799193505f90613562565b5f915f614714565b90506020823d6020116147af575b8161479c60209383613562565b81010312612eea576146af9151906146a5565b3d915061478f565b50604051632af99f2760e21b8152602081600481885afa8015614283575f90614851575b6147e69150866136e8565b604051630194a30960e11b815290602082600481895afa908115614283575f9161481b575b61481592506136fb565b976146b1565b90506020823d602011614849575b8161483660209383613562565b81010312612eea5761481591519061480b565b3d9150614829565b506020813d60201161487d575b8161486b60209383613562565b81010312612eea576147e690516147db565b3d915061485e565b61489991503d805f833e6143a68183613562565b505093505050505f61466f565b90506020813d6020116148d2575b816148c160209383613562565b81010312612eea5751614623614615565b3d91506148b4565b90506020813d602011614904575b816148f560209383613562565b81010312612eea57515f6145df565b3d91506148e8565b60405163053d782d60e21b8152906020826004818b5afa908115614283575f91614940575b61493b925061372c565b6145bb565b90506020823d60201161496e575b8161495b60209383613562565b81010312612eea5761493b915190614931565b3d915061494e565b9098506040519063edc829dd60e01b82526004820152602081602481885afa908115614283575f916149ab575b50975f6145a3565b90506020813d6020116149d5575b816149c660209383613562565b81010312612eea57515f6149a3565b3d91506149b9565b90506149f49192503d805f833e6143a68183613562565b505050505091905f61459c565b90670de0b6b3a7640000935f14614a2a57614a2692611ece610953846109589461377a565b0590565b614a2692611ece610953610958938561377a565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064820192909252614007916140028260848101613ff4565b9160405191602083019360018060a01b0316845260408301521515606082015260608152614aaf608082613562565b51902090565b9181614ac19293614a80565b5f828152600c60205260408120600101549092906001600160a01b0316803b15612eea575f80916024604051809481936333d5c83160e01b83528860048401525af1801561428357614b6e575b508252600c60205260408220600201546001600160a01b031690813b156115085782916024839260405194859384926333d5c83160e01b845260048401525af180156127d657614b5c575050565b614b67828092613562565b6101db5750565b614b7b9193505f90613562565b5f915f614b0e565b5f80516020614dbb83398151915280546001600160a01b03199081169091555f80516020614d1b83398151915280549182166001600160a01b0393841690811790915591167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b5f80614c169260018060a01b03169360208151910182865af1614c0f614c8d565b9083614cbc565b8051908115159182614c3e575b5050614c2c5750565b635274afe760e01b5f5260045260245ffd5b8192509060209181010312612eea5760200151801590811503612eea575f80614c23565b60ff5f80516020614d9b8339815191525460401c1615614c7e57565b631afcd79f60e31b5f5260045ffd5b3d15614cb7573d90614c9e82613584565b91614cac6040519384613562565b82523d5f602084013e565b606090565b90614ce05750805115614cd157805190602001fd5b630a12f52160e11b5f5260045ffd5b81511580614d11575b614cf1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15614ce956fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300bb8a8f355e95eadc7764bcd702fd738242506a85e6d5732c292146eddbb6b545360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ab61a3e549f0a215a75e122ad42e4726c3790568f88eaa300bfbfca26d3ce03f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00a264697066735822122036d71fed0eb6451d299b05a4e9c70c05210e12befbbcb68cb6ab4e5549629f1e64736f6c634300081a0033