0 txs
1 call
constructor
No constructor.
functions
DOLOMITE_MARGIN_OWNER
viewfunction DOLOMITE_MARGIN_OWNER() view returns (address)
DOLOMITE_MARGIN
viewfunction DOLOMITE_MARGIN() view returns (address)
emitAsyncDepositCancelled
nonpayablefunction emitAsyncDepositCancelled(bytes32 _key, address _token)
emitAsyncDepositCancelledFailed
nonpayablefunction emitAsyncDepositCancelledFailed(bytes32 _key, address _token, string _reason)
emitAsyncDepositCreated
nonpayablefunction emitAsyncDepositCreated(bytes32 _key, address _token, tuple _deposit)
emitAsyncDepositExecuted
nonpayablefunction emitAsyncDepositExecuted(bytes32 _key, address _token)
emitAsyncDepositFailed
nonpayablefunction emitAsyncDepositFailed(bytes32 _key, address _token, string _reason)
emitAsyncDepositOutputAmountUpdated
nonpayablefunction emitAsyncDepositOutputAmountUpdated(bytes32 _key, address _token, uint256 _outputAmount)
emitAsyncWithdrawalCancelled
nonpayablefunction emitAsyncWithdrawalCancelled(bytes32 _key, address _token)
emitAsyncWithdrawalCreated
nonpayablefunction emitAsyncWithdrawalCreated(bytes32 _key, address _token, tuple _withdrawal)
emitAsyncWithdrawalExecuted
nonpayablefunction emitAsyncWithdrawalExecuted(bytes32 _key, address _token)
emitAsyncWithdrawalFailed
nonpayablefunction emitAsyncWithdrawalFailed(bytes32 _key, address _token, string _reason)
emitAsyncWithdrawalOutputAmountUpdated
nonpayablefunction emitAsyncWithdrawalOutputAmountUpdated(bytes32 _key, address _token, uint256 _outputAmount)
emitBorrowPositionOpen
nonpayablefunction emitBorrowPositionOpen(address _accountOwner, uint256 _accountNumber)
emitDistributorRegistered
nonpayablefunction emitDistributorRegistered(address _oTokenAddress, address _pairToken, address _paymentToken)
emitMarginPositionClose
nonpayablefunction emitMarginPositionClose(address _accountOwner, uint256 _accountNumber, address _inputToken, address _outputToken, address _withdrawalToken, tuple _inputBalanceUpdate, tuple _outputBalanceUpdate, tuple _marginWithdrawalUpdate)
emitMarginPositionOpen
nonpayablefunction emitMarginPositionOpen(address _accountOwner, uint256 _accountNumber, address _inputToken, address _outputToken, address _depositToken, tuple _inputBalanceUpdate, tuple _outputBalanceUpdate, tuple _marginDepositUpdate)
emitRewardClaimed
nonpayablefunction emitRewardClaimed(address _user, uint256 _epoch, uint256 _amount)
emitZapExecuted
nonpayablefunction emitZapExecuted(address _accountOwner, uint256 _accountNumber, uint256[] _marketIdsPath, tuple[] _tradersPath)
initialize
nonpayablefunction initialize()
events
AsyncDepositCancelled
event AsyncDepositCancelled(bytes32 indexed key, address indexed token)
AsyncDepositCancelledFailed
event AsyncDepositCancelledFailed(bytes32 indexed key, address indexed token, string reason)
AsyncDepositCreated
event AsyncDepositCreated(bytes32 indexed key, address indexed token, (bytes32 key, address vault, uint256 accountNumber, address inputToken, uint256 inputAmount, uint256 outputAmount, bool isRetryable) deposit)
AsyncDepositExecuted
event AsyncDepositExecuted(bytes32 indexed key, address indexed token)
AsyncDepositFailed
event AsyncDepositFailed(bytes32 indexed key, address indexed token, string reason)
AsyncDepositOutputAmountUpdated
event AsyncDepositOutputAmountUpdated(bytes32 indexed key, address indexed token, uint256 outputAmount)
AsyncWithdrawalCancelled
event AsyncWithdrawalCancelled(bytes32 indexed key, address indexed token)
AsyncWithdrawalCreated
event AsyncWithdrawalCreated(bytes32 indexed key, address indexed token, (bytes32 key, address vault, uint256 accountNumber, uint256 inputAmount, address outputToken, uint256 outputAmount, bool isRetryable, bool isLiquidation, bytes extraData) withdrawal)
AsyncWithdrawalExecuted
event AsyncWithdrawalExecuted(bytes32 indexed key, address indexed token)
AsyncWithdrawalFailed
event AsyncWithdrawalFailed(bytes32 indexed key, address indexed token, string reason)
AsyncWithdrawalOutputAmountUpdated
event AsyncWithdrawalOutputAmountUpdated(bytes32 indexed key, address indexed token, uint256 outputAmount)
BorrowPositionOpen
event BorrowPositionOpen(address indexed borrower, uint256 indexed borrowAccountNumber)
DistributorRegistered
event DistributorRegistered(address oTokenAddress, address pairToken, address paymentToken)
Initialized
event Initialized(uint8 version)
MarginPositionClose
event MarginPositionClose(address indexed accountOwner, uint256 indexed accountNumber, address inputToken, address outputToken, address withdrawalToken, ((bool sign, uint256 value) deltaWei, (bool sign, uint128 value) newPar) inputBalanceUpdate, ((bool sign, uint256 value) deltaWei, (bool sign, uint128 value) newPar) outputBalanceUpdate, ((bool sign, uint256 value) deltaWei, (bool sign, uint128 value) newPar) marginWithdrawalUpdate)
MarginPositionOpen
event MarginPositionOpen(address indexed accountOwner, uint256 indexed accountNumber, address inputToken, address outputToken, address depositToken, ((bool sign, uint256 value) deltaWei, (bool sign, uint128 value) newPar) inputBalanceUpdate, ((bool sign, uint256 value) deltaWei, (bool sign, uint128 value) newPar) outputBalanceUpdate, ((bool sign, uint256 value) deltaWei, (bool sign, uint128 value) newPar) marginDepositUpdate)
RewardClaimed
event RewardClaimed(address indexed distributor, address indexed user, uint256 epoch, uint256 amount)
ZapExecuted
event ZapExecuted(address indexed accountOwner, uint256 accountNumber, uint256[] marketIdsPath, (uint8 traderType, uint256 makerAccountIndex, address trader, bytes tradeData)[] tradersPath)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061206d806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80634ee7426e116100ad578063a3b2907611610071578063a3b2907614610250578063a5697d3314610263578063bacf3bac14610276578063cbffd92114610289578063eb02def21461029e57600080fd5b80634ee7426e146101fc57806362eeb68e1461020f578063717d8088146102225780638129fc1c146102355780639929b0f51461023d57600080fd5b806315c14a4a116100f457806315c14a4a1461019257806315cc2b8f146101b0578063255a3bf7146101c35780632b1ca6cd146101d65780634a015d67146101e957600080fd5b806304732a831461013157806305e1a473146101465780630f680cc214610159578063103acc381461016c57806312d63f2c1461017f575b600080fd5b61014461013f366004611258565b6102b1565b005b610144610154366004611295565b6102f9565b610144610167366004611300565b610356565b61014461017a3660046113b5565b6103b7565b61014461018d36600461144d565b61050a565b61019a610562565b6040516101a791906114e0565b60405180910390f35b6101446101be3660046114ee565b61059b565b6101446101d136600461156e565b6105f0565b6101446101e4366004611300565b61064c565b6101446101f7366004611258565b6106ab565b61014461020a366004611626565b6106f3565b61014461021d366004611687565b610739565b6101446102303660046116cf565b61077e565b6101446107c4565b61014461024b3660046114ee565b610894565b61014461025e366004611258565b6108da565b61014461027136600461144d565b610922565b61014461028436600461144d565b61096a565b6102916109b2565b6040516101a7919061171f565b6101446102ac366004611258565b610a2c565b80336102bd8282610a74565b6040516001600160a01b0384169085907fb81c7282d67bf68c0e1c366a5c99c73552afca7a394aec76112d7ec6127f148690600090a350505050565b3361030381610bc3565b836001600160a01b0316336001600160a01b03167f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb4048585604051610348929190611733565b60405180910390a350505050565b3361036081610bc3565b87896001600160a01b03167fecf4fe97b02d1620f6c04edbd484eff130a2247b31ac1ef061f54c8177b657b98989898989896040516103a49695949392919061184d565b60405180910390a3505050505050505050565b336103c181610bc3565b6103c9610562565b6001600160a01b0316638fae3be1846040518263ffffffff1660e01b81526004016103f4919061171f565b60206040518083038186803b15801561040c57600080fd5b505afa158015610420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044491906118b4565b5061044d610562565b6001600160a01b0316638fae3be1836040518263ffffffff1660e01b8152600401610478919061171f565b60206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c891906118b4565b507fad14bebedc8cfd591fcae4440e32eae902c59513f18e6b748c8658bcb4e67fb88484846040516104fc939291906118dd565b60405180910390a150505050565b82336105168282610a74565b846001600160a01b0316867fb49936231b6b93c6b550005f9d7bf3f6ef2d090495bcaaf04948b3f970141d22868660405161055292919061193a565b60405180910390a3505050505050565b600061059661059260017f01095cd170b13c49f67c675e3bc004094df00c531fa118e86b230655aba7aa17611962565b5490565b905090565b81336105a78282610a74565b836001600160a01b0316857fe54d9bf9276805c6d3349a45eb0b373584d5b36adad7da2f9a728a9eca514f8e856040516105e19190611979565b60405180910390a35050505050565b336105fa81610bc3565b866001600160a01b03167f4734ab23c4afeb4c308f754e6840d7f06d306a7331f39119ac53c8ee656ec2cf878787878760405161063b959493929190611ba0565b60405180910390a250505050505050565b61065533610c86565b86886001600160a01b03167fb81518bcaf15a56ac0e4b0ff579f0bd8e163ac444d526743908dc22733789f068888888888886040516106999695949392919061184d565b60405180910390a35050505050505050565b80336106b78282610a74565b6040516001600160a01b0384169085907f79ae3bafba9acd97592ccb085127403890c4caab2fa5688230a4053fb01a2c6c90600090a350505050565b81336106ff8282610a74565b836001600160a01b0316857f8c528bde64c1b9528c88498bc469dbd84b35fff473102a86eba122238d20619d856040516105e19190611cd1565b3361074381610bc3565b60405182906001600160a01b038516907ffd9156bd20ce24a786c761efe71a3931de038c1f2620c1bb4720609bc742b58e90600090a3505050565b813361078a8282610a74565b836001600160a01b0316857f07483e098a6cfa5c67659e928fc3e7b08b3e60e09d57a7825c4becf2da6da2a7856040516105e19190611d9c565b600054610100900460ff16158080156107e45750600054600160ff909116105b806107fe5750303b1580156107fe575060005460ff166001145b6108235760405162461bcd60e51b815260040161081a90611daa565b60405180910390fd5b6000805460ff191660011790558015610846576000805461ff0019166101001790555b8015610891576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061088890600190611e10565b60405180910390a15b50565b81336108a08282610a74565b836001600160a01b0316857fc9928e1d9617af662c39df3b5cc307baae009cd2f7f20f6602a33248b2b06455856040516105e19190611979565b80336108e68282610a74565b6040516001600160a01b0384169085907fdd67006c5e22e2c60998a37b5b2e9c6b4cb5b863c0585594c38fe8753bd35b6790600090a350505050565b823361092e8282610a74565b846001600160a01b0316867f5f0729fbbcabdd12edc1f3e5bbb039131d87c438aa5771fe8540ecf19a4ed766868660405161055292919061193a565b82336109768282610a74565b846001600160a01b0316867ffc712b6e64eb509b3349e9c98f17ce96b1c6d5e0f249497169575a1abdaec08f868660405161055292919061193a565b60006109bc610562565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f457600080fd5b505afa158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105969190611e29565b8033610a388282610a74565b6040516001600160a01b0384169085907fdb59e8c64546e7cc1a3b0f384b953ea638c37523272e3f65dc05f7a6d738c22390600090a350505050565b6000610a7e610562565b6001600160a01b0316638fae3be1846040518263ffffffff1660e01b8152600401610aa9919061171f565b60206040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af991906118b4565b905080610b0857610b08611e4a565b60405162b3ba5d60e51b8152610bbe906001600160a01b038516906316774ba090610b3790869060040161171f565b60206040518083038186803b158015610b4f57600080fd5b505afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b879190611e6b565b6b22bb32b73a22b6b4ba3a32b960a11b7f43616c6c6572206973206e6f74206120636f6e7665727465720000000000000085610ef3565b505050565b610891610bce610562565b6001600160a01b031663052f72d7836040518263ffffffff1660e01b8152600401610bf9919061171f565b60206040518083038186803b158015610c1157600080fd5b505afa158015610c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c499190611e6b565b7127b7363ca237b637b6b4ba32a6b0b933b4b760711b7f43616c6c6572206973206e6f74206120676c6f62616c206f70657261746f720084610ef3565b610c8e610562565b6001600160a01b031663052f72d7826040518263ffffffff1660e01b8152600401610cb9919061171f565b60206040518083038186803b158015610cd157600080fd5b505afa158015610ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d099190611e6b565b15610d115750565b600080610d358363103f290760e01b60405180602001604052806000815250610f5f565b91509150610d81828015610d4a575060008251115b6b22bb32b73a22b6b4ba3a32b960a11b7f43616c6c6572206973206e6f7420617574686f72697a6564000000000000000086610ef3565b600081806020019051810190610d979190611e29565b9050610da1610562565b6001600160a01b0316638fae3be1826040518263ffffffff1660e01b8152600401610dcc919061171f565b60206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c91906118b4565b610e2857610e28611e4a565b604051635e041b9960e11b8152610eed906000906001600160a01b0384169063bc08373290610e5b90899060040161171f565b60206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab9190611e29565b6001600160a01b031614156b22bb32b73a22b6b4ba3a32b960a11b7f43616c6c6572206973206e6f74206120746f6b656e207661756c74000000000087610ef3565b50505050565b83610eed57610f018361100a565b6101d160f51b610f108461100a565b61080f60f21b610f1f856110a5565b604051610f39959493929190601f60f91b90602001611efa565b60408051601f198184030181529082905262461bcd60e51b825261081a91600401611f86565b60006060846001600160a01b03168484604051602401610f7f9190611f86565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610fbd9190611f97565b600060405180830381855afa9150503d8060008114610ff8576040519150601f19603f3d011682016040523d82523d6000602084013e610ffd565b606091505b5090969095509350505050565b606060008260405160200161101f9190611fa3565b60408051601f19818403018152919052905060205b801561108a578061104481611fb8565b91505081818151811061105957611059611fcf565b01602001516001600160f81b0319161561108557600061107a826001611fe5565b835250909392505050565b611034565b5060408051600080825260208201909252905b509392505050565b60408051602a80825260608281019093526001600160a01b03841691600091602082018180368337019050509050603060f81b816000815181106110eb576110eb611fcf565b60200101906001600160f81b031916908160001a905350607860f81b8160018151811061111a5761111a611fcf565b60200101906001600160f81b031916908160001a90535060005b601481101561109d57600061114a826002611ffd565b9050611158600f85166111eb565b83611164836029611962565b8151811061117457611174611fcf565b60200101906001600160f81b031916908160001a905350600484901c935061119e600f85166111eb565b836111aa836028611962565b815181106111ba576111ba611fcf565b60200101906001600160f81b031916908160001a9053505060049290921c91806111e38161201c565b915050611134565b6000600a82101561120a57611201603083611fe5565b60f81b92915050565b611201605783611fe5565b805b811461089157600080fd5b803561122d81611215565b92915050565b60006001600160a01b03821661122d565b61121781611233565b803561122d81611244565b6000806040838503121561126e5761126e600080fd5b600061127a8585611222565b925050602061128b8582860161124d565b9150509250929050565b6000806000606084860312156112ad576112ad600080fd5b60006112b9868661124d565b93505060206112ca86828701611222565b92505060406112db86828701611222565b9150509250925092565b6000608082840312156112fa576112fa600080fd5b50919050565b600080600080600080600080610220898b03121561132057611320600080fd5b600061132c8b8b61124d565b985050602061133d8b828c01611222565b975050604061134e8b828c0161124d565b965050606061135f8b828c0161124d565b95505060806113708b828c0161124d565b94505060a06113818b828c016112e5565b9350506101206113938b828c016112e5565b9250506101a06113a58b828c016112e5565b9150509295985092959890939650565b6000806000606084860312156113cd576113cd600080fd5b60006113d9868661124d565b93505060206113ea8682870161124d565b92505060406112db8682870161124d565b60008083601f84011261141057611410600080fd5b50813567ffffffffffffffff81111561142b5761142b600080fd5b60208301915083600182028301111561144657611446600080fd5b9250929050565b6000806000806060858703121561146657611466600080fd5b60006114728787611222565b94505060206114838782880161124d565b935050604085013567ffffffffffffffff8111156114a3576114a3600080fd5b6114af878288016113fb565b95989497509550505050565b600061122d82611233565b600061122d826114bb565b6114da816114c6565b82525050565b6020810161122d82846114d1565b60008060006060848603121561150657611506600080fd5b60006115128686611222565b93505060206112ca8682870161124d565b60008083601f84011261153857611538600080fd5b50813567ffffffffffffffff81111561155357611553600080fd5b60208301915083602082028301111561144657611446600080fd5b6000806000806000806080878903121561158a5761158a600080fd5b6000611596898961124d565b96505060206115a789828a01611222565b955050604087013567ffffffffffffffff8111156115c7576115c7600080fd5b6115d389828a01611523565b9450945050606087013567ffffffffffffffff8111156115f5576115f5600080fd5b61160189828a01611523565b92509250509295509295509295565b600061012082840312156112fa576112fa600080fd5b60008060006060848603121561163e5761163e600080fd5b600061164a8686611222565b935050602061165b8682870161124d565b925050604084013567ffffffffffffffff81111561167b5761167b600080fd5b6112db86828701611610565b6000806040838503121561169d5761169d600080fd5b60006116a9858561124d565b925050602061128b85828601611222565b600060e082840312156112fa576112fa600080fd5b600080600061012084860312156116e8576116e8600080fd5b60006116f48686611222565b93505060206117058682870161124d565b92505060406112db868287016116ba565b6114da81611233565b6020810161122d8284611716565b806114da565b60408101611741828561172d565b61174e602083018461172d565b9392505050565b801515611217565b803561122d81611755565b600061174e602084018461175d565b8015156114da565b600061174e6020840184611222565b6040820161179c8280611768565b6117a68482611777565b506117b4602083018361177f565b610eed602085018261172d565b6001600160801b038116611217565b803561122d816117c1565b600061174e60208401846117d0565b6001600160801b0381166114da565b604082016118078280611768565b6118118482611777565b5061181f60208301836117db565b610eed60208501826117ea565b608082018161183b848261178e565b5060408201610eed60408501826117f9565b6101e0810161185c8289611716565b6118696020830188611716565b6118766040830187611716565b611883606083018661182c565b61189060e083018561182c565b61189e61016083018461182c565b979650505050505050565b805161122d81611215565b6000602082840312156118c9576118c9600080fd5b60006118d584846118a9565b949350505050565b606081016118eb8286611716565b6118f86020830185611716565b6118d56040830184611716565b82818337506000910152565b8183526000602084019350611927838584611905565b601f19601f8401165b9093019392505050565b602080825281016118d5818486611911565b634e487b7160e01b600052601160045260246000fd5b6000828210156119745761197461194c565b500390565b6020810161122d828461172d565b81835260006020840193506001600160fb1b038311156119a9576119a9600080fd5b6020830292506119ba838584611905565b50500190565b6004811061089157600080fd5b803561122d816119c0565b600061174e60208401846119cd565b634e487b7160e01b600052602160045260246000fd5b60048110610891576108916119e7565b80611a17816119fd565b919050565b600061122d82611a0d565b6114da81611a1c565b600061174e602084018461124d565b6000808335601e1936859003018112611a5a57611a5a600080fd5b83810160208101935035915067ffffffffffffffff821115611a7e57611a7e600080fd5b36829003841315611a9157611a91600080fd5b509250929050565b600060808301611aa983806119d8565b611ab38582611a27565b50611ac1602084018461177f565b611ace602086018261172d565b50611adc6040840184611a30565b611ae96040860182611716565b50611af76060840184611a3f565b8583036060870152611b0a838284611911565b9695505050505050565b600061174e8383611a99565b60008235607e1936849003018112611b3a57611b3a600080fd5b90910192915050565b818352600060208401935083602084028101838060005b87811015611b93578484038952611b718284611b20565b611b7b8582611b14565b94506020830160209a909a0199925050600101611b5a565b5091979650505050505050565b60608101611bae828861172d565b8181036020830152611bc1818688611987565b9050818103604083015261189e818486611b43565b60006101208301611be7838061177f565b611bf1858261172d565b50611bff6020840184611a30565b611c0c6020860182611716565b50611c1a604084018461177f565b611c27604086018261172d565b50611c35606084018461177f565b611c42606086018261172d565b50611c506080840184611a30565b611c5d6080860182611716565b50611c6b60a084018461177f565b611c7860a086018261172d565b50611c8660c0840184611768565b611c9360c0860182611777565b50611ca160e0840184611768565b611cae60e0860182611777565b50611cbd610100840184611a3f565b858303610100870152611b0a838284611911565b6020808252810161174e8184611bd6565b60e08201611cf0828061177f565b611cfa848261172d565b50611d086020830183611a30565b611d156020850182611716565b50611d23604083018361177f565b611d30604085018261172d565b50611d3e6060830183611a30565b611d4b6060850182611716565b50611d59608083018361177f565b611d66608085018261172d565b50611d7460a083018361177f565b611d8160a085018261172d565b50611d8f60c0830183611768565b610eed60c0850182611777565b60e0810161122d8284611ce2565b6020808252810161122d81602e81527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160208201526d191e481a5b9a5d1a585b1a5e995960921b604082015260600190565b600060ff821661122d565b6114da81611dfc565b6020810161122d8284611e07565b805161122d81611244565b600060208284031215611e3e57611e3e600080fd5b60006118d58484611e1e565b634e487b7160e01b600052600160045260246000fd5b805161122d81611755565b600060208284031215611e8057611e80600080fd5b60006118d58484611e60565b60005b83811015611ea7578181015183820152602001611e8f565b83811115610eed5750506000910152565b6000611ec2825190565b611ed0818560208601611e8c565b9290920192915050565b6001600160f01b031981166114da565b6001600160f81b031981166114da565b6000611f068289611eb8565b9150611f128288611eda565b600282019150611f228287611eb8565b9150611f2e8286611eda565b600282019150611f3e8285611eb8565b9150611f4a8284611eea565b506001019695505050505050565b6000611f62825190565b808452602084019350611f79818560208601611e8c565b601f19601f820116611930565b6020808252810161174e8184611f58565b600061174e8284611eb8565b6000611faf828461172d565b50602001919050565b600081611fc757611fc761194c565b506000190190565b634e487b7160e01b600052603260045260246000fd5b60008219821115611ff857611ff861194c565b500190565b60008160001904831182151516156120175761201761194c565b500290565b60006000198214156120305761203061194c565b506001019056fea2646970667358221220e4dd0b918e98967246bc3642cf28a344e3f38a321b140ebc57135a415ddfeb1964736f6c63430008090033