0 txs
3 calls
constructor
No constructor.
functions
channelCloseConfirm
nonpayablefunction channelCloseConfirm(tuple msg_)
channelCloseInit
nonpayablefunction channelCloseInit(tuple msg_)
channelOpenAck
nonpayablefunction channelOpenAck(tuple msg_)
channelOpenConfirm
nonpayablefunction channelOpenConfirm(tuple msg_)
channelOpenInit
nonpayablefunction channelOpenInit(tuple msg_) returns (string, string)
channelOpenTry
nonpayablefunction channelOpenTry(tuple msg_) returns (string, string)
events
GeneratedChannelIdentifier
event GeneratedChannelIdentifier(string channelId)
IBCModuleManagerChannelCapabilityClaimed
event IBCModuleManagerChannelCapabilityClaimed(string portId, string channelId, address module)
IBCModuleManagerPortCapabilityClaimed
event IBCModuleManagerPortCapabilityClaimed(string portId, address module)
errors
IBCChannelAckAlreadyProcessedInPreviousUpgrade
error IBCChannelAckAlreadyProcessedInPreviousUpgrade(uint64 sequence, uint64 ackStartSequence)
IBCChannelAcknowledgementAlreadyWritten
error IBCChannelAcknowledgementAlreadyWritten(string destinationPort, string destinationChannel, uint64 sequence)
IBCChannelAlreadyChannelExists
error IBCChannelAlreadyChannelExists()
IBCChannelCannotRecvNextUpgradePacket
error IBCChannelCannotRecvNextUpgradePacket(uint64 sequence, uint64 counterpartyNextSequenceSend)
IBCChannelChannelNotFound
error IBCChannelChannelNotFound(string portId, string channelId)
IBCChannelConnectionFeatureNotSupported
error IBCChannelConnectionFeatureNotSupported(uint8 ordering)
IBCChannelConnectionMultipleVersionsFound
error IBCChannelConnectionMultipleVersionsFound(string connectionId, uint256 length)
IBCChannelConnectionNotOpened
error IBCChannelConnectionNotOpened(string connectionId)
IBCChannelCounterpartyChannelIdNotEmpty
error IBCChannelCounterpartyChannelIdNotEmpty(string counterpartyChannelId)
IBCChannelEmptyAcknowledgement
error IBCChannelEmptyAcknowledgement()
IBCChannelFailedVerifyChannelState
error IBCChannelFailedVerifyChannelState(string clientId, bytes path, bytes value, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyNextSequenceRecv
error IBCChannelFailedVerifyNextSequenceRecv(string clientId, bytes path, uint64 nextSequenceRecv, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyPacketAcknowledgement
error IBCChannelFailedVerifyPacketAcknowledgement(string clientId, bytes path, bytes32 commitment, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyPacketCommitment
error IBCChannelFailedVerifyPacketCommitment(string clientId, bytes path, bytes32 commitment, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyPacketReceiptAbsence
error IBCChannelFailedVerifyPacketReceiptAbsence(string clientId, bytes path, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelInvalidConnectionHopsLength
error IBCChannelInvalidConnectionHopsLength(uint256 length)
IBCChannelPacketAlreadyProcessInPreviousUpgrade
error IBCChannelPacketAlreadyProcessInPreviousUpgrade(uint64 sequence, uint64 recvStartSequence)
IBCChannelPacketCommitmentMismatch
error IBCChannelPacketCommitmentMismatch(bytes32 expected, bytes32 actual)
IBCChannelPacketCommitmentNotFound
error IBCChannelPacketCommitmentNotFound(string portId, string channelId, uint64 sequence)
IBCChannelPacketMaybeAlreadyReceived
error IBCChannelPacketMaybeAlreadyReceived(uint64 sequence, uint64 nextSequenceRecv)
IBCChannelPacketReceiptAlreadyExists
error IBCChannelPacketReceiptAlreadyExists(string destinationPort, string destinationChannel, uint64 sequence)
IBCChannelPastPacketTimeoutHeight
error IBCChannelPastPacketTimeoutHeight((uint64 revision_number, uint64 revision_height) timeoutHeight, (uint64 revision_number, uint64 revision_height) latestHeight)
IBCChannelPastPacketTimeoutTimestamp
error IBCChannelPastPacketTimeoutTimestamp(uint64 timeoutTimestamp, uint64 latestTimestamp)
IBCChannelTimeoutNotReached
error IBCChannelTimeoutNotReached()
IBCChannelTimeoutPacketHeight
error IBCChannelTimeoutPacketHeight((uint64 revision_number, uint64 revision_height) currentHeight, (uint64 revision_number, uint64 revision_height) timeoutHeight)
IBCChannelTimeoutPacketTimestamp
error IBCChannelTimeoutPacketTimestamp(uint256 currentTimestamp, uint64 timeoutTimestamp)
IBCChannelUnexpectedChannelState
error IBCChannelUnexpectedChannelState(uint8 state)
IBCChannelUnexpectedNextSequenceAck
error IBCChannelUnexpectedNextSequenceAck(uint64 expected)
IBCChannelUnexpectedNextSequenceRecv
error IBCChannelUnexpectedNextSequenceRecv(string destinationPort, string destinationChannel, uint64 sequence, uint64 expected)
IBCChannelUnexpectedPacketDestination
error IBCChannelUnexpectedPacketDestination(string destinationPort, string destinationChannel)
IBCChannelUnexpectedPacketSource
error IBCChannelUnexpectedPacketSource(string sourcePort, string sourceChannel)
IBCChannelUnknownChannelOrder
error IBCChannelUnknownChannelOrder(uint8 ordering)
IBCChannelUnknownPacketReceiptCommitment
error IBCChannelUnknownPacketReceiptCommitment(bytes32 commitment)
IBCChannelZeroPacketTimeout
error IBCChannelZeroPacketTimeout()
IBCClientClientNotFound
error IBCClientClientNotFound(string clientId)
IBCHostChannelCapabilityAlreadyClaimed
error IBCHostChannelCapabilityAlreadyClaimed(string portId, string channelId)
IBCHostClientTypeAlreadyExists
error IBCHostClientTypeAlreadyExists(string clientType)
IBCHostFailedAuthenticateChannelCapability
error IBCHostFailedAuthenticateChannelCapability(string portId, string channelId, address caller)
IBCHostInvalidClientType
error IBCHostInvalidClientType(string clientType)
IBCHostInvalidLightClientAddress
error IBCHostInvalidLightClientAddress(address lcAddress)
IBCHostInvalidModuleAddress
error IBCHostInvalidModuleAddress(address moduleAddress)
IBCHostInvalidPortIdentifier
error IBCHostInvalidPortIdentifier(string portId)
IBCHostModuleChannelNotFound
error IBCHostModuleChannelNotFound(string portId, string channelId)
IBCHostModuleDoesNotSupportERC165
error IBCHostModuleDoesNotSupportERC165()
IBCHostModuleDoesNotSupportIIBCModule
error IBCHostModuleDoesNotSupportIIBCModule(address module, bytes4 interfaceId)
IBCHostModuleDoesNotSupportIIBCModuleInitializer
error IBCHostModuleDoesNotSupportIIBCModuleInitializer(address module, bytes4 interfaceId)
IBCHostModuleDoesNotSupportIIBCModuleUpgrade
error IBCHostModuleDoesNotSupportIIBCModuleUpgrade(address module)
IBCHostModulePortNotFound
error IBCHostModulePortNotFound(string portId)
IBCHostPortCapabilityAlreadyClaimed
error IBCHostPortCapabilityAlreadyClaimed(string portId)
creation bytecode
0x60808060405234601557613b44908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063256c41991461007457806325cbc3a61461006f5780632d5386df1461006a578063314c3c1c146100655780635bd51b62146100605763a06cb3a21461005b575f80fd5b6111e6565b6110c3565b610ccb565b61083d565b6104ad565b346103ea5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103ea5760043567ffffffffffffffff81116103ea57806004019060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126103ea576100f96100f38380611318565b90611369565b610111602483019161010b8386611318565b90611411565b80549260ff841661012181611457565b600181036104315750600382019361014161013b866114a5565b5061150d565b906003610152600284015460ff1690565b61015b816115d4565b036103ee5760081c60ff166101708780611318565b969061017c878a611318565b909161018661173a565b993690610192926117a3565b8952369061019f926117a3565b60208801526101ad906114a5565b506101b7906117d9565b6101c090612073565b9560448401966101d0888a611318565b9190926101db61174b565b60028152946101ed906020870161180a565b604085015260608401523690610202926117a3565b60808201525f60a082015261021a6084840188611318565b9390606482019461022b868b611318565b92909461023790612178565b9461024460018a016117d9565b933690610250926117a3565b9360a40161025d9661239d565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031782556102908486611318565b61029d916004850161189c565b6102a79085611318565b9091600201916102b69261189c565b6102c08380611318565b6102ca8386611318565b92909136906102d8926117a3565b9136906102e4926117a3565b6102ed9161249a565b6102f78380611318565b6103018386611318565b9161030b936125de565b73ffffffffffffffffffffffffffffffffffffffff169161032c8480611318565b9490926103399082611318565b926103449192611318565b92909361034f61175a565b96369061035b926117a3565b86523690610368926117a3565b60208501523690610378926117a3565b6040830152803b156103ea576040517f12f6ff6f000000000000000000000000000000000000000000000000000000008152905f9082908183816103bf88600483016119ca565b03925af180156103e5576103cf57005b806103dd5f6103e3936116f9565b806119c0565b005b611a54565b5f80fd5b61042d6103fa876114a5565b506040519182917f7f3179300000000000000000000000000000000000000000000000000000000083526004830161167e565b0390fd5b61045d907f531153ee000000000000000000000000000000000000000000000000000000005f52611466565b5ffd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103ea5760043567ffffffffffffffff81116103ea5760a090600401809203126103ea5790565b346103ea576104bb36610460565b6104c86100f38280611318565b6104da602083019161010b8385611318565b8054929060ff84166104eb81611457565b8061053d57505061042d61050a6105028380611318565b949093611318565b906040519485947fa8299dec00000000000000000000000000000000000000000000000000000000865260048601611a9d565b61054681611457565b600481146104315750600381019361056061013b866114a5565b906003610571600284015460ff1690565b61057a816115d4565b036103ee57610642610692939287876105f16105ec6105e66105a36106679860ff9060081c1690565b946105dc8c6105d36105c06105b88380611318565b999093611318565b9190926105cb61173a565b9936916117a3565b885236916117a3565b60208601526114a5565b506117d9565b612073565b9061060c6105fd61174b565b60048152935b6020850161180a565b60408301526060820152610622600486016117d9565b60808201525f60a082015261063a6040880188611318565b939091612178565b9261064f600187016117d9565b9161065c600288016117d9565b9360608a019061239d565b60047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6106ca6106c46106a28380611318565b6106bc6106b28787959495611318565b94909236916117a3565b9236916117a3565b9061249a565b61073e6107096106f06106dd8480611318565b906106e88787611318565b9290916125de565b73ffffffffffffffffffffffffffffffffffffffff1690565b9161073561072261071a8380611318565b969093611318565b91909261072d61173a565b9636916117a3565b855236916117a3565b6020830152803b156103ea576040517f38c858bc000000000000000000000000000000000000000000000000000000008152905f9082908183816103bf8860048301611aee565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103ea5760043567ffffffffffffffff81116103ea57604090600401809203126103ea5790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b909161082c61083a936040845260408401906107d2565b9160208184039101526107d2565b90565b346103ea5761084b36610785565b6020810190600161086961085f8484611aff565b6060810190611b32565b905003610c8f57600161089161088b61088561085f8686611aff565b90611b86565b906113a1565b01805460018103610c4657506108d86108ac6108dc926114a5565b506108d36108cd6108c860206108c28989611aff565b01611bce565b612651565b91611c57565b612717565b1590565b610c0c5760016108f46108ef8484611aff565b611caa565b6108fd81611457565b03610bd45761092661091c6109128484611aff565b6040810190611cb7565b6020810190611318565b9050610b8e576109346127b0565b9061095561094e6109486100f38480611318565b84611d0d565b5460ff1690565b61095e81611457565b610b66575f926109818361097c6109758580611318565b36916117a3565b612aa2565b7f01fb9b8778b6fb840b058bb971dea3ba81c167b010a0216afe600826884f9ba7604051806109b08682611d2a565b0390a183610aa86109cd6106f06109c78680611318565b90612b95565b6109dc60206108c28688611aff565b610a6e6109ec61085f8789611aff565b90610a6289610a508a610a1e610a44610a28610a088680611318565b939094610a18610912828a611aff565b97611aff565b6080810190611318565b979098610a3d610a3661174b565b9c8d61180a565b3691611d56565b60208a015236916117a3565b60408701528b60608701523690611dc2565b608085015236916117a3565b60a08201526040519788809481937f0b7b4ccb00000000000000000000000000000000000000000000000000000000835260048301611ea6565b03925af19384156103e5575f905f95610b37575b50918491610ad8610b249486610ad28580611318565b90612c87565b610ae28280611318565b929091610af26108ef8284611aff565b87610b1c61085f610b0860206108c28789611aff565b94610b166109128289611aff565b96611aff565b969095613010565b610b3360405192839283610815565b0390f35b610ad89550610b24939150610b5d903d805f833e610b5581836116f9565b810190611e1e565b95509092610abc565b7f0451c2a3000000000000000000000000000000000000000000000000000000005f5260045ffd5b610912610b9e9261091c92611aff565b9061042d6040519283927f8c32032900000000000000000000000000000000000000000000000000000000845260048401611cea565b6108ef61045d92610be492611aff565b7f531153ee000000000000000000000000000000000000000000000000000000005f52611466565b60206108c261045d93610c1e93611aff565b7ffb8c6036000000000000000000000000000000000000000000000000000000005f52611c98565b61042d90610c5a61088561085f8787611aff565b9290916040519384937fd7f8234300000000000000000000000000000000000000000000000000000000855260048501611bb1565b61085f61045d92610c9f92611aff565b7f607f133e000000000000000000000000000000000000000000000000000000005f5260045250602490565b346103ea5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103ea5760043567ffffffffffffffff81116103ea578060040160c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126103ea5760248201906001610d5061085f8484611aff565b905003610c8f57610d6a61088b61088561085f8585611aff565b6003610d7a600283015460ff1690565b610d83816115d4565b0361107d576001810180546001810361106957506108d8610da6610dbc926114a5565b506108d36108cd6108c860206108c28a8a611aff565b611057576002610dcf6108ef8585611aff565b610dd881611457565b0361104757610de78383611aff565b602001610df390611bce565b610dfd8380611318565b9590610e0761173a565b963690610e13926117a3565b8652610e1d61203e565b6020870152610e2c8585611aff565b60608101610e3991611b32565b610e4291611b86565b3690610e4d926117a3565b610e5690612073565b956044820196610e668887611318565b919092610e7161174b565b6001815295610e83906020880161180a565b604086015260608501523690610e98926117a3565b60808301525f60a0830152610eb06064820185611318565b610ebd8787959395611aff565b60408101610eca91611cb7565b80610ed491611318565b949092610ee18989611aff565b60408101610eee91611cb7565b60208101610efb91611318565b949091610f0790612178565b963690610f13926117a3565b933690610f1f926117a3565b93608401610f2c9661239d565b610f346127b0565b91610f3f8280611318565b610f4891611369565b610f529084611d0d565b5460ff16610f5f81611457565b610b66575f610aa88195610f7a8661097c6109758880611318565b7f01fb9b8778b6fb840b058bb971dea3ba81c167b010a0216afe600826884f9ba760405180610fa98982611d2a565b0390a1610fbc6106f06109c78780611318565b9061100d610a28610fd260206108c2898b611aff565b92610a6289610a508a610912610a44610fee61085f8487611aff565b989097611007610ffe8880611318565b95909689611aff565b96611318565b60a08201526040519788809481937fa7a61e6600000000000000000000000000000000000000000000000000000000835260048301611ea6565b61045d610be46108ef8585611aff565b61045d610c1e60206108c28686611aff565b61042d90610c5a61088561085f8888611aff565b61108d61088561085f8585611aff565b9061042d6040519283927f7f31793000000000000000000000000000000000000000000000000000000000845260048401611cea565b346103ea576110d136610460565b6110de6100f38280611318565b906110f1602082019261010b8484611318565b805460ff811661110081611457565b6002810361043157509061115161064261117c93600384018761113b6105ec6105e66105a361113161013b876114a5565b9660081c60ff1690565b9061060c61114761174b565b6003815293610603565b60037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b61118c6106c46106a28380611318565b61119f6107096106f06106dd8480611318565b6020830152803b156103ea576040517f81b174dc000000000000000000000000000000000000000000000000000000008152905f9082908183816103bf8860048301611aee565b346103ea576111f436610785565b6112016100f38280611318565b90611214602082019261010b8484611318565b805460ff1661122281611457565b8061123957505061042d61050a6105028380611318565b61124281611457565b60048114610431575060038101600361126a600261126261013b856114a5565b015460ff1690565b611273816115d4565b0361130c575080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660041790556112b26106c46106a28380611318565b6112c56107096106f06106dd8480611318565b6020830152803b156103ea576040517f3c7df3fb000000000000000000000000000000000000000000000000000000008152905f9082908183816103bf8860048301611aee565b6103fa61042d916114a5565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156103ea570180359067ffffffffffffffff82116103ea576020019181360383136103ea57565b60209082604051938492833781017f1952ed347963c5b7b1856335782fc9c26716d4219254baf3dfc6b26981b2dc0081520301902090565b60209082604051938492833781017f9ef02a9acd7179d999aa130fa65a34ac06dd2f1bae667ae0fb5500040879380081520301902090565b60209082604051938492833781017f74277c96171a830beeb656543654929b9b37cec88976b4c3192479995155050281520301902090565b6020919283604051948593843782019081520301902090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6007111561146157565b61142a565b90602491600781101561146157600452565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054156114b7575f5260205f20905f90565b611478565b90600182811c92168015611503575b60208310146114d657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916114cb565b60405190815f82549261151f846114bc565b936001811690811561159c5750600114611563575b50602092507f9ef02a9acd7179d999aa130fa65a34ac06dd2f1bae667ae0fb5500040879380081520301902090565b9150505f528160205f205f905b83821061158457505060209181015f611534565b60209192508060019154848701520191018391611570565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001684525060209380151502830191505f9050611534565b6004111561146157565b5f92918154916115ed836114bc565b8083529260018116908115611642575060011461160957505050565b5f9081526020812093945091925b838310611628575060209250010190565b600181602092949394548385870101520191019190611617565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b90602061083a9281815201906115de565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176116d857604052565b61168f565b60c0810190811067ffffffffffffffff8211176116d857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176116d857604052565b604051906117496040836116f9565b565b6040519061174960c0836116f9565b604051906117496060836116f9565b67ffffffffffffffff81116116d857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926117af82611769565b916117bd60405193846116f9565b8294818452818301116103ea578281602093845f960137010152565b906117496117ed92604051938480926115de565b03836116f9565b60078210156114615752565b6003111561146157565b60038210156114615752565b9060078110156114615760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008354169116179055565b601f821161185a57505050565b5f5260205f20906020601f840160051c83019310611892575b601f0160051c01905b818110611887575050565b5f815560010161187c565b9091508190611873565b90929167ffffffffffffffff81116116d8576118c2816118bc84546114bc565b8461184d565b5f601f821160011461191e57819061190f9394955f92611913575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b9055565b013590505f806118dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169461194f845f5260205f2090565b915f5b8781106119a8575083600195969710611970575b505050811b019055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690555f8080611966565b90926020600181928686013581550194019101611952565b5f9103126103ea57565b9061083a91602081526040611a216119ee84516060602086015260808501906107d2565b60208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085830301848601526107d2565b9201519060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828503019101526107d2565b6040513d5f823e3d90fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b9290611ab69061083a9593604086526040860191611a5f565b926020818503910152611a5f565b61083a916020611add83516040845260408401906107d2565b9201519060208184039101526107d2565b90602061083a928181520190611ac4565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41813603018212156103ea570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156103ea570180359067ffffffffffffffff82116103ea57602001918160051b360383136103ea57565b90156114b75780611b9691611318565b9091565b908210156114b757611b969160051b810190611318565b939291602091611bc991604087526040870191611a5f565b930152565b3560038110156103ea5790565b67ffffffffffffffff81116116d85760051b60200190565b908154611bff81611bdb565b92611c0d60405194856116f9565b81845260208401905f5260205f205f915b838310611c2b5750505050565b600160208192604051611c4981611c4281896115de565b03826116f9565b815201920192019190611c1e565b90604051611c64816116bc565b6020611c8660018395604051611c7e81611c4281856115de565b855201611bf3565b910152565b9060038210156114615752565b90602491600381101561146157600452565b3560078110156103ea5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1813603018212156103ea570190565b91602061083a938181520191611a5f565b805191908290602001825e015f815290565b602090611d209260405193848093611cfb565b9081520301902090565b90602061083a9281815201906107d2565b9080601f830112156103ea5781602061083a933591016117a3565b929190611d6281611bdb565b93611d7060405195866116f9565b602085838152019160051b8101918383116103ea5781905b838210611d96575050505050565b813567ffffffffffffffff81116103ea57602091611db78784938701611d3b565b815201910190611d88565b91906040838203126103ea5760405190611ddb826116bc565b8193803567ffffffffffffffff81116103ea5782611dfa918301611d3b565b835260208101359167ffffffffffffffff83116103ea57602092611c869201611d3b565b91906040838203126103ea57825173ffffffffffffffffffffffffffffffffffffffff811681036103ea579260208101519067ffffffffffffffff82116103ea570181601f820112156103ea57805190611e7782611769565b92611e8560405194856116f9565b828452602083830101116103ea57815f9260208093018386015e8301015290565b91906020835260e0830192611ebf602082018351611c8b565b60208201519360c060408301528451809152610100820190602060e0818360051b860101019601915f905b828210611fd3575050505060a0611fa0611f6d611f3961083a969760408701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08783030160608801526107d2565b60608601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08683030160808701526107d2565b60808501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08583030184860152611ac4565b9201519060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828503019101526107d2565b90919296602080612030837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08a60019703010186528b516107d2565b990192019201909291611eea565b6040519061204d6020836116f9565b5f8252565b8051156114b75760200190565b80518210156114b75760209160051b010190565b604080519161208282846116f9565b600183527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082015f5b8181106121185750508160046120ce602061210194611c42965192838092611cfb565b7f9ef02a9acd7179d999aa130fa65a34ac06dd2f1bae667ae0fb55000408793800815203019020019051928380926115de565b61210a82612052565b5261211481612052565b5090565b8060606020809388010152016120ab565b9061213382611769565b61214060405191826116f9565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061216e8294611769565b0190602036910137565b906121e86121d06121ab6121a66121a161219b875161219681611457565b6136b8565b60030b90565b613759565b613123565b6121ca6121a66121a161219b60208901516121c581611800565b61377e565b9061313f565b6121ca6121a66121e360408701516137b8565b6137f8565b60608301915f915b83518051841015612220576001916121ca6121a6612211876122189561205f565b51516137f8565b9201916121f0565b5061226a919493506122719250612245612265916121ca6121a66080880151516137f8565b6121ca6121a661226060a088015167ffffffffffffffff1690565b61376b565b612129565b80926131c1565b815290565b908160209103126103ea575180151581036103ea5790565b359067ffffffffffffffff821682036103ea57565b67ffffffffffffffff6122c660208093836122bd8261228e565b1686520161228e565b16910152565b9592612328926123369561231a926123016122f661083a9c9a966101208d526101208d01906115de565b9360208c01906122a3565b5f60608b01525f60808b015289830360a08b0152611a5f565b9086820360c08801526115de565b9084820360e08601526107d2565b916101008184039101526107d2565b96959390946123876080946123796123959561236b6117499a60c08e81815201906115de565b8c810360208e0152906107d2565b908a820360408c01526107d2565b9188830360608a0152611a5f565b9401906122a3565b9496856020858a865f876124078e9c999c6123cc6123c56106f06123c08c6117d9565b61336c565b968c613405565b604051998a98899788967ff9bb5a510000000000000000000000000000000000000000000000000000000088526005840193600489016122cc565b03925af19081156103e5575f9161246b575b50612461575061042d94959661242e91613405565b956040519687967f482b412f00000000000000000000000000000000000000000000000000000000885260048801612345565b9650505050505050565b61248d915060203d602011612493575b61248581836116f9565b810190612276565b5f612419565b503d61247b565b906125ae6125db916125a16124e56040516020816124b8818a611cfb565b7f1952ed347963c5b7b1856335782fc9c26716d4219254baf3dfc6b26981b2dc0081520301902083611d0d565b61259c61258b6005604051936124fa856116dd565b61251a60ff825461250d828216896117f4565b60081c166020870161180a565b604051612526816116bc565b60405161253a81611c4281600187016115de565b815260405161255081611c4281600287016115de565b6020820152604086015261256660038201611bf3565b6060860152612577600482016117d9565b6080860152015467ffffffffffffffff1690565b67ffffffffffffffff1660a0830152565b612178565b602081519101209361349e565b5f527f1ee222554989dda120e26ecacf756fe1235cd8d726706b57517715dde4f0c90060205260405f2090565b55565b90919273ffffffffffffffffffffffffffffffffffffffff61260a61260385856113d9565b8387611411565b541693841561261a575050505090565b9061042d916040519485947f8e64f0b900000000000000000000000000000000000000000000000000000000865260048601611a9d565b6003811015611461576001810361269e57506040516126716040826116f9565b600f81527f4f524445525f554e4f5244455245440000000000000000000000000000000000602082015290565b6126a781611800565b600281036126eb57506040516126be6040826116f9565b600d81527f4f524445525f4f52444552454400000000000000000000000000000000000000602082015290565b61045d907fbad3d148000000000000000000000000000000000000000000000000000000005f52611c98565b90602081519101205f5b602083015180518210156127575761273a82849261205f565b51602081519101201461274f57600101612721565b505050600190565b505050505f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b67ffffffffffffffff1667ffffffffffffffff81146127ab5760010190565b61275f565b7f74277c96171a830beeb656543654929b9b37cec88976b4c319247999515505035467ffffffffffffffff8160801c16805f917a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015612a7a575b806d04ee2d6d415b85acef8100000000600a921015612a5e575b662386f26fc10000811015612a49575b6305f5e100811015612a37575b612710811015612a27575b6064811015612a18575b1015612a0d575b6128c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602161288c60018601612129565b948501015b01917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b9081156128f4576128c2907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90612891565b50506129856129806129449361297061083a9460405196879161293e602084016008907f6368616e6e656c2d00000000000000000000000000000000000000000000000081520190565b90611cfb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866116f9565b60801c67ffffffffffffffff1690565b61278c565b7fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff000000000000000000000000000000007f74277c96171a830beeb656543654929b9b37cec88976b4c31924799951550503549260801b169116177f74277c96171a830beeb656543654929b9b37cec88976b4c3192479995155050355565b60019091019061285a565b60029060649004930192612853565b6004906127109004930192612849565b6008906305f5e100900493019261283e565b601090662386f26fc100009004930192612831565b6020906d04ee2d6d415b85acef81000000009004930192612821565b50604091507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104612807565b906125ae6125db91612b586010612aef604051602081612ac2818b611cfb565b7f1952ed347963c5b7b1856335782fc9c26716d4219254baf3dfc6b26981b2dc0081520301902084611d0d565b6006810180547fffffffffffffffff000000000000000000000000000000000000000000000000167001000000000000000100000000000000011790550180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001179055565b6040517801000000000000000000000000000000000000000000000000602082019081526008825290612b8c6028826116f9565b519020936134b2565b73ffffffffffffffffffffffffffffffffffffffff604051838382376020818581017f74277c96171a830beeb656543654929b9b37cec88976b4c319247999515505018152030190205416918215612bec57505090565b61042d6040519283927f71adaca00000000000000000000000000000000000000000000000000000000084526020600485018181520191611a5f565b9161083a939161082c91604085526040850191611a5f565b92612c8090612c7273ffffffffffffffffffffffffffffffffffffffff93604095989798606088526060880191611a5f565b9085820360208701526107d2565b9416910152565b909193929373ffffffffffffffffffffffffffffffffffffffff612ccb612cb161094886866113d9565b5473ffffffffffffffffffffffffffffffffffffffff1690565b16612e655773ffffffffffffffffffffffffffffffffffffffff851615612e2357612cf86108d8866134fd565b612dfb57612d086108d886613629565b612d955784612d9091612d847f38263a2e7df1710554835905f687541ee2146f44ed1e80deae934cce1ffce4519697612d4461094888886113d9565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60405194859485612c40565b0390a1565b7f13ea7a9f000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff85166004527f1dbfa0520000000000000000000000000000000000000000000000000000000060245260445ffd5b7f19a8c136000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8b423a4c000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff851660045260245ffd5b61042d906040519384937f4d2f689f00000000000000000000000000000000000000000000000000000000855260048501612c28565b600190612eb96117499361091c612eb28280611318565b908561189c565b9290910161189c565b91908254680100000000000000008110156116d857600181018085558110156114b757611749935f5260205f200161189c565b919091825167ffffffffffffffff81116116d857612f17816118bc84546114bc565b6020601f8211600114612f6f57819061190f9394955f92612f645750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b015190505f806118dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0821690612fa0845f5260205f2090565b915f5b818110612ff857509583600195969710612fc157505050811b019055565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080611966565b9192602060018192868b015181550194019201612fa3565b969294979390959197613060613059604051898b82376020818b81017f1952ed347963c5b7b1856335782fc9c26716d4219254baf3dfc6b26981b2dc008152030190208b611d0d565b9687611816565b6003821015611461576130a9917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0088969596549260081b16911617865560018601612e9b565b60038401905f5b8181106131055750505050916109756005836130d76131009660046117499a999701612ef5565b017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008154169055565b61249a565b8061311d6131166001938588611b9a565b9086612ec2565b016130b0565b60010190816001116127ab57565b90602082018092116127ab57565b919082018092116127ab57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082019182116127ab57565b60200390602082116127ab57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116127ab57565b919082039182116127ab57565b9061321b61320c602084516131d581611457565b6131de81611457565b613343575b836020860180516131f381611800565b6131fc81611800565b613316575b506121ca90826139ab565b6121ca83826040870151613822565b91606081018051516132c7575b509160209183608061083a950180515161329f575b5060a00167ffffffffffffffff61325c825167ffffffffffffffff1690565b16613269575b50506131b4565b816121ca91613282856121ca61329396613298986139d2565b9384915167ffffffffffffffff1690565b61380d565b5f80613262565b6132c0906121ca846132b8876121ca8360a0989a6139c5565b809351613ac5565b929061323d565b935f939193915b855151831015613309576133016132eb826121ca876001956139b8565b6121ca86826132fb888c5161205f565b51613ac5565b9201916132ce565b9094509290506020613228565b816121ca9161332f856121ca6132939661333c9861399e565b938491516121c581611800565b835f613201565b613354816121ca8661336794613963565b6121ca8582613293895161219681611457565b6131e3565b73ffffffffffffffffffffffffffffffffffffffff60016040516020816133938187611cfb565b7f521e6acb905d37b69880078e1a941104ad5d8bcb8c5cf52f1d5f47d31739d5008152030190200154169081156133c8575090565b61042d906040519182917f8beef47400000000000000000000000000000000000000000000000000000000835260206004840181815201906107d2565b61083a9061347261344893600a6040519586947f6368616e6e656c456e64732f706f7274732f000000000000000000000000000060208701526032860190611cfb565b7f2f6368616e6e656c732f0000000000000000000000000000000000000000000081520190611cfb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826116f9565b906134a891613405565b6020815191012090565b906134f761347291604051928391600a61344860208501977f6e65787453657175656e6365526563762f706f7274732f00000000000000000089526037860190611cfb565b51902090565b60205f604051828101907f01ffc9a70000000000000000000000000000000000000000000000000000000082527f01ffc9a70000000000000000000000000000000000000000000000000000000060248201526024815261355f6044826116f9565b519084617530fa903d5f51908361361d575b5082613613575b5081613582575090565b602091505f90604051838101907f01ffc9a70000000000000000000000000000000000000000000000000000000082527fffffffff000000000000000000000000000000000000000000000000000000006024820152602481526135e76044826116f9565b5191617530fa5f513d82613607575b508161360157501590565b15919050565b6020111591505f6135f6565b151591505f613578565b6020111592505f613571565b5f602091604051838101907f01ffc9a70000000000000000000000000000000000000000000000000000000082527f1dbfa0520000000000000000000000000000000000000000000000000000000060248201526024815261368c6044826116f9565b5191617530fa5f513d826136ac575b50816136a5575090565b9050151590565b6020111591505f61369b565b6136c181611457565b8015613754576136d081611457565b6001811461374e576136e181611457565b60028114613748576136f281611457565b600381146137425761370381611457565b6004811461373c5761371481611457565b600581146137365780613728600692611457565b14613731575f80fd5b600690565b50600590565b50600490565b50600390565b50600290565b50600190565b505f90565b5f8160070b125f1461376b5750600a90565b67ffffffffffffffff61083a9116613944565b60038110156114615780156137545761379681611800565b6001811461374e576002906137aa81611800565b146137b3575f80fd5b600290565b6137c38151516137f8565b8060010191826001116127ab5760206137de910151516137f8565b806001016001116127ab5760029101018091116127ab5790565b61380181613944565b81018091116127ab5790565b9067ffffffffffffffff61083a9392166139fb565b9161382f612265846137b8565b926020908051516138b5575b61388f61083a9561389494613864613889956020613883960184815151613899575b505061314c565b94859261387b613875848b876139fb565b8a61313f565b958691613131565b9261313f565b90613a3a565b61313f565b6131b4565b806132b8846121ca6121ca946138ae976139ee565b5f8461385d565b6138be856139df565b91828101928382116127ab578251908151916138db8987856139fb565b9380855f94018b01019101905b83831061392d575050905081018091116127ab5761083a956138949461386461388394602061391d61388f966138899961313f565b975050945050945095505061383b565b600180809284515f1a8153019201920191906138e8565b60019060071c805b613954575090565b60019091019060071c8061394c565b5f929160089101815b60071c918215613992576001918291608017815301930190607f8116909390919361396c565b90600193949250530190565b5f92918391016010613992565b5f9291839101601a613992565b5f92918391016022613992565b5f9291839101602a613992565b5f92918391016030613992565b5f91908290602001600a613992565b5f92918391016012613992565b5f9392607f821692019060071c918215613992576001918291608017815301930190607f8116909390919361396c565b601f81116127ab576101000a90565b90918015613ac0575b60208111613a7257613a5f613a5a613a6492613179565b613a2b565b613187565b905182518216911916179052565b909182518152602081018091116127ab5791602081018091116127ab57907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810190811115613a435761275f565b505050565b908151916020613ad68584866139fb565b94855f9401019101905b838310613af7575050905081018091116127ab5790565b600180809284515f1a815301920192019190613ae056fea2646970667358221220cf332816bfd36314dc729f6cf8c73a3e7ba811076891661a3f00fed547ae1bfe64736f6c634300081c0033