diff --git a/apex-bridge-smartcontracts b/apex-bridge-smartcontracts index a25cdada77..2bc3a9cae0 160000 --- a/apex-bridge-smartcontracts +++ b/apex-bridge-smartcontracts @@ -1 +1 @@ -Subproject commit a25cdada777fccc5c9b5f74fe4dbf58c1ef708fa +Subproject commit 2bc3a9cae0c93f08a753c71ea5b6c6b756a7139c diff --git a/consensus/polybft/contractsapi/apex_sc_data.go b/consensus/polybft/contractsapi/apex_sc_data.go index 5c85a5e3f2..3fe3679370 100644 --- a/consensus/polybft/contractsapi/apex_sc_data.go +++ b/consensus/polybft/contractsapi/apex_sc_data.go @@ -1,10 +1,10 @@ // This is auto-generated file. DO NOT EDIT. package contractsapi -var BridgeArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"Bridge","sourceName":"contracts/Bridge.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllRegisteredChains","outputs":[{"components":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"addressMultisig","type":"string"},{"internalType":"string","name":"addressFeePayer","type":"string"}],"internalType":"struct IBridgeStructs.Chain[]","name":"_chains","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getAvailableUTXOs","outputs":[{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"availableUTXOs","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getConfirmedBatch","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string[]","name":"multisigSignatures","type":"string[]"},{"internalType":"string[]","name":"feePayerMultisigSignatures","type":"string[]"}],"internalType":"struct IBridgeStructs.ConfirmedBatch","name":"batch","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getConfirmedTransactions","outputs":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"blockHeight","type":"uint256"},{"internalType":"string","name":"sourceChainID","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ConfirmedTransaction[]","name":"_confirmedTransactions","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_sourceChain","type":"string"}],"name":"getLastObservedBlock","outputs":[{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock","name":"cblock","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getNextBatchId","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getRawTransactionFromLastBatch","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"getValidatorsCardanoData","outputs":[{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData[]","name":"validatorCardanoData","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"addressMultisig","type":"string"},{"internalType":"string","name":"addressFeePayer","type":"string"}],"internalType":"struct IBridgeStructs.Chain","name":"_chain","type":"tuple"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"_initialUTXOs","type":"tuple"},{"internalType":"uint256","name":"_tokenQuantity","type":"uint256"},{"components":[{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData","name":"data","type":"tuple"}],"internalType":"struct IBridgeStructs.ValidatorAddressCardanoData[]","name":"_validatorsAddressCardanoData","type":"tuple[]"}],"name":"registerChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"addressMultisig","type":"string"},{"internalType":"string","name":"addressFeePayer","type":"string"}],"internalType":"struct IBridgeStructs.Chain","name":"_chain","type":"tuple"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"_initialUTXOs","type":"tuple"},{"internalType":"uint256","name":"_tokenQuantity","type":"uint256"},{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData","name":"_validatorCardanoData","type":"tuple"}],"name":"registerChainGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_claimsAddress","type":"address"},{"internalType":"address","name":"_signedBatchesAddress","type":"address"},{"internalType":"address","name":"_slotsAddress","type":"address"},{"internalType":"address","name":"_utxoscAddress","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"shouldCreateBatch","outputs":[{"internalType":"bool","name":"batch","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"outputUTXO","type":"tuple"},{"internalType":"string","name":"sourceChainID","type":"string"},{"internalType":"string","name":"destinationChainID","type":"string"}],"internalType":"struct IBridgeStructs.BridgingRequestClaim[]","name":"bridgingRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"outputUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.BatchExecutedClaim[]","name":"batchExecutedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"}],"internalType":"struct IBridgeStructs.BatchExecutionFailedClaim[]","name":"batchExecutionFailedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"previousRefundTxHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"receiver","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"uint256","name":"retryCounter","type":"uint256"}],"internalType":"struct IBridgeStructs.RefundRequestClaim[]","name":"refundRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"refundTxHash","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"}],"internalType":"struct IBridgeStructs.RefundExecutedClaim[]","name":"refundExecutedClaims","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ValidatorClaims","name":"_claims","type":"tuple"}],"name":"submitClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"chainID","type":"string"},{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock[]","name":"blocks","type":"tuple[]"}],"name":"submitLastObservedBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"destinationChainId","type":"string"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"string","name":"feePayerMultisigSignature","type":"string"},{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.SignedBatch","name":"_signedBatch","type":"tuple"}],"name":"submitSignedBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516142826200010460003960008181611e7001528181611e99015261201c01526142826000f3fe6080604052600436106101755760003560e01c8063715018a6116100cb578063ad3cb1cc1161007f578063d52c54c411610059578063d52c54c414610468578063e3d5853914610495578063f2fde38b146104b557600080fd5b8063ad3cb1cc146103df578063b95a432c14610428578063cbb0ff791461044857600080fd5b80638129fc1c116100b05780638129fc1c146103635780638da5cb5b14610378578063997ef201146103bf57600080fd5b8063715018a61461031e57806377968b341461033357600080fd5b806349187cd91161012d578063595051f911610107578063595051f9146102a2578063636b8a0d146102cf57806367f0cc44146102fc57600080fd5b806349187cd91461024d5780634f1ef2861461027a57806352d1902d1461028d57600080fd5b806333552ec51161015e57806333552ec5146101dd5780633cd9ae3e146101ff578063406f8f041461022d57600080fd5b806303fe69ae1461017a5780632175c3f7146101b0575b600080fd5b34801561018657600080fd5b5061019a6101953660046123e2565b6104d5565b6040516101a79190612500565b60405180910390f35b3480156101bc57600080fd5b506101d06101cb3660046123e2565b610580565b6040516101a79190612539565b3480156101e957600080fd5b506101fd6101f83660046125e4565b610623565b005b34801561020b57600080fd5b5061021f61021a3660046123e2565b6106ab565b6040519081526020016101a7565b34801561023957600080fd5b506101fd61024836600461267d565b610751565b34801561025957600080fd5b5061026d6102683660046123e2565b610864565b6040516101a791906126e9565b6101fd6102883660046127f6565b6108ea565b34801561029957600080fd5b5061021f610909565b3480156102ae57600080fd5b506102c26102bd3660046123e2565b610938565b6040516101a79190612887565b3480156102db57600080fd5b506102ef6102ea3660046123e2565b610beb565b6040516101a79190612993565b34801561030857600080fd5b50610311610c7d565b6040516101a79190612a0c565b34801561032a57600080fd5b506101fd610e92565b34801561033f57600080fd5b5061035361034e3660046123e2565b610ea6565b60405190151581526020016101a7565b34801561036f57600080fd5b506101fd611060565b34801561038457600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101a7565b3480156103cb57600080fd5b506101fd6103da366004612aa1565b6111a3565b3480156103eb57600080fd5b5061026d6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561043457600080fd5b506101fd610443366004612b06565b611217565b34801561045457600080fd5b506101fd610463366004612b41565b61131a565b34801561047457600080fd5b506104886104833660046123e2565b6114e8565b6040516101a79190612bca565b3480156104a157600080fd5b506101fd6104b0366004612c2c565b6115a3565b3480156104c157600080fd5b506101fd6104d0366004612cbe565b6119fc565b6040805180820182526060808252602082015260035491517f34c3908400000000000000000000000000000000000000000000000000000000815290916001600160a01b0316906334c39084906105329086908690600401612d02565b600060405180830381865afa15801561054f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612e81565b90505b92915050565b604080518082018252606081526000602082015260025491517f2175c3f700000000000000000000000000000000000000000000000000000000815290916001600160a01b031690632175c3f7906105de9086908690600401612d02565b600060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612f12565b61062b611a50565b6004546001600160a01b03166332bae10d6106468780612f96565b85856040518563ffffffff1660e01b8152600401610667949392919061308d565b600060405180830381600087803b15801561068157600080fd5b505af1158015610695573d6000803e3d6000fd5b505050506106a4858585611ac4565b5050505050565b60006106b78383610ea6565b6106c35750600061057a565b600154604051631c8f277560e01b81526000916001600160a01b031690631c8f2775906106f69087908790600401612d02565b600060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073b9190810190613132565b50905061074981600161318f565b949350505050565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be91906131a2565b6107db57604051632ec5b44960e01b815260040160405180910390fd5b6002546040517fecc155dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ecc155dd9061082c90879087908790879033906004016131c4565b600060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b5050505050505050565b600154604051631c8f277560e01b81526060916000916001600160a01b0390911690631c8f27759061089c9087908790600401612d02565b600060405180830381865afa1580156108b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108e19190810190613132565b95945050505050565b6108f2611e65565b6108fb82611f1c565b6109058282611f24565b5050565b6000610913612011565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60606109448383610ea6565b6109875782826040517fa87b2dd800000000000000000000000000000000000000000000000000000000815260040161097e929190612d02565b60405180910390fd5b600080546040517f1d530f120000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631d530f12906109d39087908790600401612d02565b602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190613280565b610a1f90600161318f565b600080546040517f44e3bd2200000000000000000000000000000000000000000000000000000000815292935090916001600160a01b03909116906344e3bd2290610a709088908890600401612d02565b602060405180830381865afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab19190613280565b90508067ffffffffffffffff811115610acc57610acc612718565b604051908082528060200260200182016040528015610b2f57816020015b610b1c6040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b815260200190600190039081610aea5790505b50925060005b81811015610be2576000546001600160a01b0316636cabee018787610b5a858861318f565b6040518463ffffffff1660e01b8152600401610b7893929190613299565b600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd919081019061337c565b848281518110610bcf57610bcf613445565b6020908102919091010152600101610b35565b50505092915050565b600480546040517f636b8a0d0000000000000000000000000000000000000000000000000000000081526060926001600160a01b039092169163636b8a0d91610c38918791879101612d02565b600060405180830381865afa158015610c55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610577919081019061345b565b60606005805480602002602001604051908101604052809291908181526020016000905b82821015610e895783829060005260206000209060030201604051806060016040529081600082018054610cd490613567565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090613567565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b50505050508152602001600182018054610d6690613567565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9290613567565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b50505050508152602001600282018054610df890613567565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2490613567565b8015610e715780601f10610e4657610100808354040283529160200191610e71565b820191906000526020600020905b815481529060010190602001808311610e5457829003601f168201915b50505050508152505081526020019060010190610ca1565b50505050905090565b610e9a611a50565b610ea4600061205a565b565b600080546040517f74cff92e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906374cff92e90610ef29086908690600401612d02565b602060405180830381865afa158015610f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3391906131a2565b80610fc757506001546040517fdf04b2ae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063df04b2ae90610f869086908690339060040161359b565b602060405180830381865afa158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc791906131a2565b15610fd45750600061057a565b6000546040517f77968b340000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906377968b349061101f9086908690600401612d02565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057791906131a2565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156110ab5750825b905060008267ffffffffffffffff1660011480156110c85750303b155b9050811580156110d6575080155b1561110d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561114157845468ff00000000000000001916680100000000000000001785555b61114a336120d8565b6111526120e9565b83156106a457845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6111ab611a50565b6000805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03978816179091556001805482169587169590951790945560028054851693861693909317909255600380548416918516919091179055600480549092169216919091179055565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128491906131a2565b6112a157604051632ec5b44960e01b815260040160405180910390fd5b6000546040517f5673ee670000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635673ee67906112ec9084903390600401613aa4565b600060405180830381600087803b15801561130657600080fd5b505af11580156106a4573d6000803e3d6000fd5b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906131a2565b6113a457604051632ec5b44960e01b815260040160405180910390fd5b6113b461034e6020830183612f96565b156114e5576004546001600160a01b03166381b6ecf56113d76020840184612f96565b6113e46040860186612f96565b6113f16060880188612f96565b6113fe60808a018a612f96565b336040518a63ffffffff1660e01b815260040161142399989796959493929190613cf8565b602060405180830381865afa158015611440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146491906131a2565b61149a576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517fd254f6f20000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d254f6f2906112ec9084903390600401613d69565b50565b6115136040518060800160405280600081526020016060815260200160608152602001606081525090565b6001546040517fd52c54c40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d52c54c49061155e9086908690600401612d02565b600060405180830381865afa15801561157b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190613ee9565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161091906131a2565b61162d57604051632ec5b44960e01b815260040160405180910390fd5b36600061163a8680612f96565b6000546040517f18c586cd0000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b0316906318c586cd906116899085908590600401612d02565b602060405180830381865afa1580156116a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ca91906131a2565b156117055781816040517fc4a32e4900000000000000000000000000000000000000000000000000000000815260040161097e929190612d02565b6000546040517f9af06cd90000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690639af06cd9906117529085908590339060040161359b565b602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179391906131a2565b156117ce5781816040517fc113c1e300000000000000000000000000000000000000000000000000000000815260040161097e929190612d02565b60008686866040516020016117e593929190613fa8565b60408051601f19818403018152908290528051602090910120600480547f34a1a0950000000000000000000000000000000000000000000000000000000084529193506001600160a01b03909116916334a1a0959161184c918791879133918b9101614044565b600060405180830381600087803b15801561186657600080fd5b505af115801561187a573d6000803e3d6000fd5b505060048054604080517f2749824000000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921694506327498240935080830192602092918290030181865afa1580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190614084565b6000546040517fb9d808ff00000000000000000000000000000000000000000000000000000000815260ff92909216916001600160a01b039091169063b9d808ff906119589087908790339088906004016140a7565b6020604051808303816000875af1158015611977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199b9190613280565b036119b0576119ab878787611ac4565b6119f3565b60405133906119c290859085906140d7565b604051908190038120907f99960385426dfd945f1af41c805b3ce369f9f0585b1a7f48ed778e026d2caaae90600090a35b50505050505050565b611a04611a50565b6001600160a01b038116611a47576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161097e565b6114e58161205a565b33611a827f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610ea4576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161097e565b366000611ad18580612f96565b6000546040517feab481c30000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03169063eab481c390611b209085908590600401612d02565b600060405180830381600087803b158015611b3a57600080fd5b505af1158015611b4e573d6000803e3d6000fd5b50506005805460019081018083556000928352919350611b6f9250906140e7565b9050828260058381548110611b8657611b86613445565b90600052602060002090600302016000019182611ba492919061414a565b50611bb26020870187612f96565b60058381548110611bc557611bc5613445565b90600052602060002090600302016001019182611be392919061414a565b50611bf16040870187612f96565b60058381548110611c0457611c04613445565b90600052602060002090600302016002019182611c2292919061414a565b506003546040517f7e31e3fd0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690637e31e3fd90611c7090869086908a9060040161420a565b600060405180830381600087803b158015611c8a57600080fd5b505af1158015611c9e573d6000803e3d6000fd5b50506000546040517fe3aa21f40000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063e3aa21f49150611cef90869086908990600401613299565b600060405180830381600087803b158015611d0957600080fd5b505af1158015611d1d573d6000803e3d6000fd5b50506000546040517fca6869820000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063ca6869829150611d6c9086908690600401612d02565b600060405180830381600087803b158015611d8657600080fd5b505af1158015611d9a573d6000803e3d6000fd5b50506000546040517f0d32b63e0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250630d32b63e9150611deb90869086904390600401613299565b600060405180830381600087803b158015611e0557600080fd5b505af1158015611e19573d6000803e3d6000fd5b505050508282604051611e2d9291906140d7565b604051908190038120907f3cbe969d5c5f2c70c7cfb293cd355d3fcc80a852eac9bee1c1c317dc302f199d90600090a2505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611efe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610ea45760405163703e46dd60e11b815260040160405180910390fd5b6114e5611a50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f7e575060408051601f3d908101601f19168201909252611f7b91810190613280565b60015b611fa657604051634c9c8ce360e01b81526001600160a01b038316600482015260240161097e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612002576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161097e565b61200c83836120f1565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ea45760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6120e0612147565b6114e5816121ae565b610ea4612147565b6120fa826121b6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561213f5761200c828261223a565b6109056122a7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610ea4576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a04612147565b806001600160a01b03163b6000036121ec57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161097e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516122579190614230565b600060405180830381855af49150503d8060008114612292576040519150601f19603f3d011682016040523d82523d6000602084013e612297565b606091505b50915091506108e18583836122df565b3415610ea4576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826122f4576122ef82612357565b612350565b815115801561230b57506001600160a01b0384163b155b1561234d576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161097e565b50805b9392505050565b8051156123675780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f8401126123ab57600080fd5b50813567ffffffffffffffff8111156123c357600080fd5b6020830191508360208285010111156123db57600080fd5b9250929050565b600080602083850312156123f557600080fd5b823567ffffffffffffffff81111561240c57600080fd5b61241885828601612399565b90969095509350505050565b60005b8381101561243f578181015183820152602001612427565b50506000910152565b60008151808452612460816020860160208601612424565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156124f357601f198684030189528151608067ffffffffffffffff82511685528582015181878701526124c982870182612448565b60408481015190880152606093840151939096019290925250509783019790830190600101612491565b5090979650505050505050565b60208152600082516040602084015261251c6060840182612474565b90506020840151601f198483030160408501526108e18282612474565b6020815260008251604060208401526125556060840182612448565b905067ffffffffffffffff60208501511660408401528091505092915050565b60006060828403121561258757600080fd5b50919050565b60006040828403121561258757600080fd5b60008083601f8401126125b157600080fd5b50813567ffffffffffffffff8111156125c957600080fd5b6020830191508360208260051b85010111156123db57600080fd5b6000806000806000608086880312156125fc57600080fd5b853567ffffffffffffffff8082111561261457600080fd5b61262089838a01612575565b9650602088013591508082111561263657600080fd5b61264289838a0161258d565b955060408801359450606088013591508082111561265f57600080fd5b5061266c8882890161259f565b969995985093965092949392505050565b6000806000806040858703121561269357600080fd5b843567ffffffffffffffff808211156126ab57600080fd5b6126b788838901612399565b909650945060208701359150808211156126d057600080fd5b506126dd8782880161259f565b95989497509550505050565b6020815260006105776020830184612448565b80356001600160a01b038116811461271357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561275157612751612718565b60405290565b6040805190810167ffffffffffffffff8111828210171561275157612751612718565b60405160a0810167ffffffffffffffff8111828210171561275157612751612718565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c6576127c6612718565b604052919050565b600067ffffffffffffffff8211156127e8576127e8612718565b50601f01601f191660200190565b6000806040838503121561280957600080fd5b612812836126fc565b9150602083013567ffffffffffffffff81111561282e57600080fd5b8301601f8101851361283f57600080fd5b803561285261284d826127ce565b61279d565b81815286602083850101111561286757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561298557603f19898403018552815160a081518186526128d482870182612448565b91505088820151898601528782015188860152606080830151868303828801526128fe8382612448565b92505050608080830151925085820381870152508082518083528a830191508a8160051b8401018b8501945060005b8281101561296e57848203601f19018452855180518d84526129518e850182612448565b918f0151938f0193909352958d0195938d0193915060010161292d565b50988b0198965050509288019250506001016128ae565b509098975050505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561298557888303603f19018552815180518785526129e088860182612448565b91890151858303868b01529190506129f88183612448565b9689019694505050908601906001016129bc565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561298557603f19898403018552815160608151818652612a5b82870182612448565b915050888201518582038a870152612a738282612448565b91505087820151915084810388860152612a8d8183612448565b968901969450505090860190600101612a35565b600080600080600060a08688031215612ab957600080fd5b612ac2866126fc565b9450612ad0602087016126fc565b9350612ade604087016126fc565b9250612aec606087016126fc565b9150612afa608087016126fc565b90509295509295909350565b600060208284031215612b1857600080fd5b813567ffffffffffffffff811115612b2f57600080fd5b820160a0818503121561235057600080fd5b600060208284031215612b5357600080fd5b813567ffffffffffffffff811115612b6a57600080fd5b8201610100818503121561235057600080fd5b60008282518085526020808601955060208260051b8401016020860160005b848110156124f357601f19868403018952612bb8838351612448565b98840198925090830190600101612b9c565b60208152815160208201526000602083015160806040840152612bf060a0840182612448565b90506040840151601f1980858403016060860152612c0e8383612b7d565b92506060860151915080858403016080860152506108e18282612b7d565b60008060008060808587031215612c4257600080fd5b843567ffffffffffffffff80821115612c5a57600080fd5b612c6688838901612575565b95506020870135915080821115612c7c57600080fd5b612c888883890161258d565b9450604087013593506060870135915080821115612ca557600080fd5b50612cb28782880161258d565b91505092959194509250565b600060208284031215612cd057600080fd5b610577826126fc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610749602083018486612cd9565b600067ffffffffffffffff821115612d3057612d30612718565b5060051b60200190565b67ffffffffffffffff811681146114e557600080fd5b600082601f830112612d6157600080fd5b8151612d6f61284d826127ce565b818152846020838601011115612d8457600080fd5b610749826020830160208701612424565b600082601f830112612da657600080fd5b81516020612db661284d83612d16565b82815260059290921b84018101918181019086841115612dd557600080fd5b8286015b84811015612e7657805167ffffffffffffffff80821115612dfa5760008081fd5b908801906080828b03601f1901811315612e145760008081fd5b612e1c61272e565b87840151612e2981612d3a565b815260408481015184811115612e3f5760008081fd5b612e4d8e8b83890101612d50565b838b01525060608581015191830191909152919093015190830152508352918301918301612dd9565b509695505050505050565b600060208284031215612e9357600080fd5b815167ffffffffffffffff80821115612eab57600080fd5b9083019060408286031215612ebf57600080fd5b612ec7612757565b825182811115612ed657600080fd5b612ee287828601612d95565b825250602083015182811115612ef757600080fd5b612f0387828601612d95565b60208301525095945050505050565b600060208284031215612f2457600080fd5b815167ffffffffffffffff80821115612f3c57600080fd5b9083019060408286031215612f5057600080fd5b612f58612757565b825182811115612f6757600080fd5b612f7387828601612d50565b82525060208301519250612f8683612d3a565b6020810192909252509392505050565b6000808335601e19843603018112612fad57600080fd5b83018035915067ffffffffffffffff821115612fc857600080fd5b6020019150368190038213156123db57600080fd5b60008235603e19833603018112612ff357600080fd5b90910192915050565b6000808335601e1984360301811261301357600080fd5b830160208101925035905067ffffffffffffffff81111561303357600080fd5b8036038213156123db57600080fd5b600061304e8283612ffc565b60408552613060604086018284612cd9565b9150506130706020840184612ffc565b8583036020870152613083838284612cd9565b9695505050505050565b600060408083526130a2604084018789612cd9565b602084820381860152818683528183019050818760051b8401018860005b8981101561312157858303601f190184526130db828c612fdd565b6001600160a01b036130ec826126fc565b1684526130fb86820182612fdd565b9050878685015261310e88850182613042565b94860194935050908401906001016130c0565b50909b9a5050505050505050505050565b6000806040838503121561314557600080fd5b82519150602083015167ffffffffffffffff81111561316357600080fd5b61316f85828601612d50565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561057a5761057a613179565b6000602082840312156131b457600080fd5b8151801515811461235057600080fd5b6060815260006131d8606083018789612cd9565b602083820381850152818683528183019050818760051b8401018860005b8981101561326457858303601f19018452613211828c612fdd565b604061321d8283612ffc565b82875261322d8388018284612cd9565b9250505086820135915061324082612d3a565b67ffffffffffffffff919091169386019390935292840192908401906001016131f6565b50506001600160a01b0387166040870152935061308392505050565b60006020828403121561329257600080fd5b5051919050565b6040815260006132ad604083018587612cd9565b9050826020830152949350505050565b600082601f8301126132ce57600080fd5b815160206132de61284d83612d16565b82815260059290921b840181019181810190868411156132fd57600080fd5b8286015b84811015612e7657805167ffffffffffffffff808211156133225760008081fd5b908801906040828b03601f190181131561333c5760008081fd5b613344612757565b87840151838111156133565760008081fd5b6133648d8a83880101612d50565b82525092015186830152508352918301918301613301565b60006020828403121561338e57600080fd5b815167ffffffffffffffff808211156133a657600080fd5b9083019060a082860312156133ba57600080fd5b6133c261277a565b8251828111156133d157600080fd5b6133dd87828601612d50565b825250602083015160208201526040830151604082015260608301518281111561340657600080fd5b61341287828601612d50565b60608301525060808301518281111561342a57600080fd5b613436878286016132bd565b60808301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561346e57600080fd5b825167ffffffffffffffff8082111561348657600080fd5b818501915085601f83011261349a57600080fd5b81516134a861284d82612d16565b81815260059190911b830184019084810190888311156134c757600080fd5b8585015b8381101561355a578051858111156134e35760008081fd5b86016040818c03601f19018113156134fb5760008081fd5b613503612757565b89830151888111156135155760008081fd5b6135238e8c83870101612d50565b8252509082015190878211156135395760008081fd5b6135478d8b84860101612d50565b818b0152855250509186019186016134cb565b5098975050505050505050565b600181811c9082168061357b57607f821691505b60208210810361258757634e487b7160e01b600052602260045260246000fd5b6040815260006135af604083018587612cd9565b90506001600160a01b0383166020830152949350505050565b6000808335601e198436030181126135df57600080fd5b830160208101925035905067ffffffffffffffff8111156135ff57600080fd5b8060051b36038213156123db57600080fd5b60008235607e19833603018112612ff357600080fd5b6000813561363481612d3a565b67ffffffffffffffff16835261364d6020830183612ffc565b60806020860152613662608086018284612cd9565b91505060408301356040850152606083013560608501528091505092915050565b6000838385526020808601955060208560051b8301018460005b878110156124f357848303601f190189526136c1836136bc848a613611565b613627565b9884019892509083019060010161369d565b60006136df82836135c8565b604085526136f1604086018284613683565b91505061370160208401846135c8565b8583036020870152613083838284613683565b60008383855260208086019550808560051b8301018460005b878110156124f357848303601f190189526137488288613611565b60806137548283612ffc565b8287526137648388018284612cd9565b9250505061377486830183612ffc565b86830388880152613786838284612cd9565b92505050604080830135818701525060606137a381840184612fdd565b925085820381870152506137b781836136d3565b9a86019a945050509083019060010161372d565b60008383855260208086019550808560051b830101846000805b8881101561386c57858403601f19018a52823536899003605e1901811261380a578283fd5b880160606138188280612ffc565b8288526138288389018284612cd9565b9250505061383887830183612ffc565b8783038989015261384a838284612cd9565b60409485013598909401979097525050998501999350918401916001016137e5565b509198975050505050505050565b60008383855260208086019550808560051b830101846000805b8881101561386c57858403601f19018a5282353689900360fe190181126138b9578283fd5b88016101006138c88280612ffc565b8288526138d88389018284612cd9565b925050506138e887830183612ffc565b878303898901526138fa838284612cd9565b92505050604061390c81840184612ffc565b888403838a015261391e848284612cd9565b9350505050606061393181840184612ffc565b888403838a0152613943848284612cd9565b9350505050608061395681840184613611565b878303828901526139678382613627565b9250505060a061397981840184612ffc565b888403838a015261398b848284612cd9565b935050505060c061399e81840184612ffc565b888403838a01526139b0848284612cd9565b60e095860135999095019890985250505099850199935091840191600101613894565b60008383855260208086019550808560051b8301018460005b878110156124f357848303601f19018952613a078288613611565b6080613a138283612ffc565b828752613a238388018284612cd9565b92505050613a3386830183612ffc565b86830388880152613a45838284612cd9565b925050506040613a5781840184612ffc565b87840383890152613a69848284612cd9565b93505050506060613a7c81840184613611565b92508582038187015250613a908183613627565b9a86019a94505050908301906001016139ec565b604081526000613ab484856135c8565b60a0604085015260e08401818152610100850190506101008260051b8601018360005b84811015613c3b5787830360ff1901845236869003609e1901823512613afc57600080fd5b613b098235870180612ffc565b60a08552613b1b60a086018284612cd9565b9150613b3090508335880160208101906135c8565b85830360208701528281845260208401905060208260051b8501018360005b84811015613ba657868303601f19018452613b6a8287612fdd565b613b748182612ffc565b60408652613b86604087018284612cd9565b602093840135968401969096525050938401939190910190600101613b4f565b50613bba905087358c016040810190613611565b94508781036040890152613bce8186613627565b9450613be69350505050833588016060810190612ffc565b8583036060870152613bf9838284612cd9565b9250613c0f915050833588016080810190612ffc565b8583036080870152613c22838284612cd9565b6020978801979096509490940193505050600101613ad7565b5050613c4a60208901896135c8565b94509250603f19915081868203016060870152613c68818585613714565b935050613c7860408801886135c8565b925081868503016080870152613c8f8484836137cb565b935050613c9f60608801886135c8565b9250818685030160a0870152613cb684848361387a565b935050613cc660808801886135c8565b9250818685030160c0870152613cdd8484836139d3565b94505050505061235060208301846001600160a01b03169052565b60a081526000613d0c60a083018b8d612cd9565b8281036020840152613d1f818a8c612cd9565b90508281036040840152613d3481888a612cd9565b90508281036060840152613d49818688612cd9565b9150506001600160a01b03831660808301529a9950505050505050505050565b60408152823560408201526000613d836020850185612ffc565b610100806060860152613d9b61014086018385612cd9565b9250613daa6040880188612ffc565b9250603f1980878603016080880152613dc4858584612cd9565b9450613dd360608a018a612ffc565b94509150808786030160a0880152613dec858584612cd9565b9450613dfb60808a018a612ffc565b94509150808786030160c0880152613e14858584612cd9565b945060a089013560e088015260c089013583880152613e3660e08a018a612fdd565b93508087860301610120880152505050613e5082826136d3565b9250505061235060208301846001600160a01b03169052565b600082601f830112613e7a57600080fd5b81516020613e8a61284d83612d16565b82815260059290921b84018101918181019086841115613ea957600080fd5b8286015b84811015612e7657805167ffffffffffffffff811115613ecd5760008081fd5b613edb8986838b0101612d50565b845250918301918301613ead565b600060208284031215613efb57600080fd5b815167ffffffffffffffff80821115613f1357600080fd5b9083019060808286031215613f2757600080fd5b613f2f61272e565b82518152602083015182811115613f4557600080fd5b613f5187828601612d50565b602083015250604083015182811115613f6957600080fd5b613f7587828601613e69565b604083015250606083015182811115613f8d57600080fd5b613f9987828601613e69565b60608301525095945050505050565b606081526000613fb88586612ffc565b606080850152613fcc60c085018284612cd9565b915050613fdc6020870187612ffc565b605f1980868503016080870152613ff4848385612cd9565b935061400360408a018a612ffc565b93509150808685030160a08701525061401d838383612cd9565b92505050828103602084015261403381866136d3565b915050826040830152949350505050565b606081526000614058606083018688612cd9565b6001600160a01b038516602084015282810360408401526140798185613042565b979650505050505050565b60006020828403121561409657600080fd5b815160ff8116811461235057600080fd5b6060815260006140bb606083018688612cd9565b6001600160a01b03949094166020830152506040015292915050565b8183823760009101908152919050565b8181038181111561057a5761057a613179565b601f82111561200c576000816000526020600020601f850160051c810160208610156141235750805b601f850160051c820191505b818110156141425782815560010161412f565b505050505050565b67ffffffffffffffff83111561416257614162612718565b614176836141708354613567565b836140fa565b6000601f8411600181146141aa57600085156141925750838201355b600019600387901b1c1916600186901b1783556106a4565b600083815260209020601f19861690835b828110156141db57868501358255602094850194600190920191016141bb565b50868210156141f85760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60408152600061421e604083018587612cd9565b828103602084015261308381856136d3565b60008251614242818460208701612424565b919091019291505056fea264697066735822122072acb3ace84d55ef79faf38a934c8b9b72eb5dbcc9b15a7c47b62e05e48feea364736f6c63430008180033","deployedBytecode":"0x6080604052600436106101755760003560e01c8063715018a6116100cb578063ad3cb1cc1161007f578063d52c54c411610059578063d52c54c414610468578063e3d5853914610495578063f2fde38b146104b557600080fd5b8063ad3cb1cc146103df578063b95a432c14610428578063cbb0ff791461044857600080fd5b80638129fc1c116100b05780638129fc1c146103635780638da5cb5b14610378578063997ef201146103bf57600080fd5b8063715018a61461031e57806377968b341461033357600080fd5b806349187cd91161012d578063595051f911610107578063595051f9146102a2578063636b8a0d146102cf57806367f0cc44146102fc57600080fd5b806349187cd91461024d5780634f1ef2861461027a57806352d1902d1461028d57600080fd5b806333552ec51161015e57806333552ec5146101dd5780633cd9ae3e146101ff578063406f8f041461022d57600080fd5b806303fe69ae1461017a5780632175c3f7146101b0575b600080fd5b34801561018657600080fd5b5061019a6101953660046123e2565b6104d5565b6040516101a79190612500565b60405180910390f35b3480156101bc57600080fd5b506101d06101cb3660046123e2565b610580565b6040516101a79190612539565b3480156101e957600080fd5b506101fd6101f83660046125e4565b610623565b005b34801561020b57600080fd5b5061021f61021a3660046123e2565b6106ab565b6040519081526020016101a7565b34801561023957600080fd5b506101fd61024836600461267d565b610751565b34801561025957600080fd5b5061026d6102683660046123e2565b610864565b6040516101a791906126e9565b6101fd6102883660046127f6565b6108ea565b34801561029957600080fd5b5061021f610909565b3480156102ae57600080fd5b506102c26102bd3660046123e2565b610938565b6040516101a79190612887565b3480156102db57600080fd5b506102ef6102ea3660046123e2565b610beb565b6040516101a79190612993565b34801561030857600080fd5b50610311610c7d565b6040516101a79190612a0c565b34801561032a57600080fd5b506101fd610e92565b34801561033f57600080fd5b5061035361034e3660046123e2565b610ea6565b60405190151581526020016101a7565b34801561036f57600080fd5b506101fd611060565b34801561038457600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101a7565b3480156103cb57600080fd5b506101fd6103da366004612aa1565b6111a3565b3480156103eb57600080fd5b5061026d6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561043457600080fd5b506101fd610443366004612b06565b611217565b34801561045457600080fd5b506101fd610463366004612b41565b61131a565b34801561047457600080fd5b506104886104833660046123e2565b6114e8565b6040516101a79190612bca565b3480156104a157600080fd5b506101fd6104b0366004612c2c565b6115a3565b3480156104c157600080fd5b506101fd6104d0366004612cbe565b6119fc565b6040805180820182526060808252602082015260035491517f34c3908400000000000000000000000000000000000000000000000000000000815290916001600160a01b0316906334c39084906105329086908690600401612d02565b600060405180830381865afa15801561054f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612e81565b90505b92915050565b604080518082018252606081526000602082015260025491517f2175c3f700000000000000000000000000000000000000000000000000000000815290916001600160a01b031690632175c3f7906105de9086908690600401612d02565b600060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612f12565b61062b611a50565b6004546001600160a01b03166332bae10d6106468780612f96565b85856040518563ffffffff1660e01b8152600401610667949392919061308d565b600060405180830381600087803b15801561068157600080fd5b505af1158015610695573d6000803e3d6000fd5b505050506106a4858585611ac4565b5050505050565b60006106b78383610ea6565b6106c35750600061057a565b600154604051631c8f277560e01b81526000916001600160a01b031690631c8f2775906106f69087908790600401612d02565b600060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073b9190810190613132565b50905061074981600161318f565b949350505050565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be91906131a2565b6107db57604051632ec5b44960e01b815260040160405180910390fd5b6002546040517fecc155dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ecc155dd9061082c90879087908790879033906004016131c4565b600060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b5050505050505050565b600154604051631c8f277560e01b81526060916000916001600160a01b0390911690631c8f27759061089c9087908790600401612d02565b600060405180830381865afa1580156108b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108e19190810190613132565b95945050505050565b6108f2611e65565b6108fb82611f1c565b6109058282611f24565b5050565b6000610913612011565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60606109448383610ea6565b6109875782826040517fa87b2dd800000000000000000000000000000000000000000000000000000000815260040161097e929190612d02565b60405180910390fd5b600080546040517f1d530f120000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631d530f12906109d39087908790600401612d02565b602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190613280565b610a1f90600161318f565b600080546040517f44e3bd2200000000000000000000000000000000000000000000000000000000815292935090916001600160a01b03909116906344e3bd2290610a709088908890600401612d02565b602060405180830381865afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab19190613280565b90508067ffffffffffffffff811115610acc57610acc612718565b604051908082528060200260200182016040528015610b2f57816020015b610b1c6040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b815260200190600190039081610aea5790505b50925060005b81811015610be2576000546001600160a01b0316636cabee018787610b5a858861318f565b6040518463ffffffff1660e01b8152600401610b7893929190613299565b600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd919081019061337c565b848281518110610bcf57610bcf613445565b6020908102919091010152600101610b35565b50505092915050565b600480546040517f636b8a0d0000000000000000000000000000000000000000000000000000000081526060926001600160a01b039092169163636b8a0d91610c38918791879101612d02565b600060405180830381865afa158015610c55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610577919081019061345b565b60606005805480602002602001604051908101604052809291908181526020016000905b82821015610e895783829060005260206000209060030201604051806060016040529081600082018054610cd490613567565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090613567565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b50505050508152602001600182018054610d6690613567565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9290613567565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b50505050508152602001600282018054610df890613567565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2490613567565b8015610e715780601f10610e4657610100808354040283529160200191610e71565b820191906000526020600020905b815481529060010190602001808311610e5457829003601f168201915b50505050508152505081526020019060010190610ca1565b50505050905090565b610e9a611a50565b610ea4600061205a565b565b600080546040517f74cff92e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906374cff92e90610ef29086908690600401612d02565b602060405180830381865afa158015610f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3391906131a2565b80610fc757506001546040517fdf04b2ae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063df04b2ae90610f869086908690339060040161359b565b602060405180830381865afa158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc791906131a2565b15610fd45750600061057a565b6000546040517f77968b340000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906377968b349061101f9086908690600401612d02565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057791906131a2565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156110ab5750825b905060008267ffffffffffffffff1660011480156110c85750303b155b9050811580156110d6575080155b1561110d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561114157845468ff00000000000000001916680100000000000000001785555b61114a336120d8565b6111526120e9565b83156106a457845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6111ab611a50565b6000805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03978816179091556001805482169587169590951790945560028054851693861693909317909255600380548416918516919091179055600480549092169216919091179055565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128491906131a2565b6112a157604051632ec5b44960e01b815260040160405180910390fd5b6000546040517f5673ee670000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635673ee67906112ec9084903390600401613aa4565b600060405180830381600087803b15801561130657600080fd5b505af11580156106a4573d6000803e3d6000fd5b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906131a2565b6113a457604051632ec5b44960e01b815260040160405180910390fd5b6113b461034e6020830183612f96565b156114e5576004546001600160a01b03166381b6ecf56113d76020840184612f96565b6113e46040860186612f96565b6113f16060880188612f96565b6113fe60808a018a612f96565b336040518a63ffffffff1660e01b815260040161142399989796959493929190613cf8565b602060405180830381865afa158015611440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146491906131a2565b61149a576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517fd254f6f20000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d254f6f2906112ec9084903390600401613d69565b50565b6115136040518060800160405280600081526020016060815260200160608152602001606081525090565b6001546040517fd52c54c40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d52c54c49061155e9086908690600401612d02565b600060405180830381865afa15801561157b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190613ee9565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161091906131a2565b61162d57604051632ec5b44960e01b815260040160405180910390fd5b36600061163a8680612f96565b6000546040517f18c586cd0000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b0316906318c586cd906116899085908590600401612d02565b602060405180830381865afa1580156116a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ca91906131a2565b156117055781816040517fc4a32e4900000000000000000000000000000000000000000000000000000000815260040161097e929190612d02565b6000546040517f9af06cd90000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690639af06cd9906117529085908590339060040161359b565b602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179391906131a2565b156117ce5781816040517fc113c1e300000000000000000000000000000000000000000000000000000000815260040161097e929190612d02565b60008686866040516020016117e593929190613fa8565b60408051601f19818403018152908290528051602090910120600480547f34a1a0950000000000000000000000000000000000000000000000000000000084529193506001600160a01b03909116916334a1a0959161184c918791879133918b9101614044565b600060405180830381600087803b15801561186657600080fd5b505af115801561187a573d6000803e3d6000fd5b505060048054604080517f2749824000000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921694506327498240935080830192602092918290030181865afa1580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190614084565b6000546040517fb9d808ff00000000000000000000000000000000000000000000000000000000815260ff92909216916001600160a01b039091169063b9d808ff906119589087908790339088906004016140a7565b6020604051808303816000875af1158015611977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199b9190613280565b036119b0576119ab878787611ac4565b6119f3565b60405133906119c290859085906140d7565b604051908190038120907f99960385426dfd945f1af41c805b3ce369f9f0585b1a7f48ed778e026d2caaae90600090a35b50505050505050565b611a04611a50565b6001600160a01b038116611a47576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161097e565b6114e58161205a565b33611a827f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610ea4576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161097e565b366000611ad18580612f96565b6000546040517feab481c30000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03169063eab481c390611b209085908590600401612d02565b600060405180830381600087803b158015611b3a57600080fd5b505af1158015611b4e573d6000803e3d6000fd5b50506005805460019081018083556000928352919350611b6f9250906140e7565b9050828260058381548110611b8657611b86613445565b90600052602060002090600302016000019182611ba492919061414a565b50611bb26020870187612f96565b60058381548110611bc557611bc5613445565b90600052602060002090600302016001019182611be392919061414a565b50611bf16040870187612f96565b60058381548110611c0457611c04613445565b90600052602060002090600302016002019182611c2292919061414a565b506003546040517f7e31e3fd0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690637e31e3fd90611c7090869086908a9060040161420a565b600060405180830381600087803b158015611c8a57600080fd5b505af1158015611c9e573d6000803e3d6000fd5b50506000546040517fe3aa21f40000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063e3aa21f49150611cef90869086908990600401613299565b600060405180830381600087803b158015611d0957600080fd5b505af1158015611d1d573d6000803e3d6000fd5b50506000546040517fca6869820000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063ca6869829150611d6c9086908690600401612d02565b600060405180830381600087803b158015611d8657600080fd5b505af1158015611d9a573d6000803e3d6000fd5b50506000546040517f0d32b63e0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250630d32b63e9150611deb90869086904390600401613299565b600060405180830381600087803b158015611e0557600080fd5b505af1158015611e19573d6000803e3d6000fd5b505050508282604051611e2d9291906140d7565b604051908190038120907f3cbe969d5c5f2c70c7cfb293cd355d3fcc80a852eac9bee1c1c317dc302f199d90600090a2505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611efe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610ea45760405163703e46dd60e11b815260040160405180910390fd5b6114e5611a50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f7e575060408051601f3d908101601f19168201909252611f7b91810190613280565b60015b611fa657604051634c9c8ce360e01b81526001600160a01b038316600482015260240161097e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612002576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161097e565b61200c83836120f1565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ea45760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6120e0612147565b6114e5816121ae565b610ea4612147565b6120fa826121b6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561213f5761200c828261223a565b6109056122a7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610ea4576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a04612147565b806001600160a01b03163b6000036121ec57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161097e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516122579190614230565b600060405180830381855af49150503d8060008114612292576040519150601f19603f3d011682016040523d82523d6000602084013e612297565b606091505b50915091506108e18583836122df565b3415610ea4576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826122f4576122ef82612357565b612350565b815115801561230b57506001600160a01b0384163b155b1561234d576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161097e565b50805b9392505050565b8051156123675780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f8401126123ab57600080fd5b50813567ffffffffffffffff8111156123c357600080fd5b6020830191508360208285010111156123db57600080fd5b9250929050565b600080602083850312156123f557600080fd5b823567ffffffffffffffff81111561240c57600080fd5b61241885828601612399565b90969095509350505050565b60005b8381101561243f578181015183820152602001612427565b50506000910152565b60008151808452612460816020860160208601612424565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156124f357601f198684030189528151608067ffffffffffffffff82511685528582015181878701526124c982870182612448565b60408481015190880152606093840151939096019290925250509783019790830190600101612491565b5090979650505050505050565b60208152600082516040602084015261251c6060840182612474565b90506020840151601f198483030160408501526108e18282612474565b6020815260008251604060208401526125556060840182612448565b905067ffffffffffffffff60208501511660408401528091505092915050565b60006060828403121561258757600080fd5b50919050565b60006040828403121561258757600080fd5b60008083601f8401126125b157600080fd5b50813567ffffffffffffffff8111156125c957600080fd5b6020830191508360208260051b85010111156123db57600080fd5b6000806000806000608086880312156125fc57600080fd5b853567ffffffffffffffff8082111561261457600080fd5b61262089838a01612575565b9650602088013591508082111561263657600080fd5b61264289838a0161258d565b955060408801359450606088013591508082111561265f57600080fd5b5061266c8882890161259f565b969995985093965092949392505050565b6000806000806040858703121561269357600080fd5b843567ffffffffffffffff808211156126ab57600080fd5b6126b788838901612399565b909650945060208701359150808211156126d057600080fd5b506126dd8782880161259f565b95989497509550505050565b6020815260006105776020830184612448565b80356001600160a01b038116811461271357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561275157612751612718565b60405290565b6040805190810167ffffffffffffffff8111828210171561275157612751612718565b60405160a0810167ffffffffffffffff8111828210171561275157612751612718565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c6576127c6612718565b604052919050565b600067ffffffffffffffff8211156127e8576127e8612718565b50601f01601f191660200190565b6000806040838503121561280957600080fd5b612812836126fc565b9150602083013567ffffffffffffffff81111561282e57600080fd5b8301601f8101851361283f57600080fd5b803561285261284d826127ce565b61279d565b81815286602083850101111561286757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561298557603f19898403018552815160a081518186526128d482870182612448565b91505088820151898601528782015188860152606080830151868303828801526128fe8382612448565b92505050608080830151925085820381870152508082518083528a830191508a8160051b8401018b8501945060005b8281101561296e57848203601f19018452855180518d84526129518e850182612448565b918f0151938f0193909352958d0195938d0193915060010161292d565b50988b0198965050509288019250506001016128ae565b509098975050505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561298557888303603f19018552815180518785526129e088860182612448565b91890151858303868b01529190506129f88183612448565b9689019694505050908601906001016129bc565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561298557603f19898403018552815160608151818652612a5b82870182612448565b915050888201518582038a870152612a738282612448565b91505087820151915084810388860152612a8d8183612448565b968901969450505090860190600101612a35565b600080600080600060a08688031215612ab957600080fd5b612ac2866126fc565b9450612ad0602087016126fc565b9350612ade604087016126fc565b9250612aec606087016126fc565b9150612afa608087016126fc565b90509295509295909350565b600060208284031215612b1857600080fd5b813567ffffffffffffffff811115612b2f57600080fd5b820160a0818503121561235057600080fd5b600060208284031215612b5357600080fd5b813567ffffffffffffffff811115612b6a57600080fd5b8201610100818503121561235057600080fd5b60008282518085526020808601955060208260051b8401016020860160005b848110156124f357601f19868403018952612bb8838351612448565b98840198925090830190600101612b9c565b60208152815160208201526000602083015160806040840152612bf060a0840182612448565b90506040840151601f1980858403016060860152612c0e8383612b7d565b92506060860151915080858403016080860152506108e18282612b7d565b60008060008060808587031215612c4257600080fd5b843567ffffffffffffffff80821115612c5a57600080fd5b612c6688838901612575565b95506020870135915080821115612c7c57600080fd5b612c888883890161258d565b9450604087013593506060870135915080821115612ca557600080fd5b50612cb28782880161258d565b91505092959194509250565b600060208284031215612cd057600080fd5b610577826126fc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610749602083018486612cd9565b600067ffffffffffffffff821115612d3057612d30612718565b5060051b60200190565b67ffffffffffffffff811681146114e557600080fd5b600082601f830112612d6157600080fd5b8151612d6f61284d826127ce565b818152846020838601011115612d8457600080fd5b610749826020830160208701612424565b600082601f830112612da657600080fd5b81516020612db661284d83612d16565b82815260059290921b84018101918181019086841115612dd557600080fd5b8286015b84811015612e7657805167ffffffffffffffff80821115612dfa5760008081fd5b908801906080828b03601f1901811315612e145760008081fd5b612e1c61272e565b87840151612e2981612d3a565b815260408481015184811115612e3f5760008081fd5b612e4d8e8b83890101612d50565b838b01525060608581015191830191909152919093015190830152508352918301918301612dd9565b509695505050505050565b600060208284031215612e9357600080fd5b815167ffffffffffffffff80821115612eab57600080fd5b9083019060408286031215612ebf57600080fd5b612ec7612757565b825182811115612ed657600080fd5b612ee287828601612d95565b825250602083015182811115612ef757600080fd5b612f0387828601612d95565b60208301525095945050505050565b600060208284031215612f2457600080fd5b815167ffffffffffffffff80821115612f3c57600080fd5b9083019060408286031215612f5057600080fd5b612f58612757565b825182811115612f6757600080fd5b612f7387828601612d50565b82525060208301519250612f8683612d3a565b6020810192909252509392505050565b6000808335601e19843603018112612fad57600080fd5b83018035915067ffffffffffffffff821115612fc857600080fd5b6020019150368190038213156123db57600080fd5b60008235603e19833603018112612ff357600080fd5b90910192915050565b6000808335601e1984360301811261301357600080fd5b830160208101925035905067ffffffffffffffff81111561303357600080fd5b8036038213156123db57600080fd5b600061304e8283612ffc565b60408552613060604086018284612cd9565b9150506130706020840184612ffc565b8583036020870152613083838284612cd9565b9695505050505050565b600060408083526130a2604084018789612cd9565b602084820381860152818683528183019050818760051b8401018860005b8981101561312157858303601f190184526130db828c612fdd565b6001600160a01b036130ec826126fc565b1684526130fb86820182612fdd565b9050878685015261310e88850182613042565b94860194935050908401906001016130c0565b50909b9a5050505050505050505050565b6000806040838503121561314557600080fd5b82519150602083015167ffffffffffffffff81111561316357600080fd5b61316f85828601612d50565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561057a5761057a613179565b6000602082840312156131b457600080fd5b8151801515811461235057600080fd5b6060815260006131d8606083018789612cd9565b602083820381850152818683528183019050818760051b8401018860005b8981101561326457858303601f19018452613211828c612fdd565b604061321d8283612ffc565b82875261322d8388018284612cd9565b9250505086820135915061324082612d3a565b67ffffffffffffffff919091169386019390935292840192908401906001016131f6565b50506001600160a01b0387166040870152935061308392505050565b60006020828403121561329257600080fd5b5051919050565b6040815260006132ad604083018587612cd9565b9050826020830152949350505050565b600082601f8301126132ce57600080fd5b815160206132de61284d83612d16565b82815260059290921b840181019181810190868411156132fd57600080fd5b8286015b84811015612e7657805167ffffffffffffffff808211156133225760008081fd5b908801906040828b03601f190181131561333c5760008081fd5b613344612757565b87840151838111156133565760008081fd5b6133648d8a83880101612d50565b82525092015186830152508352918301918301613301565b60006020828403121561338e57600080fd5b815167ffffffffffffffff808211156133a657600080fd5b9083019060a082860312156133ba57600080fd5b6133c261277a565b8251828111156133d157600080fd5b6133dd87828601612d50565b825250602083015160208201526040830151604082015260608301518281111561340657600080fd5b61341287828601612d50565b60608301525060808301518281111561342a57600080fd5b613436878286016132bd565b60808301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561346e57600080fd5b825167ffffffffffffffff8082111561348657600080fd5b818501915085601f83011261349a57600080fd5b81516134a861284d82612d16565b81815260059190911b830184019084810190888311156134c757600080fd5b8585015b8381101561355a578051858111156134e35760008081fd5b86016040818c03601f19018113156134fb5760008081fd5b613503612757565b89830151888111156135155760008081fd5b6135238e8c83870101612d50565b8252509082015190878211156135395760008081fd5b6135478d8b84860101612d50565b818b0152855250509186019186016134cb565b5098975050505050505050565b600181811c9082168061357b57607f821691505b60208210810361258757634e487b7160e01b600052602260045260246000fd5b6040815260006135af604083018587612cd9565b90506001600160a01b0383166020830152949350505050565b6000808335601e198436030181126135df57600080fd5b830160208101925035905067ffffffffffffffff8111156135ff57600080fd5b8060051b36038213156123db57600080fd5b60008235607e19833603018112612ff357600080fd5b6000813561363481612d3a565b67ffffffffffffffff16835261364d6020830183612ffc565b60806020860152613662608086018284612cd9565b91505060408301356040850152606083013560608501528091505092915050565b6000838385526020808601955060208560051b8301018460005b878110156124f357848303601f190189526136c1836136bc848a613611565b613627565b9884019892509083019060010161369d565b60006136df82836135c8565b604085526136f1604086018284613683565b91505061370160208401846135c8565b8583036020870152613083838284613683565b60008383855260208086019550808560051b8301018460005b878110156124f357848303601f190189526137488288613611565b60806137548283612ffc565b8287526137648388018284612cd9565b9250505061377486830183612ffc565b86830388880152613786838284612cd9565b92505050604080830135818701525060606137a381840184612fdd565b925085820381870152506137b781836136d3565b9a86019a945050509083019060010161372d565b60008383855260208086019550808560051b830101846000805b8881101561386c57858403601f19018a52823536899003605e1901811261380a578283fd5b880160606138188280612ffc565b8288526138288389018284612cd9565b9250505061383887830183612ffc565b8783038989015261384a838284612cd9565b60409485013598909401979097525050998501999350918401916001016137e5565b509198975050505050505050565b60008383855260208086019550808560051b830101846000805b8881101561386c57858403601f19018a5282353689900360fe190181126138b9578283fd5b88016101006138c88280612ffc565b8288526138d88389018284612cd9565b925050506138e887830183612ffc565b878303898901526138fa838284612cd9565b92505050604061390c81840184612ffc565b888403838a015261391e848284612cd9565b9350505050606061393181840184612ffc565b888403838a0152613943848284612cd9565b9350505050608061395681840184613611565b878303828901526139678382613627565b9250505060a061397981840184612ffc565b888403838a015261398b848284612cd9565b935050505060c061399e81840184612ffc565b888403838a01526139b0848284612cd9565b60e095860135999095019890985250505099850199935091840191600101613894565b60008383855260208086019550808560051b8301018460005b878110156124f357848303601f19018952613a078288613611565b6080613a138283612ffc565b828752613a238388018284612cd9565b92505050613a3386830183612ffc565b86830388880152613a45838284612cd9565b925050506040613a5781840184612ffc565b87840383890152613a69848284612cd9565b93505050506060613a7c81840184613611565b92508582038187015250613a908183613627565b9a86019a94505050908301906001016139ec565b604081526000613ab484856135c8565b60a0604085015260e08401818152610100850190506101008260051b8601018360005b84811015613c3b5787830360ff1901845236869003609e1901823512613afc57600080fd5b613b098235870180612ffc565b60a08552613b1b60a086018284612cd9565b9150613b3090508335880160208101906135c8565b85830360208701528281845260208401905060208260051b8501018360005b84811015613ba657868303601f19018452613b6a8287612fdd565b613b748182612ffc565b60408652613b86604087018284612cd9565b602093840135968401969096525050938401939190910190600101613b4f565b50613bba905087358c016040810190613611565b94508781036040890152613bce8186613627565b9450613be69350505050833588016060810190612ffc565b8583036060870152613bf9838284612cd9565b9250613c0f915050833588016080810190612ffc565b8583036080870152613c22838284612cd9565b6020978801979096509490940193505050600101613ad7565b5050613c4a60208901896135c8565b94509250603f19915081868203016060870152613c68818585613714565b935050613c7860408801886135c8565b925081868503016080870152613c8f8484836137cb565b935050613c9f60608801886135c8565b9250818685030160a0870152613cb684848361387a565b935050613cc660808801886135c8565b9250818685030160c0870152613cdd8484836139d3565b94505050505061235060208301846001600160a01b03169052565b60a081526000613d0c60a083018b8d612cd9565b8281036020840152613d1f818a8c612cd9565b90508281036040840152613d3481888a612cd9565b90508281036060840152613d49818688612cd9565b9150506001600160a01b03831660808301529a9950505050505050505050565b60408152823560408201526000613d836020850185612ffc565b610100806060860152613d9b61014086018385612cd9565b9250613daa6040880188612ffc565b9250603f1980878603016080880152613dc4858584612cd9565b9450613dd360608a018a612ffc565b94509150808786030160a0880152613dec858584612cd9565b9450613dfb60808a018a612ffc565b94509150808786030160c0880152613e14858584612cd9565b945060a089013560e088015260c089013583880152613e3660e08a018a612fdd565b93508087860301610120880152505050613e5082826136d3565b9250505061235060208301846001600160a01b03169052565b600082601f830112613e7a57600080fd5b81516020613e8a61284d83612d16565b82815260059290921b84018101918181019086841115613ea957600080fd5b8286015b84811015612e7657805167ffffffffffffffff811115613ecd5760008081fd5b613edb8986838b0101612d50565b845250918301918301613ead565b600060208284031215613efb57600080fd5b815167ffffffffffffffff80821115613f1357600080fd5b9083019060808286031215613f2757600080fd5b613f2f61272e565b82518152602083015182811115613f4557600080fd5b613f5187828601612d50565b602083015250604083015182811115613f6957600080fd5b613f7587828601613e69565b604083015250606083015182811115613f8d57600080fd5b613f9987828601613e69565b60608301525095945050505050565b606081526000613fb88586612ffc565b606080850152613fcc60c085018284612cd9565b915050613fdc6020870187612ffc565b605f1980868503016080870152613ff4848385612cd9565b935061400360408a018a612ffc565b93509150808685030160a08701525061401d838383612cd9565b92505050828103602084015261403381866136d3565b915050826040830152949350505050565b606081526000614058606083018688612cd9565b6001600160a01b038516602084015282810360408401526140798185613042565b979650505050505050565b60006020828403121561409657600080fd5b815160ff8116811461235057600080fd5b6060815260006140bb606083018688612cd9565b6001600160a01b03949094166020830152506040015292915050565b8183823760009101908152919050565b8181038181111561057a5761057a613179565b601f82111561200c576000816000526020600020601f850160051c810160208610156141235750805b601f850160051c820191505b818110156141425782815560010161412f565b505050505050565b67ffffffffffffffff83111561416257614162612718565b614176836141708354613567565b836140fa565b6000601f8411600181146141aa57600085156141925750838201355b600019600387901b1c1916600186901b1783556106a4565b600083815260209020601f19861690835b828110156141db57868501358255602094850194600190920191016141bb565b50868210156141f85760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60408152600061421e604083018587612cd9565b828103602084015261308381856136d3565b60008251614242818460208701612424565b919091019291505056fea264697066735822122072acb3ace84d55ef79faf38a934c8b9b72eb5dbcc9b15a7c47b62e05e48feea364736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` -var ClaimsHelperArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"ClaimsHelper","sourceName":"contracts/ClaimsHelper.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"confirmedSignedBatches","outputs":[{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"currentBatchBlock","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_batchId","type":"uint256"}],"name":"getConfirmedSignedBatchData","outputs":[{"components":[{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.ConfirmedSignedBatchData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"isClaimConfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"numberOfVotes","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"resetCurrentBatchBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chain","type":"string"},{"internalType":"string","name":"_observerHash","type":"string"}],"name":"setClaimConfirmed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"destinationChainId","type":"string"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"string","name":"feePayerMultisigSignature","type":"string"},{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.SignedBatch","name":"_signedBatch","type":"tuple"}],"name":"setConfirmedSignedBatchData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_claimsAddress","type":"address"},{"internalType":"address","name":"_signedBatchesAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"},{"internalType":"address","name":"_voter","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"setVoted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"updateCurrentBatchBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612123620000fe60003960008181610f5301528181610f7c01526110ff01526121236000f3fe6080604052600436106101445760003560e01c806386e71477116100c0578063ca68698211610074578063e2100f4d11610059578063e2100f4d14610449578063e87c28a714610476578063f2fde38b1461049657600080fd5b8063ca686982146103f1578063e038ab551461041157600080fd5b80639af06cd9116100a55780639af06cd914610330578063ad3cb1cc1461037b578063b9d808ff146103d157600080fd5b806386e71477146102a75780638da5cb5b146102e957600080fd5b806352d1902d11610117578063715018a6116100fc578063715018a61461024e5780637f9b665c146102635780638129fc1c1461029257600080fd5b806352d1902d1461020b57806364d06b051461022e57600080fd5b80630b502332146101495780634a5d2b191461016b5780634f1ef286146101d857806351a6e113146101eb575b600080fd5b34801561015557600080fd5b5061016961016436600461157a565b6104b6565b005b34801561017757600080fd5b506101c3610186366004611668565b8151602081840181018051600282529282019482019490942091909352815180830184018051928152908401929093019190912091525460ff1681565b60405190151581526020015b60405180910390f35b6101696101e63660046116e8565b610521565b3480156101f757600080fd5b50610169610206366004611740565b610540565b34801561021757600080fd5b506102206105dc565b6040519081526020016101cf565b34801561023a57600080fd5b506101696102493660046117ac565b61060b565b34801561025a57600080fd5b50610169610720565b34801561026f57600080fd5b5061028361027e3660046117e8565b610734565b6040516101cf93929190611937565b34801561029e57600080fd5b506101696109aa565b3480156102b357600080fd5b506102d76102c2366004611956565b60066020526000908152604090205460ff1681565b60405160ff90911681526020016101cf565b3480156102f557600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cf565b34801561033c57600080fd5b506101c361034b36600461196f565b81516020818401810180516005825292820194820194909420919093529091526000908152604090205460ff1681565b34801561038757600080fd5b506103c46040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101cf91906119bd565b3480156103dd57600080fd5b506102206103ec3660046119d0565b610aee565b3480156103fd57600080fd5b5061016961040c36600461157a565b610bbd565b34801561041d57600080fd5b5061022061042c366004611a2c565b805160208183018101805160048252928201919093012091525481565b34801561045557600080fd5b50610469610464366004611a69565b610c16565b6040516101cf9190611ab5565b34801561048257600080fd5b50610169610491366004611ae4565b610ea9565b3480156104a257600080fd5b506101696104b1366004611b0e565b610eec565b6001546001600160a01b031633146104fa576040517fa2f679e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b436004838360405161050d929190611b29565b908152604051908190036020019020555050565b610529610f48565b61053282610fff565b61053c8282611007565b5050565b6001546001600160a01b0316331480159061056657506000546001600160a01b03163314155b1561058457604051639a4b386f60e01b815260040160405180910390fd5b600160028585604051610598929190611b29565b908152602001604051809103902083836040516105b6929190611b29565b908152604051908190036020019020805491151560ff1990921691909117905550505050565b60006105e66110f4565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6001546001600160a01b0316331480159061063157506000546001600160a01b03163314155b1561064f57604051639a4b386f60e01b815260040160405180910390fd5b36600061065f6020840184611b39565b604051919350915083359060a0850135906003906106809086908690611b29565b90815260408051918290036020908101832060008681529152209190915560c0850135906003906106b49086908690611b29565b9081526040805160209281900383019020600085815292529020600101556106df60e0850185611b80565b600384846040516106f1929190611b29565b90815260408051602092819003830190206000858152925290206002016107188282611f36565b505050505050565b61072861113d565b61073260006111b1565b565b8151602081840181018051600382529282019482019490942091909352825260009081526040808220805460018201548351600284018054978802820160609081018752958201888152939792969495919490938593909285929085015b82821015610881576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff16825260018101805492939192918401916107dc90611c16565b80601f016020809104026020016040519081016040528092919081815260200182805461080890611c16565b80156108555780601f1061082a57610100808354040283529160200191610855565b820191906000526020600020905b81548152906001019060200180831161083857829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610792565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561099d576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff16825260018101805492939192918401916108f890611c16565b80601f016020809104026020016040519081016040528092919081815260200182805461092490611c16565b80156109715780601f1061094657610100808354040283529160200191610971565b820191906000526020600020905b81548152906001019060200180831161095457829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906108ae565b5050505081525050905083565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109f55750825b905060008267ffffffffffffffff166001148015610a125750303b155b905081158015610a20575080155b15610a57576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a8b57845468ff00000000000000001916680100000000000000001785555b610a943361122f565b610a9c611240565b8315610ae757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001546000906001600160a01b03163314801590610b1757506000546001600160a01b03163314155b15610b3557604051639a4b386f60e01b815260040160405180910390fd5b600160058686604051610b49929190611b29565b90815260408051602092819003830190206001600160a01b0387166000908152908352818120805460ff1916941515949094179093558483526006909152812080548290610b999060ff166120a3565b825460ff9182166101009390930a8381029202191617909155915050949350505050565b6000546001600160a01b03163314610c01576040517fd695af0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000196004838360405161050d929190611b29565b610c1e6114f6565b60038484604051610c30929190611b29565b90815260408051602092819003830181206000868152908452828120606080840185528154845260018201548685015284516002830180549788028201830187528187018881529597939688019591949093859385929085015b82821015610d79576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610cd490611c16565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090611c16565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610c8a565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610e95576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610df090611c16565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1c90611c16565b8015610e695780601f10610e3e57610100808354040283529160200191610e69565b820191906000526020600020905b815481529060010190602001808311610e4c57829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610da6565b5050509152505090525090505b9392505050565b610eb161113d565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b610ef461113d565b6001600160a01b038116610f3c576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610f45816111b1565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610fe157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fd57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156107325760405163703e46dd60e11b815260040160405180910390fd5b610f4561113d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611061575060408051601f3d908101601f1916820190925261105e918101906120c2565b60015b61108957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610f33565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146110e5576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610f33565b6110ef8383611248565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107325760405163703e46dd60e11b815260040160405180910390fd5b3361116f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610732576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610f33565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61123761129e565b610f4581611305565b61073261129e565b6112518261130d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611296576110ef8282611391565b61053c611407565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610732576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef461129e565b806001600160a01b03163b60000361134357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f33565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516113ae91906120db565b600060405180830381855af49150503d80600081146113e9576040519150601f19603f3d011682016040523d82523d6000602084013e6113ee565b606091505b50915091506113fe85838361143f565b95945050505050565b3415610732576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826114545761144f826114b4565b610ea2565b815115801561146b57506001600160a01b0384163b155b156114ad576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610f33565b5080610ea2565b8051156114c45780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060600160405280600081526020016000815260200161152c604051806040016040528060608152602001606081525090565b905290565b60008083601f84011261154357600080fd5b50813567ffffffffffffffff81111561155b57600080fd5b60208301915083602082850101111561157357600080fd5b9250929050565b6000806020838503121561158d57600080fd5b823567ffffffffffffffff8111156115a457600080fd5b6115b085828601611531565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156115ed576115ed6115bc565b604051601f8501601f19908116603f01168101908282118183101715611615576116156115bc565b8160405280935085815286868601111561162e57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261165957600080fd5b610ea2838335602085016115d2565b6000806040838503121561167b57600080fd5b823567ffffffffffffffff8082111561169357600080fd5b61169f86838701611648565b935060208501359150808211156116b557600080fd5b506116c285828601611648565b9150509250929050565b80356001600160a01b03811681146116e357600080fd5b919050565b600080604083850312156116fb57600080fd5b611704836116cc565b9150602083013567ffffffffffffffff81111561172057600080fd5b8301601f8101851361173157600080fd5b6116c2858235602084016115d2565b6000806000806040858703121561175657600080fd5b843567ffffffffffffffff8082111561176e57600080fd5b61177a88838901611531565b9096509450602087013591508082111561179357600080fd5b506117a087828801611531565b95989497509550505050565b6000602082840312156117be57600080fd5b813567ffffffffffffffff8111156117d557600080fd5b82016101008185031215610ea257600080fd5b600080604083850312156117fb57600080fd5b823567ffffffffffffffff81111561181257600080fd5b61181e85828601611648565b95602094909401359450505050565b60005b83811015611848578181015183820152602001611830565b50506000910152565b6000815180845261186981602086016020860161182d565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156118fc57601f198684030189528151608067ffffffffffffffff82511685528582015181878701526118d282870182611851565b6040848101519088015260609384015193909601929092525050978301979083019060010161189a565b5090979650505050505050565b600081516040845261191e604085018261187d565b9050602083015184820360208601526113fe828261187d565b8381528260208201526060604082015260006113fe6060830184611909565b60006020828403121561196857600080fd5b5035919050565b6000806040838503121561198257600080fd5b823567ffffffffffffffff81111561199957600080fd5b6119a585828601611648565b9250506119b4602084016116cc565b90509250929050565b602081526000610ea26020830184611851565b600080600080606085870312156119e657600080fd5b843567ffffffffffffffff8111156119fd57600080fd5b611a0987828801611531565b9095509350611a1c9050602086016116cc565b9396929550929360400135925050565b600060208284031215611a3e57600080fd5b813567ffffffffffffffff811115611a5557600080fd5b611a6184828501611648565b949350505050565b600080600060408486031215611a7e57600080fd5b833567ffffffffffffffff811115611a9557600080fd5b611aa186828701611531565b909790965060209590950135949350505050565b60208152815160208201526020820151604082015260006040830151606080840152611a616080840182611909565b60008060408385031215611af757600080fd5b611b00836116cc565b91506119b4602084016116cc565b600060208284031215611b2057600080fd5b610ea2826116cc565b8183823760009101908152919050565b6000808335601e19843603018112611b5057600080fd5b83018035915067ffffffffffffffff821115611b6b57600080fd5b60200191503681900382131561157357600080fd5b60008235603e19833603018112611b9657600080fd5b9190910192915050565b6000808335601e19843603018112611bb757600080fd5b83018035915067ffffffffffffffff821115611bd257600080fd5b6020019150600581901b360382131561157357600080fd5b60008235607e19833603018112611b9657600080fd5b634e487b7160e01b600052601160045260246000fd5b600181811c90821680611c2a57607f821691505b602082108103611c4a57634e487b7160e01b600052602260045260246000fd5b50919050565b5b8181101561053c5760008155600101611c51565b601f8211156110ef57806000526020600020601f840160051c81016020851015611c8c5750805b610ae7601f850160051c830182611c50565b67ffffffffffffffff831115611cb657611cb66115bc565b611cca83611cc48354611c16565b83611c65565b6000601f841160018114611cfe5760008515611ce65750838201355b600019600387901b1c1916600186901b178355610ae7565b600083815260209020601f19861690835b82811015611d2f5786850135825560209485019460019092019101611d0f565b5086821015611d4c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813567ffffffffffffffff808216808314611d7857600080fd5b835467ffffffffffffffff19161783556020840135915036849003601e19018212611da257600080fd5b90830190813581811115611db557600080fd5b602083019250803603831315611dca57600080fd5b611dd8818460018701611c9e565b50505060408201356002820155606082013560038201555050565b68010000000000000000831115611e0c57611e0c6115bc565b805483825580841015611ef85760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611e4d57611e4d611c00565b8086168614611e5e57611e5e611c00565b506000838152602081208360021b81018760021b820191505b80821015611ef3578282556001808301611e918154611c16565b8015611eda57601f80821160018114611eac57878455611ed7565b600084815260209020611ec883850160051c8201878301611c50565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611e77565b505050505b5060008181526020812083915b8581101561071857611f20611f1a8487611bea565b83611d5e565b6020929092019160049190910190600101611f05565b611f408283611ba0565b68010000000000000000811115611f5957611f596115bc565b8254818455808210156120455760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611f9a57611f9a611c00565b8084168414611fab57611fab611c00565b506000858152602081208360021b81018560021b820191505b80821015612040578282556001808301611fde8154611c16565b801561202757601f80821160018114611ff957878455612024565b60008481526020902061201583850160051c8201878301611c50565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611fc4565b505050505b5060008381526020812083915b8381101561207d57612067611f1a8487611bea565b6020929092019160049190910190600101612052565b505050505061208f6020830183611ba0565b61209d818360018601611df3565b50505050565b600060ff821660ff81036120b9576120b9611c00565b60010192915050565b6000602082840312156120d457600080fd5b5051919050565b60008251611b9681846020870161182d56fea2646970667358221220aafeaaa1ffe34af1b5dfe42722359db10c5a9c1d172ccfa56d6ba185ed9ff21864736f6c63430008180033","deployedBytecode":"0x6080604052600436106101445760003560e01c806386e71477116100c0578063ca68698211610074578063e2100f4d11610059578063e2100f4d14610449578063e87c28a714610476578063f2fde38b1461049657600080fd5b8063ca686982146103f1578063e038ab551461041157600080fd5b80639af06cd9116100a55780639af06cd914610330578063ad3cb1cc1461037b578063b9d808ff146103d157600080fd5b806386e71477146102a75780638da5cb5b146102e957600080fd5b806352d1902d11610117578063715018a6116100fc578063715018a61461024e5780637f9b665c146102635780638129fc1c1461029257600080fd5b806352d1902d1461020b57806364d06b051461022e57600080fd5b80630b502332146101495780634a5d2b191461016b5780634f1ef286146101d857806351a6e113146101eb575b600080fd5b34801561015557600080fd5b5061016961016436600461157a565b6104b6565b005b34801561017757600080fd5b506101c3610186366004611668565b8151602081840181018051600282529282019482019490942091909352815180830184018051928152908401929093019190912091525460ff1681565b60405190151581526020015b60405180910390f35b6101696101e63660046116e8565b610521565b3480156101f757600080fd5b50610169610206366004611740565b610540565b34801561021757600080fd5b506102206105dc565b6040519081526020016101cf565b34801561023a57600080fd5b506101696102493660046117ac565b61060b565b34801561025a57600080fd5b50610169610720565b34801561026f57600080fd5b5061028361027e3660046117e8565b610734565b6040516101cf93929190611937565b34801561029e57600080fd5b506101696109aa565b3480156102b357600080fd5b506102d76102c2366004611956565b60066020526000908152604090205460ff1681565b60405160ff90911681526020016101cf565b3480156102f557600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cf565b34801561033c57600080fd5b506101c361034b36600461196f565b81516020818401810180516005825292820194820194909420919093529091526000908152604090205460ff1681565b34801561038757600080fd5b506103c46040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101cf91906119bd565b3480156103dd57600080fd5b506102206103ec3660046119d0565b610aee565b3480156103fd57600080fd5b5061016961040c36600461157a565b610bbd565b34801561041d57600080fd5b5061022061042c366004611a2c565b805160208183018101805160048252928201919093012091525481565b34801561045557600080fd5b50610469610464366004611a69565b610c16565b6040516101cf9190611ab5565b34801561048257600080fd5b50610169610491366004611ae4565b610ea9565b3480156104a257600080fd5b506101696104b1366004611b0e565b610eec565b6001546001600160a01b031633146104fa576040517fa2f679e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b436004838360405161050d929190611b29565b908152604051908190036020019020555050565b610529610f48565b61053282610fff565b61053c8282611007565b5050565b6001546001600160a01b0316331480159061056657506000546001600160a01b03163314155b1561058457604051639a4b386f60e01b815260040160405180910390fd5b600160028585604051610598929190611b29565b908152602001604051809103902083836040516105b6929190611b29565b908152604051908190036020019020805491151560ff1990921691909117905550505050565b60006105e66110f4565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6001546001600160a01b0316331480159061063157506000546001600160a01b03163314155b1561064f57604051639a4b386f60e01b815260040160405180910390fd5b36600061065f6020840184611b39565b604051919350915083359060a0850135906003906106809086908690611b29565b90815260408051918290036020908101832060008681529152209190915560c0850135906003906106b49086908690611b29565b9081526040805160209281900383019020600085815292529020600101556106df60e0850185611b80565b600384846040516106f1929190611b29565b90815260408051602092819003830190206000858152925290206002016107188282611f36565b505050505050565b61072861113d565b61073260006111b1565b565b8151602081840181018051600382529282019482019490942091909352825260009081526040808220805460018201548351600284018054978802820160609081018752958201888152939792969495919490938593909285929085015b82821015610881576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff16825260018101805492939192918401916107dc90611c16565b80601f016020809104026020016040519081016040528092919081815260200182805461080890611c16565b80156108555780601f1061082a57610100808354040283529160200191610855565b820191906000526020600020905b81548152906001019060200180831161083857829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610792565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561099d576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff16825260018101805492939192918401916108f890611c16565b80601f016020809104026020016040519081016040528092919081815260200182805461092490611c16565b80156109715780601f1061094657610100808354040283529160200191610971565b820191906000526020600020905b81548152906001019060200180831161095457829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906108ae565b5050505081525050905083565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109f55750825b905060008267ffffffffffffffff166001148015610a125750303b155b905081158015610a20575080155b15610a57576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a8b57845468ff00000000000000001916680100000000000000001785555b610a943361122f565b610a9c611240565b8315610ae757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001546000906001600160a01b03163314801590610b1757506000546001600160a01b03163314155b15610b3557604051639a4b386f60e01b815260040160405180910390fd5b600160058686604051610b49929190611b29565b90815260408051602092819003830190206001600160a01b0387166000908152908352818120805460ff1916941515949094179093558483526006909152812080548290610b999060ff166120a3565b825460ff9182166101009390930a8381029202191617909155915050949350505050565b6000546001600160a01b03163314610c01576040517fd695af0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000196004838360405161050d929190611b29565b610c1e6114f6565b60038484604051610c30929190611b29565b90815260408051602092819003830181206000868152908452828120606080840185528154845260018201548685015284516002830180549788028201830187528187018881529597939688019591949093859385929085015b82821015610d79576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610cd490611c16565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090611c16565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610c8a565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610e95576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610df090611c16565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1c90611c16565b8015610e695780601f10610e3e57610100808354040283529160200191610e69565b820191906000526020600020905b815481529060010190602001808311610e4c57829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610da6565b5050509152505090525090505b9392505050565b610eb161113d565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b610ef461113d565b6001600160a01b038116610f3c576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610f45816111b1565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610fe157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fd57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156107325760405163703e46dd60e11b815260040160405180910390fd5b610f4561113d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611061575060408051601f3d908101601f1916820190925261105e918101906120c2565b60015b61108957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610f33565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146110e5576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610f33565b6110ef8383611248565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107325760405163703e46dd60e11b815260040160405180910390fd5b3361116f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610732576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610f33565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61123761129e565b610f4581611305565b61073261129e565b6112518261130d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611296576110ef8282611391565b61053c611407565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610732576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef461129e565b806001600160a01b03163b60000361134357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f33565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516113ae91906120db565b600060405180830381855af49150503d80600081146113e9576040519150601f19603f3d011682016040523d82523d6000602084013e6113ee565b606091505b50915091506113fe85838361143f565b95945050505050565b3415610732576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826114545761144f826114b4565b610ea2565b815115801561146b57506001600160a01b0384163b155b156114ad576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610f33565b5080610ea2565b8051156114c45780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060600160405280600081526020016000815260200161152c604051806040016040528060608152602001606081525090565b905290565b60008083601f84011261154357600080fd5b50813567ffffffffffffffff81111561155b57600080fd5b60208301915083602082850101111561157357600080fd5b9250929050565b6000806020838503121561158d57600080fd5b823567ffffffffffffffff8111156115a457600080fd5b6115b085828601611531565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156115ed576115ed6115bc565b604051601f8501601f19908116603f01168101908282118183101715611615576116156115bc565b8160405280935085815286868601111561162e57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261165957600080fd5b610ea2838335602085016115d2565b6000806040838503121561167b57600080fd5b823567ffffffffffffffff8082111561169357600080fd5b61169f86838701611648565b935060208501359150808211156116b557600080fd5b506116c285828601611648565b9150509250929050565b80356001600160a01b03811681146116e357600080fd5b919050565b600080604083850312156116fb57600080fd5b611704836116cc565b9150602083013567ffffffffffffffff81111561172057600080fd5b8301601f8101851361173157600080fd5b6116c2858235602084016115d2565b6000806000806040858703121561175657600080fd5b843567ffffffffffffffff8082111561176e57600080fd5b61177a88838901611531565b9096509450602087013591508082111561179357600080fd5b506117a087828801611531565b95989497509550505050565b6000602082840312156117be57600080fd5b813567ffffffffffffffff8111156117d557600080fd5b82016101008185031215610ea257600080fd5b600080604083850312156117fb57600080fd5b823567ffffffffffffffff81111561181257600080fd5b61181e85828601611648565b95602094909401359450505050565b60005b83811015611848578181015183820152602001611830565b50506000910152565b6000815180845261186981602086016020860161182d565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156118fc57601f198684030189528151608067ffffffffffffffff82511685528582015181878701526118d282870182611851565b6040848101519088015260609384015193909601929092525050978301979083019060010161189a565b5090979650505050505050565b600081516040845261191e604085018261187d565b9050602083015184820360208601526113fe828261187d565b8381528260208201526060604082015260006113fe6060830184611909565b60006020828403121561196857600080fd5b5035919050565b6000806040838503121561198257600080fd5b823567ffffffffffffffff81111561199957600080fd5b6119a585828601611648565b9250506119b4602084016116cc565b90509250929050565b602081526000610ea26020830184611851565b600080600080606085870312156119e657600080fd5b843567ffffffffffffffff8111156119fd57600080fd5b611a0987828801611531565b9095509350611a1c9050602086016116cc565b9396929550929360400135925050565b600060208284031215611a3e57600080fd5b813567ffffffffffffffff811115611a5557600080fd5b611a6184828501611648565b949350505050565b600080600060408486031215611a7e57600080fd5b833567ffffffffffffffff811115611a9557600080fd5b611aa186828701611531565b909790965060209590950135949350505050565b60208152815160208201526020820151604082015260006040830151606080840152611a616080840182611909565b60008060408385031215611af757600080fd5b611b00836116cc565b91506119b4602084016116cc565b600060208284031215611b2057600080fd5b610ea2826116cc565b8183823760009101908152919050565b6000808335601e19843603018112611b5057600080fd5b83018035915067ffffffffffffffff821115611b6b57600080fd5b60200191503681900382131561157357600080fd5b60008235603e19833603018112611b9657600080fd5b9190910192915050565b6000808335601e19843603018112611bb757600080fd5b83018035915067ffffffffffffffff821115611bd257600080fd5b6020019150600581901b360382131561157357600080fd5b60008235607e19833603018112611b9657600080fd5b634e487b7160e01b600052601160045260246000fd5b600181811c90821680611c2a57607f821691505b602082108103611c4a57634e487b7160e01b600052602260045260246000fd5b50919050565b5b8181101561053c5760008155600101611c51565b601f8211156110ef57806000526020600020601f840160051c81016020851015611c8c5750805b610ae7601f850160051c830182611c50565b67ffffffffffffffff831115611cb657611cb66115bc565b611cca83611cc48354611c16565b83611c65565b6000601f841160018114611cfe5760008515611ce65750838201355b600019600387901b1c1916600186901b178355610ae7565b600083815260209020601f19861690835b82811015611d2f5786850135825560209485019460019092019101611d0f565b5086821015611d4c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813567ffffffffffffffff808216808314611d7857600080fd5b835467ffffffffffffffff19161783556020840135915036849003601e19018212611da257600080fd5b90830190813581811115611db557600080fd5b602083019250803603831315611dca57600080fd5b611dd8818460018701611c9e565b50505060408201356002820155606082013560038201555050565b68010000000000000000831115611e0c57611e0c6115bc565b805483825580841015611ef85760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611e4d57611e4d611c00565b8086168614611e5e57611e5e611c00565b506000838152602081208360021b81018760021b820191505b80821015611ef3578282556001808301611e918154611c16565b8015611eda57601f80821160018114611eac57878455611ed7565b600084815260209020611ec883850160051c8201878301611c50565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611e77565b505050505b5060008181526020812083915b8581101561071857611f20611f1a8487611bea565b83611d5e565b6020929092019160049190910190600101611f05565b611f408283611ba0565b68010000000000000000811115611f5957611f596115bc565b8254818455808210156120455760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611f9a57611f9a611c00565b8084168414611fab57611fab611c00565b506000858152602081208360021b81018560021b820191505b80821015612040578282556001808301611fde8154611c16565b801561202757601f80821160018114611ff957878455612024565b60008481526020902061201583850160051c8201878301611c50565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611fc4565b505050505b5060008381526020812083915b8381101561207d57612067611f1a8487611bea565b6020929092019160049190910190600101612052565b505050505061208f6020830183611ba0565b61209d818360018601611df3565b50505050565b600060ff821660ff81036120b9576120b9611c00565b60010192915050565b6000602082840312156120d457600080fd5b5051919050565b60008251611b9681846020870161182d56fea2646970667358221220aafeaaa1ffe34af1b5dfe42722359db10c5a9c1d172ccfa56d6ba185ed9ff21864736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` -var ClaimsArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"Claims","sourceName":"contracts/Claims.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"chainTokenQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"getBatchingTxsCount","outputs":[{"internalType":"uint256","name":"counterConfirmedTransactions","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getConfirmedTransaction","outputs":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"blockHeight","type":"uint256"},{"internalType":"string","name":"sourceChainID","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ConfirmedTransaction","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getTokenAmountFromSignedBatch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"},{"internalType":"address","name":"_voter","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_maxNumberOfTransactions","type":"uint16"},{"internalType":"uint8","name":"_timeoutBlocksNumber","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"isBatchCreated","outputs":[{"internalType":"bool","name":"batch","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"isChainRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"lastBatchedTxNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"lastConfirmedTxNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxNumberOfTransactions","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"nextTimeoutBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"resetCurrentBatchBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"setChainRegistered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"},{"internalType":"address","name":"_claimsHelperAddress","type":"address"},{"internalType":"address","name":"_utxosc","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"setNextTimeoutBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"},{"internalType":"uint256","name":"_tokenQuantity","type":"uint256"}],"name":"setTokenQuantity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"},{"internalType":"address","name":"_voter","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"setVoted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"shouldCreateBatch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"outputUTXO","type":"tuple"},{"internalType":"string","name":"sourceChainID","type":"string"},{"internalType":"string","name":"destinationChainID","type":"string"}],"internalType":"struct IBridgeStructs.BridgingRequestClaim[]","name":"bridgingRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"outputUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.BatchExecutedClaim[]","name":"batchExecutedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"}],"internalType":"struct IBridgeStructs.BatchExecutionFailedClaim[]","name":"batchExecutionFailedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"previousRefundTxHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"receiver","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"uint256","name":"retryCounter","type":"uint256"}],"internalType":"struct IBridgeStructs.RefundRequestClaim[]","name":"refundRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"refundTxHash","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"}],"internalType":"struct IBridgeStructs.RefundExecutedClaim[]","name":"refundExecutedClaims","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ValidatorClaims","name":"_claims","type":"tuple"},{"internalType":"address","name":"_caller","type":"address"}],"name":"submitClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timeoutBlocksNumber","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161467e6200010460003960008181611c6201528181611c8b0152611e0e015261467e6000f3fe6080604052600436106101ac5760003560e01c8063715018a6116100ec578063b9d808ff1161008a578063d9dee84411610064578063d9dee84414610598578063e3aa21f4146105b8578063eab481c3146105d8578063f2fde38b146105f857600080fd5b8063b9d808ff1461052a578063c34872551461054a578063ca6869821461057857600080fd5b80638da5cb5b116100c65780638da5cb5b1461044d5780639af06cd914610494578063a474cd9d146104b4578063ad3cb1cc146104d457600080fd5b8063715018a6146103f857806374cff92e1461040d57806377968b341461042d57600080fd5b80634ae4dd7c1161015957806352d1902d1161013357806352d1902d1461035e5780635673ee67146103735780636cabee01146103935780636cc8f8c7146103c057600080fd5b80634ae4dd7c146102db5780634b4c1f84146103135780634f1ef2861461034b57600080fd5b806334d581401161018a57806334d58140146102695780633bde7d2e1461029b57806344e3bd22146102bb57600080fd5b80630d32b63e146101b157806318c586cd146101d35780631d530f1214610223575b600080fd5b3480156101bd57600080fd5b506101d16101cc36600461322a565b610618565b005b3480156101df57600080fd5b5061020e6101ee3660046133b2565b805160208183018101805160048252928201919093012091525460ff1681565b60405190151581526020015b60405180910390f35b34801561022f57600080fd5b5061025b61023e3660046133b2565b8051602081830181018051600a8252928201919093012091525481565b60405190815260200161021a565b34801561027557600080fd5b506006546102899062010000900460ff1681565b60405160ff909116815260200161021a565b3480156102a757600080fd5b506101d16102b6366004613403565b610680565b3480156102c757600080fd5b5061025b6102d6366004613457565b6106e5565b3480156102e757600080fd5b5061025b6102f63660046133b2565b805160208183018101805160058252928201919093012091525481565b34801561031f57600080fd5b5061025b61032e3660046133b2565b805160208183018101805160098252928201919093012091525481565b6101d1610359366004613499565b610809565b34801561036a57600080fd5b5061025b610828565b34801561037f57600080fd5b506101d161038e3660046134fb565b610857565b34801561039f57600080fd5b506103b36103ae36600461322a565b61122d565b60405161021a919061359e565b3480156103cc57600080fd5b5061025b6103db3660046133b2565b805160208183018101805160078252928201919093012091525481565b34801561040457600080fd5b506101d16114d0565b34801561041957600080fd5b5061020e610428366004613457565b6114e4565b34801561043957600080fd5b5061020e610448366004613457565b611569565b34801561045957600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161021a565b3480156104a057600080fd5b5061020e6104af366004613669565b6115c1565b3480156104c057600080fd5b5061025b6104cf36600461322a565b611650565b3480156104e057600080fd5b5061051d6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161021a91906136bd565b34801561053657600080fd5b5061025b6105453660046136d0565b61182d565b34801561055657600080fd5b506006546105659061ffff1681565b60405161ffff909116815260200161021a565b34801561058457600080fd5b506101d1610593366004613457565b6118f4565b3480156105a457600080fd5b506101d16105b336600461373b565b611987565b3480156105c457600080fd5b506101d16105d336600461322a565b611aeb565b3480156105e457600080fd5b506101d16105f3366004613457565b611b29565b34801561060457600080fd5b506101d161061336600461377b565b611b8c565b6000546001600160a01b0316331461064357604051637fea9dc560e01b815260040160405180910390fd5b6006546106599062010000900460ff16826137ac565b6005848460405161066b9291906137bf565b90815260405190819003602001902055505050565b610688611be3565b600080546001600160a01b0395861673ffffffffffffffffffffffffffffffffffffffff19918216179091556001805494861694821694909417909355600280549285169284169290921790915560038054919093169116179055565b600080600984846040516106fa9291906137bf565b90815260200160405180910390205490506000600a858560405161071f9291906137bf565b9081526040519081900360200190205460065490915060009061ffff1661074683856137cf565b101561075b5761075682846137cf565b610763565b60065461ffff165b9050600093505b80841015610800576000600887876040516107869291906137bf565b90815260405190819003602001902060006107a187866137ac565b6107ac9060016137ac565b8152602001908152602001600020600201549050600587876040516107d29291906137bf565b90815260200160405180910390205481106107ed5750610800565b846107f7816137e2565b9550505061076a565b50505092915050565b610811611c57565b61081a82611d0e565b6108248282611d16565b5050565b6000610832611e03565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000546001600160a01b0316331461088257604051637fea9dc560e01b815260040160405180910390fd5b600061088e83806137fb565b9050905060005b81811015610b0857366108a885806137fb565b838181106108b8576108b8613845565b90506020028101906108ca919061385b565b90503660006108dc606084018461387b565b90925090503660006108f1608086018661387b565b91509150600484846040516109079291906137bf565b9081526040519081900360200190205460ff1661094457838360405163af0ab70960e01b815260040161093b9291906138eb565b60405180910390fd5b600482826040516109569291906137bf565b9081526040519081900360200190205460ff1661098a57818160405163af0ab70960e01b815260040161093b9291906138eb565b6001546001600160a01b0316639af06cd96109a5878061387b565b8b6040518463ffffffff1660e01b81526004016109c4939291906138ff565b602060405180830381865afa1580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a05919061392c565b15610a14575050505050610b00565b6001546001600160a01b0316634a5d2b198383610a31898061387b565b6040518563ffffffff1660e01b8152600401610a50949392919061394e565b602060405180830381865afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a91919061392c565b15610aa0575050505050610b00565b610abe610ab060208701876137fb565b610ab9916139a4565b611e4c565b60078585604051610ad09291906137bf565b9081526020016040518091039020541015610aef575050505050610b00565b610afa89878a611e99565b50505050505b600101610895565b506000610b1860208501856137fb565b9050905060005b81811015610ce35736610b3560208701876137fb565b83818110610b4557610b45613845565b9050602002810190610b579190613a52565b90506004610b68602083018361387b565b604051610b769291906137bf565b9081526040519081900360200190205460ff16610bb557610b9a602082018261387b565b60405163af0ab70960e01b815260040161093b9291906138eb565b6001546001600160a01b0316639af06cd9610bd0838061387b565b886040518463ffffffff1660e01b8152600401610bef939291906138ff565b602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c30919061392c565b15610c3b5750610cdb565b6001546001600160a01b0316634a5d2b19610c59602084018461387b565b610c63858061387b565b6040518563ffffffff1660e01b8152600401610c82949392919061394e565b602060405180830381865afa158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc3919061392c565b15610cce5750610cdb565b610cd9868387612254565b505b600101610b1f565b506000610cf360408601866137fb565b9050905060005b81811015610ea35736610d1060408801886137fb565b83818110610d2057610d20613845565b9050602002810190610d329190613a68565b90506004610d43602083018361387b565b604051610d519291906137bf565b9081526040519081900360200190205460ff16610d7557610b9a602082018261387b565b6001546001600160a01b0316639af06cd9610d90838061387b565b896040518463ffffffff1660e01b8152600401610daf939291906138ff565b602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df0919061392c565b15610dfb5750610e9b565b6001546001600160a01b0316634a5d2b19610e19602084018461387b565b610e23858061387b565b6040518563ffffffff1660e01b8152600401610e42949392919061394e565b602060405180830381865afa158015610e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e83919061392c565b15610e8e5750610e9b565b610e998783886126bf565b505b600101610cfa565b506000610eb360608701876137fb565b9050905060005b818110156110635736610ed060608901896137fb565b83818110610ee057610ee0613845565b9050602002810190610ef29190613a7e565b90506004610f03604083018361387b565b604051610f119291906137bf565b9081526040519081900360200190205460ff16610f3557610b9a604082018261387b565b6001546001600160a01b0316639af06cd9610f50838061387b565b8a6040518463ffffffff1660e01b8152600401610f6f939291906138ff565b602060405180830381865afa158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb0919061392c565b15610fbb575061105b565b6001546001600160a01b0316634a5d2b19610fd9604084018461387b565b610fe3858061387b565b6040518563ffffffff1660e01b8152600401611002949392919061394e565b602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611043919061392c565b1561104e575061105b565b61105988838961294c565b505b600101610eba565b50600061107360808801886137fb565b9050905060005b81811015611223573661109060808a018a6137fb565b838181106110a0576110a0613845565b90506020028101906110b29190613a52565b905060046110c3602083018361387b565b6040516110d19291906137bf565b9081526040519081900360200190205460ff166110f557610b9a602082018261387b565b6001546001600160a01b0316639af06cd9611110838061387b565b8b6040518463ffffffff1660e01b815260040161112f939291906138ff565b602060405180830381865afa15801561114c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611170919061392c565b1561117b575061121b565b6001546001600160a01b0316634a5d2b19611199602084018461387b565b6111a3858061387b565b6040518563ffffffff1660e01b81526004016111c2949392919061394e565b602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611203919061392c565b1561120e575061121b565b61121989838a612b31565b505b60010161107a565b5050505050505050565b61125f6040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b600884846040516112719291906137bf565b9081526040805191829003602090810183206000868152915281902060a083019091528054829082906112a390613a94565b80601f01602080910402602001604051908101604052809291908181526020018280546112cf90613a94565b801561131c5780601f106112f15761010080835404028352916020019161131c565b820191906000526020600020905b8154815290600101906020018083116112ff57829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201805461134990613a94565b80601f016020809104026020016040519081016040528092919081815260200182805461137590613a94565b80156113c25780601f10611397576101008083540402835291602001916113c2565b820191906000526020600020905b8154815290600101906020018083116113a557829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156114be578382906000526020600020906002020160405180604001604052908160008201805461142390613a94565b80601f016020809104026020016040519081016040528092919081815260200182805461144f90613a94565b801561149c5780601f106114715761010080835404028352916020019161149c565b820191906000526020600020905b81548152906001019060200180831161147f57829003601f168201915b50505050508152602001600182015481525050815260200190600101906113f0565b505050508152505090505b9392505050565b6114d8611be3565b6114e26000612cb3565b565b60015460405163e038ab5560e01b8152600091600019916001600160a01b039091169063e038ab559061151d90879087906004016138eb565b602060405180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e9190613ace565b141590505b92915050565b60008061157684846106e5565b60065490915061ffff16811015806115b957506000811180156115b95750600584846040516115a69291906137bf565b9081526020016040518091039020544310155b949350505050565b6001546040517f9af06cd90000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690639af06cd99061160f908790879087906004016138ff565b602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b9919061392c565b60015460405163e2100f4d60e01b8152600091829182916001600160a01b03169063e2100f4d9061168990899089908990600401613ae7565b600060405180830381865afa1580156116a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116ce9190810190613c47565b8051602082015191925090815b8181116118205761180260088a8a6040516116f79291906137bf565b9081526040805191829003602090810183206000868152908252828120600401805480840286018401909452838552929184015b828210156117f9578382906000526020600020906002020160405180604001604052908160008201805461175e90613a94565b80601f016020809104026020016040519081016040528092919081815260200182805461178a90613a94565b80156117d75780601f106117ac576101008083540402835291602001916117d7565b820191906000526020600020905b8154815290600101906020018083116117ba57829003601f168201915b505050505081526020016001820154815250508152602001906001019061172b565b50505050611e4c565b61180c90866137ac565b945080611818816137e2565b9150506116db565b5092979650505050505050565b600080546001600160a01b0316331461185957604051637fea9dc560e01b815260040160405180910390fd5b6001546040517fb9d808ff0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b9d808ff906118a8908890889088908890600401613d1a565b6020604051808303816000875af11580156118c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118eb9190613ace565b95945050505050565b6000546001600160a01b0316331461191f57604051637fea9dc560e01b815260040160405180910390fd5b60015460405163653434c160e11b81526001600160a01b039091169063ca6869829061195190859085906004016138eb565b600060405180830381600087803b15801561196b57600080fd5b505af115801561197f573d6000803e3d6000fd5b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156119d25750825b905060008267ffffffffffffffff1660011480156119ef5750303b155b9050811580156119fd575080155b15611a34576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a6857845468ff00000000000000001916680100000000000000001785555b611a7133612d31565b611a79612d42565b6006805460ff8816620100000262ffffff1990911661ffff8a16171790558315611ae257845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000546001600160a01b03163314611b1657604051637fea9dc560e01b815260040160405180910390fd5b806007848460405161066b9291906137bf565b6000546001600160a01b03163314611b5457604051637fea9dc560e01b815260040160405180910390fd5b600160048383604051611b689291906137bf565b908152604051908190036020019020805491151560ff199092169190911790555050565b611b94611be3565b6001600160a01b038116611bd7576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161093b565b611be081612cb3565b50565b33611c157f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146114e2576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161093b565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ce47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156114e25760405163703e46dd60e11b815260040160405180910390fd5b611be0611be3565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d70575060408051601f3d908101601f19168201909252611d6d91810190613ace565b60015b611d9857604051634c9c8ce360e01b81526001600160a01b038316600482015260240161093b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611df4576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161093b565b611dfe8383612d4a565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114e25760405163703e46dd60e11b815260040160405180910390fd5b80516000908190815b81811015611e9057848181518110611e6f57611e6f613845565b60200260200101516020015183611e8691906137ac565b9250600101611e55565b50909392505050565b36611ea484806137fb565b84818110611eb457611eb4613845565b9050602002810190611ec6919061385b565b9050600081604051602001611edb9190613e6a565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff611f14858061387b565b87866040518563ffffffff1660e01b8152600401611f359493929190613d1a565b6020604051808303816000875af1158015611f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f789190613ace565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190613f97565b60ff16811061197f5736600061200a608086018661387b565b909250905061201f610ab060208701876137fb565b600761202e606088018861387b565b60405161203c9291906137bf565b9081526020016040518091039020600082825461205991906137cf565b90915550506002546001600160a01b031663bb1da9c961207c606088018861387b565b61208960408a018a613a52565b6040518463ffffffff1660e01b81526004016120a793929190613fb4565b600060405180830381600087803b1580156120c157600080fd5b505af11580156120d5573d6000803e3d6000fd5b5050505060006120e583836106e5565b90506120f086612da0565b6001546001600160a01b03166351a6e113848461210d8a8061387b565b6040518563ffffffff1660e01b815260040161212c949392919061394e565b600060405180830381600087803b15801561214657600080fd5b505af115801561215a573d6000803e3d6000fd5b505060015460405163e038ab5560e01b81526001600160a01b03909116925063e038ab55915061219090869086906004016138eb565b602060405180830381865afa1580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d19190613ace565b6000191480156121df575080155b801561220b5750600583836040516121f89291906137bf565b9081526020016040518091039020544310155b15612249576006546122269062010000900460ff16436137ac565b600584846040516122389291906137bf565b908152604051908190036020019020555b505050505050505050565b3661226260208501856137fb565b8481811061227257612272613845565b90506020028101906122849190613a52565b90506000816040516020016122999190614078565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff6122d2858061387b565b87866040518563ffffffff1660e01b81526004016122f39493929190613d1a565b6020604051808303816000875af1158015612312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123369190613ace565b9050366000612348602086018661387b565b91509150600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c39190613f97565b60ff168310611223576123db82828760400135611650565b600783836040516123ed9291906137bf565b9081526020016040518091039020600082825461240a91906137ac565b90915550506001546001600160a01b03166351a6e113838361242c898061387b565b6040518563ffffffff1660e01b815260040161244b949392919061394e565b600060405180830381600087803b15801561246557600080fd5b505af1158015612479573d6000803e3d6000fd5b505060015460405163653434c160e11b81526001600160a01b03909116925063ca68698291506124af90859085906004016138eb565b600060405180830381600087803b1580156124c957600080fd5b505af11580156124dd573d6000803e3d6000fd5b50506001546040805163e2100f4d60e01b8152600094506001600160a01b03909216925063e2100f4d9161251b91879187918c013590600401613ae7565b600060405180830381865afa158015612538573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125609190810190613c47565b90508060200151600a84846040516125799291906137bf565b908152604051908190036020019020556006546125a09060ff6201000090910416436137ac565b600584846040516125b29291906137bf565b908152604051908190036020019020556002546001600160a01b031663b1f08d6b84846125e260608b018b6140f6565b6040518463ffffffff1660e01b81526004016126009392919061410c565b600060405180830381600087803b15801561261a57600080fd5b505af115801561262e573d6000803e3d6000fd5b505060025460408085015190517f1754a61f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169350631754a61f925061268291879187916004016141b1565b600060405180830381600087803b15801561269c57600080fd5b505af11580156126b0573d6000803e3d6000fd5b50505050505050505050505050565b366126cd60408501856137fb565b848181106126dd576126dd613845565b90506020028101906126ef9190613a68565b90506000816040516020016127049190614205565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff61273d858061387b565b87866040518563ffffffff1660e01b815260040161275e9493929190613d1a565b6020604051808303816000875af115801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613ace565b90503660006127b3602086018661387b565b91509150600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282e9190613f97565b60ff168310611223576001546001600160a01b03166351a6e1138383612854898061387b565b6040518563ffffffff1660e01b8152600401612873949392919061394e565b600060405180830381600087803b15801561288d57600080fd5b505af11580156128a1573d6000803e3d6000fd5b505060015460405163653434c160e11b81526001600160a01b03909116925063ca68698291506128d790859085906004016138eb565b600060405180830381600087803b1580156128f157600080fd5b505af1158015612905573d6000803e3d6000fd5b5050600654612920925062010000900460ff169050436137ac565b600583836040516129329291906137bf565b908152604051908190036020019020555050505050505050565b3661295a60608501856137fb565b8481811061296a5761296a613845565b905060200281019061297c9190613a7e565b90506000816040516020016129919190614269565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff6129ca858061387b565b87866040518563ffffffff1660e01b81526004016129eb9493929190613d1a565b6020604051808303816000875af1158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190613ace565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa79190613f97565b60ff16811061197f576001546001600160a01b03166351a6e113612ace604086018661387b565b612ad8878061387b565b6040518563ffffffff1660e01b8152600401612af7949392919061394e565b600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b50505050505050505050565b36612b3f60808501856137fb565b84818110612b4f57612b4f613845565b9050602002810190612b619190613a52565b9050600081604051602001612b769190614398565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff612baf858061387b565b87866040518563ffffffff1660e01b8152600401612bd09493929190613d1a565b6020604051808303816000875af1158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190613ace565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613f97565b60ff16811061197f576001546001600160a01b03166351a6e113612ace602086018661387b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b612d39612f92565b611be081612ff9565b6114e2612f92565b612d5382613001565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d9857611dfe8282613085565b6108246130f2565b366000612db0608084018461387b565b91509150600060098383604051612dc89291906137bf565b908152602001604051809103902060008154612de3906137e2565b91829055509050612df4848061387b565b60088585604051612e069291906137bf565b908152604080516020928190038301902060008681529252902091612e2c91908361447c565b50612e3a606085018561387b565b60088585604051612e4c9291906137bf565b908152604080516020928190038301902060008681529252902060030191612e7591908361447c565b508060088484604051612e899291906137bf565b9081526040805160209281900383019020600085815290835290812060010192909255612eb8908601866137fb565b9050905060005b81811015612f515760088585604051612ed99291906137bf565b908152604080516020928190038301902060008681529083522060040190612f03908801886137fb565b83818110612f1357612f13613845565b9050602002810190612f2591906140f6565b815460018101835560009283526020909220909160020201612f47828261453d565b5050600101612ebf565b504360088585604051612f659291906137bf565b90815260200160405180910390206000848152602001908152602001600020600201819055505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166114e2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b94612f92565b806001600160a01b03163b60000361303757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161093b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516130a29190614636565b600060405180830381855af49150503d80600081146130dd576040519150601f19603f3d011682016040523d82523d6000602084013e6130e2565b606091505b50915091506118eb85838361312a565b34156114e2576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261313f5761313a8261319f565b6114c9565b815115801561315657506001600160a01b0384163b155b15613198576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161093b565b50806114c9565b8051156131af5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f8401126131f357600080fd5b50813567ffffffffffffffff81111561320b57600080fd5b60208301915083602082850101111561322357600080fd5b9250929050565b60008060006040848603121561323f57600080fd5b833567ffffffffffffffff81111561325657600080fd5b613262868287016131e1565b909790965060209590950135949350505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156132af576132af613276565b60405290565b6040516080810167ffffffffffffffff811182821017156132af576132af613276565b6040516060810167ffffffffffffffff811182821017156132af576132af613276565b604051601f8201601f1916810167ffffffffffffffff8111828210171561332457613324613276565b604052919050565b600067ffffffffffffffff82111561334657613346613276565b50601f01601f191660200190565b60006133676133628461332c565b6132fb565b905082815283838301111561337b57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126133a357600080fd5b6114c983833560208501613354565b6000602082840312156133c457600080fd5b813567ffffffffffffffff8111156133db57600080fd5b6115b984828501613392565b80356001600160a01b03811681146133fe57600080fd5b919050565b6000806000806080858703121561341957600080fd5b613422856133e7565b9350613430602086016133e7565b925061343e604086016133e7565b915061344c606086016133e7565b905092959194509250565b6000806020838503121561346a57600080fd5b823567ffffffffffffffff81111561348157600080fd5b61348d858286016131e1565b90969095509350505050565b600080604083850312156134ac57600080fd5b6134b5836133e7565b9150602083013567ffffffffffffffff8111156134d157600080fd5b8301601f810185136134e257600080fd5b6134f185823560208401613354565b9150509250929050565b6000806040838503121561350e57600080fd5b823567ffffffffffffffff81111561352557600080fd5b830160a0818603121561353757600080fd5b9150613545602084016133e7565b90509250929050565b60005b83811015613569578181015183820152602001613551565b50506000910152565b6000815180845261358a81602086016020860161354e565b601f01601f19169290920160200192915050565b60006020808352835160a0828501526135ba60c0850182613572565b90508185015160408160408701526040870151606087015260608701519150601f19808785030160808801526135f08484613572565b6080890151888203830160a08a015280518083529195508601935085850190600581901b8601870160005b8281101561365a57848883030184528651805187845261363d88850182613572565b918b0151938b01939093529689019693890193915060010161361b565b509a9950505050505050505050565b60008060006040848603121561367e57600080fd5b833567ffffffffffffffff81111561369557600080fd5b6136a1868287016131e1565b90945092506136b49050602085016133e7565b90509250925092565b6020815260006114c96020830184613572565b600080600080606085870312156136e657600080fd5b843567ffffffffffffffff8111156136fd57600080fd5b613709878288016131e1565b909550935061371c9050602086016133e7565b9396929550929360400135925050565b60ff81168114611be057600080fd5b6000806040838503121561374e57600080fd5b823561ffff8116811461376057600080fd5b915060208301356137708161372c565b809150509250929050565b60006020828403121561378d57600080fd5b6114c9826133e7565b634e487b7160e01b600052601160045260246000fd5b8082018082111561156357611563613796565b8183823760009101908152919050565b8181038181111561156357611563613796565b6000600182016137f4576137f4613796565b5060010190565b6000808335601e1984360301811261381257600080fd5b83018035915067ffffffffffffffff82111561382d57600080fd5b6020019150600581901b360382131561322357600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261387157600080fd5b9190910192915050565b6000808335601e1984360301811261389257600080fd5b83018035915067ffffffffffffffff8211156138ad57600080fd5b60200191503681900382131561322357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006115b96020830184866138c2565b6040815260006139136040830185876138c2565b90506001600160a01b0383166020830152949350505050565b60006020828403121561393e57600080fd5b815180151581146114c957600080fd5b6040815260006139626040830186886138c2565b82810360208401526139758185876138c2565b979650505050505050565b600067ffffffffffffffff82111561399a5761399a613276565b5060051b60200190565b60006139b261336284613980565b80848252602080830192508560051b8501368111156139d057600080fd5b855b81811015613a4657803567ffffffffffffffff808211156139f35760008081fd5b818901915060408236031215613a095760008081fd5b613a1161328c565b823582811115613a215760008081fd5b613a2d36828601613392565b82525091850135858301525085529382019382016139d2565b50919695505050505050565b60008235607e1983360301811261387157600080fd5b60008235605e1983360301811261387157600080fd5b6000823560fe1983360301811261387157600080fd5b600181811c90821680613aa857607f821691505b602082108103613ac857634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613ae057600080fd5b5051919050565b604081526000613afb6040830185876138c2565b9050826020830152949350505050565b67ffffffffffffffff81168114611be057600080fd5b600082601f830112613b3257600080fd5b81516020613b4261336283613980565b82815260059290921b84018101918181019086841115613b6157600080fd5b8286015b84811015613c3c57805167ffffffffffffffff80821115613b865760008081fd5b908801906080828b03601f1901811315613ba05760008081fd5b613ba86132b5565b87840151613bb581613b0b565b815260408481015184811115613bcb5760008081fd5b85019350603f84018d13613bdf5760008081fd5b88840151613bef6133628261332c565b8181528e83838801011115613c045760008081fd5b613c13828c830185890161354e565b838b01525060608581015191830191909152919093015190830152508352918301918301613b65565b509695505050505050565b600060208284031215613c5957600080fd5b815167ffffffffffffffff80821115613c7157600080fd5b9083019060608286031215613c8557600080fd5b613c8d6132d8565b8251815260208301516020820152604083015182811115613cad57600080fd5b929092019160408387031215613cc257600080fd5b613cca61328c565b835183811115613cd957600080fd5b613ce588828701613b21565b825250602084015183811115613cfa57600080fd5b613d0688828701613b21565b602083015250604082015295945050505050565b606081526000613d2e6060830186886138c2565b6001600160a01b03949094166020830152506040015292915050565b6000808335601e19843603018112613d6157600080fd5b830160208101925035905067ffffffffffffffff811115613d8157600080fd5b80360382131561322357600080fd5b6000808335601e19843603018112613da757600080fd5b830160208101925035905067ffffffffffffffff811115613dc757600080fd5b8060051b360382131561322357600080fd5b60008235603e19833603018112613def57600080fd5b90910192915050565b60008235607e19833603018112613def57600080fd5b60008135613e1b81613b0b565b67ffffffffffffffff168352613e346020830183613d4a565b60806020860152613e496080860182846138c2565b91505060408301356040850152606083013560608501528091505092915050565b60006020808352613e7b8485613d4a565b60a083860152613e8f60c0860182846138c2565b915050613e9e82860186613d90565b601f19604081888603016040890152848386528686019050868460051b8701018560005b86811015613f135785898403018452613edb8289613dd9565b613ee58182613d4a565b878652613ef588870182846138c2565b928d0135958d019590955250938a0193925090890190600101613ec2565b5050613f2260408c018c613df8565b9750838a82030160608b0152613f388189613e0e565b9750505050613f4a6060890189613d4a565b9450925080878603016080880152613f638585856138c2565b9450613f726080890189613d4a565b94509250808786030160a08801525050613f8d8383836138c2565b9695505050505050565b600060208284031215613fa957600080fd5b81516114c98161372c565b604081526000613fc86040830185876138c2565b8281036020840152613f8d8185613e0e565b6000838385526020808601955060208560051b8301018460005b8781101561402a57848303601f1901895261401883614013848a613df8565b613e0e565b98840198925090830190600101613ff4565b5090979650505050505050565b60006140438283613d90565b60408552614055604086018284613fda565b9150506140656020840184613d90565b8583036020870152613f8d838284613fda565b6020815260006140888384613d4a565b6080602085015261409d60a0850182846138c2565b9150506140ad6020850185613d4a565b601f19808685030160408701526140c58483856138c2565b9350604087013560608701526140de6060880188613dd9565b92508086850301608087015250506118eb8282614037565b60008235603e1983360301811261387157600080fd5b6040815260006141206040830185876138c2565b8281036020840152613f8d8185614037565b600082825180855260208086019550808260051b84010181860160005b8481101561402a57601f198684030189528151608067ffffffffffffffff825116855285820151818787015261418782870182613572565b6040848101519088015260609384015193909601929092525050978301979083019060010161414f565b6040815260006141c56040830185876138c2565b82810360208401528351604082526141e06040830182614132565b9050602085015182820360208401526141f98282614132565b98975050505050505050565b6020815260006142158384613d4a565b6060602085015261422a6080850182846138c2565b91505061423a6020850185613d4a565b848303601f190160408601526142518382846138c2565b92505050604084013560608401528091505092915050565b6020815260006142798384613d4a565b610100806020860152614291610120860183856138c2565b92506142a06020870187613d4a565b9250601f19808786030160408801526142ba8585846138c2565b94506142c96040890189613d4a565b94509150808786030160608801526142e28585846138c2565b94506142f16060890189613d4a565b945091508087860301608088015261430a8585846138c2565b94506143196080890189613df8565b9350808786030160a088015261432f8585613e0e565b945061433e60a0890189613d4a565b94509150808786030160c08801526143578585846138c2565b945061436660c0890189613d4a565b94509150808786030160e0880152506143808484836138c2565b93505060e08601358186015250508091505092915050565b6020815260006143a88384613d4a565b608060208501526143bd60a0850182846138c2565b9150506143cd6020850185613d4a565b601f19808685030160408701526143e58483856138c2565b93506143f46040880188613d4a565b935091508086850301606087015261440d8484846138c2565b935061441c6060880188613df8565b92508086850301608087015250506118eb8282613e0e565b601f821115611dfe576000816000526020600020601f850160051c8101602086101561445d5750805b601f850160051c820191505b8181101561197f57828155600101614469565b67ffffffffffffffff83111561449457614494613276565b6144a8836144a28354613a94565b83614434565b6000601f8411600181146144dc57600085156144c45750838201355b600019600387901b1c1916600186901b178355614536565b600083815260209020601f19861690835b8281101561450d57868501358255602094850194600190920191016144ed565b508682101561452a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8135601e1983360301811261455157600080fd5b8201803567ffffffffffffffff81111561456a57600080fd5b6020813603818401131561457d57600080fd5b6145918261458b8654613a94565b86614434565b6000601f8311600181146145c757600084156145af57508482018301355b600019600386901b1c1916600185901b178655614624565b600086815260209020601f19851690835b828110156145f95787850186013582559385019360019091019085016145d8565b50858210156146185760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b6000825161387181846020870161354e56fea2646970667358221220a7150f0ad21ea54c32659daf39cf784072552aa077f59f077b4d27eb7ee331d864736f6c63430008180033","deployedBytecode":"0x6080604052600436106101ac5760003560e01c8063715018a6116100ec578063b9d808ff1161008a578063d9dee84411610064578063d9dee84414610598578063e3aa21f4146105b8578063eab481c3146105d8578063f2fde38b146105f857600080fd5b8063b9d808ff1461052a578063c34872551461054a578063ca6869821461057857600080fd5b80638da5cb5b116100c65780638da5cb5b1461044d5780639af06cd914610494578063a474cd9d146104b4578063ad3cb1cc146104d457600080fd5b8063715018a6146103f857806374cff92e1461040d57806377968b341461042d57600080fd5b80634ae4dd7c1161015957806352d1902d1161013357806352d1902d1461035e5780635673ee67146103735780636cabee01146103935780636cc8f8c7146103c057600080fd5b80634ae4dd7c146102db5780634b4c1f84146103135780634f1ef2861461034b57600080fd5b806334d581401161018a57806334d58140146102695780633bde7d2e1461029b57806344e3bd22146102bb57600080fd5b80630d32b63e146101b157806318c586cd146101d35780631d530f1214610223575b600080fd5b3480156101bd57600080fd5b506101d16101cc36600461322a565b610618565b005b3480156101df57600080fd5b5061020e6101ee3660046133b2565b805160208183018101805160048252928201919093012091525460ff1681565b60405190151581526020015b60405180910390f35b34801561022f57600080fd5b5061025b61023e3660046133b2565b8051602081830181018051600a8252928201919093012091525481565b60405190815260200161021a565b34801561027557600080fd5b506006546102899062010000900460ff1681565b60405160ff909116815260200161021a565b3480156102a757600080fd5b506101d16102b6366004613403565b610680565b3480156102c757600080fd5b5061025b6102d6366004613457565b6106e5565b3480156102e757600080fd5b5061025b6102f63660046133b2565b805160208183018101805160058252928201919093012091525481565b34801561031f57600080fd5b5061025b61032e3660046133b2565b805160208183018101805160098252928201919093012091525481565b6101d1610359366004613499565b610809565b34801561036a57600080fd5b5061025b610828565b34801561037f57600080fd5b506101d161038e3660046134fb565b610857565b34801561039f57600080fd5b506103b36103ae36600461322a565b61122d565b60405161021a919061359e565b3480156103cc57600080fd5b5061025b6103db3660046133b2565b805160208183018101805160078252928201919093012091525481565b34801561040457600080fd5b506101d16114d0565b34801561041957600080fd5b5061020e610428366004613457565b6114e4565b34801561043957600080fd5b5061020e610448366004613457565b611569565b34801561045957600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161021a565b3480156104a057600080fd5b5061020e6104af366004613669565b6115c1565b3480156104c057600080fd5b5061025b6104cf36600461322a565b611650565b3480156104e057600080fd5b5061051d6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161021a91906136bd565b34801561053657600080fd5b5061025b6105453660046136d0565b61182d565b34801561055657600080fd5b506006546105659061ffff1681565b60405161ffff909116815260200161021a565b34801561058457600080fd5b506101d1610593366004613457565b6118f4565b3480156105a457600080fd5b506101d16105b336600461373b565b611987565b3480156105c457600080fd5b506101d16105d336600461322a565b611aeb565b3480156105e457600080fd5b506101d16105f3366004613457565b611b29565b34801561060457600080fd5b506101d161061336600461377b565b611b8c565b6000546001600160a01b0316331461064357604051637fea9dc560e01b815260040160405180910390fd5b6006546106599062010000900460ff16826137ac565b6005848460405161066b9291906137bf565b90815260405190819003602001902055505050565b610688611be3565b600080546001600160a01b0395861673ffffffffffffffffffffffffffffffffffffffff19918216179091556001805494861694821694909417909355600280549285169284169290921790915560038054919093169116179055565b600080600984846040516106fa9291906137bf565b90815260200160405180910390205490506000600a858560405161071f9291906137bf565b9081526040519081900360200190205460065490915060009061ffff1661074683856137cf565b101561075b5761075682846137cf565b610763565b60065461ffff165b9050600093505b80841015610800576000600887876040516107869291906137bf565b90815260405190819003602001902060006107a187866137ac565b6107ac9060016137ac565b8152602001908152602001600020600201549050600587876040516107d29291906137bf565b90815260200160405180910390205481106107ed5750610800565b846107f7816137e2565b9550505061076a565b50505092915050565b610811611c57565b61081a82611d0e565b6108248282611d16565b5050565b6000610832611e03565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000546001600160a01b0316331461088257604051637fea9dc560e01b815260040160405180910390fd5b600061088e83806137fb565b9050905060005b81811015610b0857366108a885806137fb565b838181106108b8576108b8613845565b90506020028101906108ca919061385b565b90503660006108dc606084018461387b565b90925090503660006108f1608086018661387b565b91509150600484846040516109079291906137bf565b9081526040519081900360200190205460ff1661094457838360405163af0ab70960e01b815260040161093b9291906138eb565b60405180910390fd5b600482826040516109569291906137bf565b9081526040519081900360200190205460ff1661098a57818160405163af0ab70960e01b815260040161093b9291906138eb565b6001546001600160a01b0316639af06cd96109a5878061387b565b8b6040518463ffffffff1660e01b81526004016109c4939291906138ff565b602060405180830381865afa1580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a05919061392c565b15610a14575050505050610b00565b6001546001600160a01b0316634a5d2b198383610a31898061387b565b6040518563ffffffff1660e01b8152600401610a50949392919061394e565b602060405180830381865afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a91919061392c565b15610aa0575050505050610b00565b610abe610ab060208701876137fb565b610ab9916139a4565b611e4c565b60078585604051610ad09291906137bf565b9081526020016040518091039020541015610aef575050505050610b00565b610afa89878a611e99565b50505050505b600101610895565b506000610b1860208501856137fb565b9050905060005b81811015610ce35736610b3560208701876137fb565b83818110610b4557610b45613845565b9050602002810190610b579190613a52565b90506004610b68602083018361387b565b604051610b769291906137bf565b9081526040519081900360200190205460ff16610bb557610b9a602082018261387b565b60405163af0ab70960e01b815260040161093b9291906138eb565b6001546001600160a01b0316639af06cd9610bd0838061387b565b886040518463ffffffff1660e01b8152600401610bef939291906138ff565b602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c30919061392c565b15610c3b5750610cdb565b6001546001600160a01b0316634a5d2b19610c59602084018461387b565b610c63858061387b565b6040518563ffffffff1660e01b8152600401610c82949392919061394e565b602060405180830381865afa158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc3919061392c565b15610cce5750610cdb565b610cd9868387612254565b505b600101610b1f565b506000610cf360408601866137fb565b9050905060005b81811015610ea35736610d1060408801886137fb565b83818110610d2057610d20613845565b9050602002810190610d329190613a68565b90506004610d43602083018361387b565b604051610d519291906137bf565b9081526040519081900360200190205460ff16610d7557610b9a602082018261387b565b6001546001600160a01b0316639af06cd9610d90838061387b565b896040518463ffffffff1660e01b8152600401610daf939291906138ff565b602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df0919061392c565b15610dfb5750610e9b565b6001546001600160a01b0316634a5d2b19610e19602084018461387b565b610e23858061387b565b6040518563ffffffff1660e01b8152600401610e42949392919061394e565b602060405180830381865afa158015610e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e83919061392c565b15610e8e5750610e9b565b610e998783886126bf565b505b600101610cfa565b506000610eb360608701876137fb565b9050905060005b818110156110635736610ed060608901896137fb565b83818110610ee057610ee0613845565b9050602002810190610ef29190613a7e565b90506004610f03604083018361387b565b604051610f119291906137bf565b9081526040519081900360200190205460ff16610f3557610b9a604082018261387b565b6001546001600160a01b0316639af06cd9610f50838061387b565b8a6040518463ffffffff1660e01b8152600401610f6f939291906138ff565b602060405180830381865afa158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb0919061392c565b15610fbb575061105b565b6001546001600160a01b0316634a5d2b19610fd9604084018461387b565b610fe3858061387b565b6040518563ffffffff1660e01b8152600401611002949392919061394e565b602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611043919061392c565b1561104e575061105b565b61105988838961294c565b505b600101610eba565b50600061107360808801886137fb565b9050905060005b81811015611223573661109060808a018a6137fb565b838181106110a0576110a0613845565b90506020028101906110b29190613a52565b905060046110c3602083018361387b565b6040516110d19291906137bf565b9081526040519081900360200190205460ff166110f557610b9a602082018261387b565b6001546001600160a01b0316639af06cd9611110838061387b565b8b6040518463ffffffff1660e01b815260040161112f939291906138ff565b602060405180830381865afa15801561114c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611170919061392c565b1561117b575061121b565b6001546001600160a01b0316634a5d2b19611199602084018461387b565b6111a3858061387b565b6040518563ffffffff1660e01b81526004016111c2949392919061394e565b602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611203919061392c565b1561120e575061121b565b61121989838a612b31565b505b60010161107a565b5050505050505050565b61125f6040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b600884846040516112719291906137bf565b9081526040805191829003602090810183206000868152915281902060a083019091528054829082906112a390613a94565b80601f01602080910402602001604051908101604052809291908181526020018280546112cf90613a94565b801561131c5780601f106112f15761010080835404028352916020019161131c565b820191906000526020600020905b8154815290600101906020018083116112ff57829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201805461134990613a94565b80601f016020809104026020016040519081016040528092919081815260200182805461137590613a94565b80156113c25780601f10611397576101008083540402835291602001916113c2565b820191906000526020600020905b8154815290600101906020018083116113a557829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156114be578382906000526020600020906002020160405180604001604052908160008201805461142390613a94565b80601f016020809104026020016040519081016040528092919081815260200182805461144f90613a94565b801561149c5780601f106114715761010080835404028352916020019161149c565b820191906000526020600020905b81548152906001019060200180831161147f57829003601f168201915b50505050508152602001600182015481525050815260200190600101906113f0565b505050508152505090505b9392505050565b6114d8611be3565b6114e26000612cb3565b565b60015460405163e038ab5560e01b8152600091600019916001600160a01b039091169063e038ab559061151d90879087906004016138eb565b602060405180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e9190613ace565b141590505b92915050565b60008061157684846106e5565b60065490915061ffff16811015806115b957506000811180156115b95750600584846040516115a69291906137bf565b9081526020016040518091039020544310155b949350505050565b6001546040517f9af06cd90000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690639af06cd99061160f908790879087906004016138ff565b602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b9919061392c565b60015460405163e2100f4d60e01b8152600091829182916001600160a01b03169063e2100f4d9061168990899089908990600401613ae7565b600060405180830381865afa1580156116a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116ce9190810190613c47565b8051602082015191925090815b8181116118205761180260088a8a6040516116f79291906137bf565b9081526040805191829003602090810183206000868152908252828120600401805480840286018401909452838552929184015b828210156117f9578382906000526020600020906002020160405180604001604052908160008201805461175e90613a94565b80601f016020809104026020016040519081016040528092919081815260200182805461178a90613a94565b80156117d75780601f106117ac576101008083540402835291602001916117d7565b820191906000526020600020905b8154815290600101906020018083116117ba57829003601f168201915b505050505081526020016001820154815250508152602001906001019061172b565b50505050611e4c565b61180c90866137ac565b945080611818816137e2565b9150506116db565b5092979650505050505050565b600080546001600160a01b0316331461185957604051637fea9dc560e01b815260040160405180910390fd5b6001546040517fb9d808ff0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b9d808ff906118a8908890889088908890600401613d1a565b6020604051808303816000875af11580156118c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118eb9190613ace565b95945050505050565b6000546001600160a01b0316331461191f57604051637fea9dc560e01b815260040160405180910390fd5b60015460405163653434c160e11b81526001600160a01b039091169063ca6869829061195190859085906004016138eb565b600060405180830381600087803b15801561196b57600080fd5b505af115801561197f573d6000803e3d6000fd5b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156119d25750825b905060008267ffffffffffffffff1660011480156119ef5750303b155b9050811580156119fd575080155b15611a34576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a6857845468ff00000000000000001916680100000000000000001785555b611a7133612d31565b611a79612d42565b6006805460ff8816620100000262ffffff1990911661ffff8a16171790558315611ae257845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000546001600160a01b03163314611b1657604051637fea9dc560e01b815260040160405180910390fd5b806007848460405161066b9291906137bf565b6000546001600160a01b03163314611b5457604051637fea9dc560e01b815260040160405180910390fd5b600160048383604051611b689291906137bf565b908152604051908190036020019020805491151560ff199092169190911790555050565b611b94611be3565b6001600160a01b038116611bd7576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161093b565b611be081612cb3565b50565b33611c157f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146114e2576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161093b565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ce47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156114e25760405163703e46dd60e11b815260040160405180910390fd5b611be0611be3565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d70575060408051601f3d908101601f19168201909252611d6d91810190613ace565b60015b611d9857604051634c9c8ce360e01b81526001600160a01b038316600482015260240161093b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611df4576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161093b565b611dfe8383612d4a565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114e25760405163703e46dd60e11b815260040160405180910390fd5b80516000908190815b81811015611e9057848181518110611e6f57611e6f613845565b60200260200101516020015183611e8691906137ac565b9250600101611e55565b50909392505050565b36611ea484806137fb565b84818110611eb457611eb4613845565b9050602002810190611ec6919061385b565b9050600081604051602001611edb9190613e6a565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff611f14858061387b565b87866040518563ffffffff1660e01b8152600401611f359493929190613d1a565b6020604051808303816000875af1158015611f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f789190613ace565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190613f97565b60ff16811061197f5736600061200a608086018661387b565b909250905061201f610ab060208701876137fb565b600761202e606088018861387b565b60405161203c9291906137bf565b9081526020016040518091039020600082825461205991906137cf565b90915550506002546001600160a01b031663bb1da9c961207c606088018861387b565b61208960408a018a613a52565b6040518463ffffffff1660e01b81526004016120a793929190613fb4565b600060405180830381600087803b1580156120c157600080fd5b505af11580156120d5573d6000803e3d6000fd5b5050505060006120e583836106e5565b90506120f086612da0565b6001546001600160a01b03166351a6e113848461210d8a8061387b565b6040518563ffffffff1660e01b815260040161212c949392919061394e565b600060405180830381600087803b15801561214657600080fd5b505af115801561215a573d6000803e3d6000fd5b505060015460405163e038ab5560e01b81526001600160a01b03909116925063e038ab55915061219090869086906004016138eb565b602060405180830381865afa1580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d19190613ace565b6000191480156121df575080155b801561220b5750600583836040516121f89291906137bf565b9081526020016040518091039020544310155b15612249576006546122269062010000900460ff16436137ac565b600584846040516122389291906137bf565b908152604051908190036020019020555b505050505050505050565b3661226260208501856137fb565b8481811061227257612272613845565b90506020028101906122849190613a52565b90506000816040516020016122999190614078565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff6122d2858061387b565b87866040518563ffffffff1660e01b81526004016122f39493929190613d1a565b6020604051808303816000875af1158015612312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123369190613ace565b9050366000612348602086018661387b565b91509150600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c39190613f97565b60ff168310611223576123db82828760400135611650565b600783836040516123ed9291906137bf565b9081526020016040518091039020600082825461240a91906137ac565b90915550506001546001600160a01b03166351a6e113838361242c898061387b565b6040518563ffffffff1660e01b815260040161244b949392919061394e565b600060405180830381600087803b15801561246557600080fd5b505af1158015612479573d6000803e3d6000fd5b505060015460405163653434c160e11b81526001600160a01b03909116925063ca68698291506124af90859085906004016138eb565b600060405180830381600087803b1580156124c957600080fd5b505af11580156124dd573d6000803e3d6000fd5b50506001546040805163e2100f4d60e01b8152600094506001600160a01b03909216925063e2100f4d9161251b91879187918c013590600401613ae7565b600060405180830381865afa158015612538573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125609190810190613c47565b90508060200151600a84846040516125799291906137bf565b908152604051908190036020019020556006546125a09060ff6201000090910416436137ac565b600584846040516125b29291906137bf565b908152604051908190036020019020556002546001600160a01b031663b1f08d6b84846125e260608b018b6140f6565b6040518463ffffffff1660e01b81526004016126009392919061410c565b600060405180830381600087803b15801561261a57600080fd5b505af115801561262e573d6000803e3d6000fd5b505060025460408085015190517f1754a61f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169350631754a61f925061268291879187916004016141b1565b600060405180830381600087803b15801561269c57600080fd5b505af11580156126b0573d6000803e3d6000fd5b50505050505050505050505050565b366126cd60408501856137fb565b848181106126dd576126dd613845565b90506020028101906126ef9190613a68565b90506000816040516020016127049190614205565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff61273d858061387b565b87866040518563ffffffff1660e01b815260040161275e9493929190613d1a565b6020604051808303816000875af115801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613ace565b90503660006127b3602086018661387b565b91509150600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282e9190613f97565b60ff168310611223576001546001600160a01b03166351a6e1138383612854898061387b565b6040518563ffffffff1660e01b8152600401612873949392919061394e565b600060405180830381600087803b15801561288d57600080fd5b505af11580156128a1573d6000803e3d6000fd5b505060015460405163653434c160e11b81526001600160a01b03909116925063ca68698291506128d790859085906004016138eb565b600060405180830381600087803b1580156128f157600080fd5b505af1158015612905573d6000803e3d6000fd5b5050600654612920925062010000900460ff169050436137ac565b600583836040516129329291906137bf565b908152604051908190036020019020555050505050505050565b3661295a60608501856137fb565b8481811061296a5761296a613845565b905060200281019061297c9190613a7e565b90506000816040516020016129919190614269565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff6129ca858061387b565b87866040518563ffffffff1660e01b81526004016129eb9493929190613d1a565b6020604051808303816000875af1158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190613ace565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa79190613f97565b60ff16811061197f576001546001600160a01b03166351a6e113612ace604086018661387b565b612ad8878061387b565b6040518563ffffffff1660e01b8152600401612af7949392919061394e565b600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b50505050505050505050565b36612b3f60808501856137fb565b84818110612b4f57612b4f613845565b9050602002810190612b619190613a52565b9050600081604051602001612b769190614398565b60408051601f1981840301815291905280516020909101206001549091506000906001600160a01b031663b9d808ff612baf858061387b565b87866040518563ffffffff1660e01b8152600401612bd09493929190613d1a565b6020604051808303816000875af1158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190613ace565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613f97565b60ff16811061197f576001546001600160a01b03166351a6e113612ace602086018661387b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b612d39612f92565b611be081612ff9565b6114e2612f92565b612d5382613001565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d9857611dfe8282613085565b6108246130f2565b366000612db0608084018461387b565b91509150600060098383604051612dc89291906137bf565b908152602001604051809103902060008154612de3906137e2565b91829055509050612df4848061387b565b60088585604051612e069291906137bf565b908152604080516020928190038301902060008681529252902091612e2c91908361447c565b50612e3a606085018561387b565b60088585604051612e4c9291906137bf565b908152604080516020928190038301902060008681529252902060030191612e7591908361447c565b508060088484604051612e899291906137bf565b9081526040805160209281900383019020600085815290835290812060010192909255612eb8908601866137fb565b9050905060005b81811015612f515760088585604051612ed99291906137bf565b908152604080516020928190038301902060008681529083522060040190612f03908801886137fb565b83818110612f1357612f13613845565b9050602002810190612f2591906140f6565b815460018101835560009283526020909220909160020201612f47828261453d565b5050600101612ebf565b504360088585604051612f659291906137bf565b90815260200160405180910390206000848152602001908152602001600020600201819055505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166114e2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b94612f92565b806001600160a01b03163b60000361303757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161093b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516130a29190614636565b600060405180830381855af49150503d80600081146130dd576040519150601f19603f3d011682016040523d82523d6000602084013e6130e2565b606091505b50915091506118eb85838361312a565b34156114e2576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261313f5761313a8261319f565b6114c9565b815115801561315657506001600160a01b0384163b155b15613198576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161093b565b50806114c9565b8051156131af5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f8401126131f357600080fd5b50813567ffffffffffffffff81111561320b57600080fd5b60208301915083602082850101111561322357600080fd5b9250929050565b60008060006040848603121561323f57600080fd5b833567ffffffffffffffff81111561325657600080fd5b613262868287016131e1565b909790965060209590950135949350505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156132af576132af613276565b60405290565b6040516080810167ffffffffffffffff811182821017156132af576132af613276565b6040516060810167ffffffffffffffff811182821017156132af576132af613276565b604051601f8201601f1916810167ffffffffffffffff8111828210171561332457613324613276565b604052919050565b600067ffffffffffffffff82111561334657613346613276565b50601f01601f191660200190565b60006133676133628461332c565b6132fb565b905082815283838301111561337b57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126133a357600080fd5b6114c983833560208501613354565b6000602082840312156133c457600080fd5b813567ffffffffffffffff8111156133db57600080fd5b6115b984828501613392565b80356001600160a01b03811681146133fe57600080fd5b919050565b6000806000806080858703121561341957600080fd5b613422856133e7565b9350613430602086016133e7565b925061343e604086016133e7565b915061344c606086016133e7565b905092959194509250565b6000806020838503121561346a57600080fd5b823567ffffffffffffffff81111561348157600080fd5b61348d858286016131e1565b90969095509350505050565b600080604083850312156134ac57600080fd5b6134b5836133e7565b9150602083013567ffffffffffffffff8111156134d157600080fd5b8301601f810185136134e257600080fd5b6134f185823560208401613354565b9150509250929050565b6000806040838503121561350e57600080fd5b823567ffffffffffffffff81111561352557600080fd5b830160a0818603121561353757600080fd5b9150613545602084016133e7565b90509250929050565b60005b83811015613569578181015183820152602001613551565b50506000910152565b6000815180845261358a81602086016020860161354e565b601f01601f19169290920160200192915050565b60006020808352835160a0828501526135ba60c0850182613572565b90508185015160408160408701526040870151606087015260608701519150601f19808785030160808801526135f08484613572565b6080890151888203830160a08a015280518083529195508601935085850190600581901b8601870160005b8281101561365a57848883030184528651805187845261363d88850182613572565b918b0151938b01939093529689019693890193915060010161361b565b509a9950505050505050505050565b60008060006040848603121561367e57600080fd5b833567ffffffffffffffff81111561369557600080fd5b6136a1868287016131e1565b90945092506136b49050602085016133e7565b90509250925092565b6020815260006114c96020830184613572565b600080600080606085870312156136e657600080fd5b843567ffffffffffffffff8111156136fd57600080fd5b613709878288016131e1565b909550935061371c9050602086016133e7565b9396929550929360400135925050565b60ff81168114611be057600080fd5b6000806040838503121561374e57600080fd5b823561ffff8116811461376057600080fd5b915060208301356137708161372c565b809150509250929050565b60006020828403121561378d57600080fd5b6114c9826133e7565b634e487b7160e01b600052601160045260246000fd5b8082018082111561156357611563613796565b8183823760009101908152919050565b8181038181111561156357611563613796565b6000600182016137f4576137f4613796565b5060010190565b6000808335601e1984360301811261381257600080fd5b83018035915067ffffffffffffffff82111561382d57600080fd5b6020019150600581901b360382131561322357600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261387157600080fd5b9190910192915050565b6000808335601e1984360301811261389257600080fd5b83018035915067ffffffffffffffff8211156138ad57600080fd5b60200191503681900382131561322357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006115b96020830184866138c2565b6040815260006139136040830185876138c2565b90506001600160a01b0383166020830152949350505050565b60006020828403121561393e57600080fd5b815180151581146114c957600080fd5b6040815260006139626040830186886138c2565b82810360208401526139758185876138c2565b979650505050505050565b600067ffffffffffffffff82111561399a5761399a613276565b5060051b60200190565b60006139b261336284613980565b80848252602080830192508560051b8501368111156139d057600080fd5b855b81811015613a4657803567ffffffffffffffff808211156139f35760008081fd5b818901915060408236031215613a095760008081fd5b613a1161328c565b823582811115613a215760008081fd5b613a2d36828601613392565b82525091850135858301525085529382019382016139d2565b50919695505050505050565b60008235607e1983360301811261387157600080fd5b60008235605e1983360301811261387157600080fd5b6000823560fe1983360301811261387157600080fd5b600181811c90821680613aa857607f821691505b602082108103613ac857634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613ae057600080fd5b5051919050565b604081526000613afb6040830185876138c2565b9050826020830152949350505050565b67ffffffffffffffff81168114611be057600080fd5b600082601f830112613b3257600080fd5b81516020613b4261336283613980565b82815260059290921b84018101918181019086841115613b6157600080fd5b8286015b84811015613c3c57805167ffffffffffffffff80821115613b865760008081fd5b908801906080828b03601f1901811315613ba05760008081fd5b613ba86132b5565b87840151613bb581613b0b565b815260408481015184811115613bcb5760008081fd5b85019350603f84018d13613bdf5760008081fd5b88840151613bef6133628261332c565b8181528e83838801011115613c045760008081fd5b613c13828c830185890161354e565b838b01525060608581015191830191909152919093015190830152508352918301918301613b65565b509695505050505050565b600060208284031215613c5957600080fd5b815167ffffffffffffffff80821115613c7157600080fd5b9083019060608286031215613c8557600080fd5b613c8d6132d8565b8251815260208301516020820152604083015182811115613cad57600080fd5b929092019160408387031215613cc257600080fd5b613cca61328c565b835183811115613cd957600080fd5b613ce588828701613b21565b825250602084015183811115613cfa57600080fd5b613d0688828701613b21565b602083015250604082015295945050505050565b606081526000613d2e6060830186886138c2565b6001600160a01b03949094166020830152506040015292915050565b6000808335601e19843603018112613d6157600080fd5b830160208101925035905067ffffffffffffffff811115613d8157600080fd5b80360382131561322357600080fd5b6000808335601e19843603018112613da757600080fd5b830160208101925035905067ffffffffffffffff811115613dc757600080fd5b8060051b360382131561322357600080fd5b60008235603e19833603018112613def57600080fd5b90910192915050565b60008235607e19833603018112613def57600080fd5b60008135613e1b81613b0b565b67ffffffffffffffff168352613e346020830183613d4a565b60806020860152613e496080860182846138c2565b91505060408301356040850152606083013560608501528091505092915050565b60006020808352613e7b8485613d4a565b60a083860152613e8f60c0860182846138c2565b915050613e9e82860186613d90565b601f19604081888603016040890152848386528686019050868460051b8701018560005b86811015613f135785898403018452613edb8289613dd9565b613ee58182613d4a565b878652613ef588870182846138c2565b928d0135958d019590955250938a0193925090890190600101613ec2565b5050613f2260408c018c613df8565b9750838a82030160608b0152613f388189613e0e565b9750505050613f4a6060890189613d4a565b9450925080878603016080880152613f638585856138c2565b9450613f726080890189613d4a565b94509250808786030160a08801525050613f8d8383836138c2565b9695505050505050565b600060208284031215613fa957600080fd5b81516114c98161372c565b604081526000613fc86040830185876138c2565b8281036020840152613f8d8185613e0e565b6000838385526020808601955060208560051b8301018460005b8781101561402a57848303601f1901895261401883614013848a613df8565b613e0e565b98840198925090830190600101613ff4565b5090979650505050505050565b60006140438283613d90565b60408552614055604086018284613fda565b9150506140656020840184613d90565b8583036020870152613f8d838284613fda565b6020815260006140888384613d4a565b6080602085015261409d60a0850182846138c2565b9150506140ad6020850185613d4a565b601f19808685030160408701526140c58483856138c2565b9350604087013560608701526140de6060880188613dd9565b92508086850301608087015250506118eb8282614037565b60008235603e1983360301811261387157600080fd5b6040815260006141206040830185876138c2565b8281036020840152613f8d8185614037565b600082825180855260208086019550808260051b84010181860160005b8481101561402a57601f198684030189528151608067ffffffffffffffff825116855285820151818787015261418782870182613572565b6040848101519088015260609384015193909601929092525050978301979083019060010161414f565b6040815260006141c56040830185876138c2565b82810360208401528351604082526141e06040830182614132565b9050602085015182820360208401526141f98282614132565b98975050505050505050565b6020815260006142158384613d4a565b6060602085015261422a6080850182846138c2565b91505061423a6020850185613d4a565b848303601f190160408601526142518382846138c2565b92505050604084013560608401528091505092915050565b6020815260006142798384613d4a565b610100806020860152614291610120860183856138c2565b92506142a06020870187613d4a565b9250601f19808786030160408801526142ba8585846138c2565b94506142c96040890189613d4a565b94509150808786030160608801526142e28585846138c2565b94506142f16060890189613d4a565b945091508087860301608088015261430a8585846138c2565b94506143196080890189613df8565b9350808786030160a088015261432f8585613e0e565b945061433e60a0890189613d4a565b94509150808786030160c08801526143578585846138c2565b945061436660c0890189613d4a565b94509150808786030160e0880152506143808484836138c2565b93505060e08601358186015250508091505092915050565b6020815260006143a88384613d4a565b608060208501526143bd60a0850182846138c2565b9150506143cd6020850185613d4a565b601f19808685030160408701526143e58483856138c2565b93506143f46040880188613d4a565b935091508086850301606087015261440d8484846138c2565b935061441c6060880188613df8565b92508086850301608087015250506118eb8282613e0e565b601f821115611dfe576000816000526020600020601f850160051c8101602086101561445d5750805b601f850160051c820191505b8181101561197f57828155600101614469565b67ffffffffffffffff83111561449457614494613276565b6144a8836144a28354613a94565b83614434565b6000601f8411600181146144dc57600085156144c45750838201355b600019600387901b1c1916600186901b178355614536565b600083815260209020601f19861690835b8281101561450d57868501358255602094850194600190920191016144ed565b508682101561452a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8135601e1983360301811261455157600080fd5b8201803567ffffffffffffffff81111561456a57600080fd5b6020813603818401131561457d57600080fd5b6145918261458b8654613a94565b86614434565b6000601f8311600181146145c757600084156145af57508482018301355b600019600386901b1c1916600185901b178655614624565b600086815260209020601f19851690835b828110156145f95787850186013582559385019360019091019085016145d8565b50858210156146185760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b6000825161387181846020870161354e56fea2646970667358221220a7150f0ad21ea54c32659daf39cf784072552aa077f59f077b4d27eb7ee331d864736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` -var SignedBatchesArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"SignedBatches","sourceName":"contracts/SignedBatches.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getConfirmedBatch","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string[]","name":"multisigSignatures","type":"string[]"},{"internalType":"string[]","name":"feePayerMultisigSignatures","type":"string[]"}],"internalType":"struct IBridgeStructs.ConfirmedBatch","name":"batch","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"},{"internalType":"address","name":"addr","type":"address"}],"name":"isBatchAlreadySubmittedBy","outputs":[{"internalType":"bool","name":"ok","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"lastConfirmedBatch","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"rawTransaction","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"},{"internalType":"address","name":"_claimsHelperAddress","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"destinationChainId","type":"string"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"string","name":"feePayerMultisigSignature","type":"string"},{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.SignedBatch","name":"_signedBatch","type":"tuple"},{"internalType":"address","name":"_caller","type":"address"}],"name":"submitSignedBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516127fd6200010460003960008181610b2001528181610b490152610ccc01526127fd6000f3fe6080604052600436106100c75760003560e01c8063ad3cb1cc11610074578063d52c54c41161004e578063d52c54c414610242578063df04b2ae1461026f578063f2fde38b1461029f57600080fd5b8063ad3cb1cc146101ac578063b52d326c14610202578063d254f6f21461022257600080fd5b8063715018a6116100a5578063715018a61461013b5780638129fc1c146101505780638da5cb5b1461016557600080fd5b80631c8f2775146100cc5780634f1ef2861461010357806352d1902d14610118575b600080fd5b3480156100d857600080fd5b506100ec6100e7366004611b47565b6102bf565b6040516100fa929190611bd4565b60405180910390f35b610116610111366004611c09565b61036f565b005b34801561012457600080fd5b5061012d61038e565b6040519081526020016100fa565b34801561014757600080fd5b506101166103bd565b34801561015c57600080fd5b506101166103d1565b34801561017157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100fa565b3480156101b857600080fd5b506101f56040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100fa9190611c6b565b34801561020e57600080fd5b5061011661021d366004611c7e565b610515565b34801561022e57600080fd5b5061011661023d366004611cc1565b610569565b34801561024e57600080fd5b5061026261025d366004611d5e565b610756565b6040516100fa9190611dfa565b34801561027b57600080fd5b5061028f61028a366004611e5c565b610a03565b60405190151581526020016100fa565b3480156102ab57600080fd5b506101166102ba366004611ea7565b610ab9565b8051602081830181018051600582529282019190930120915280546001820180549192916102ec90611ec2565b80601f016020809104026020016040519081016040528092919081815260200182805461031890611ec2565b80156103655780601f1061033a57610100808354040283529160200191610365565b820191906000526020600020905b81548152906001019060200180831161034857829003601f168201915b5050505050905082565b610377610b15565b61038082610bcc565b61038a8282610bd4565b5050565b6000610398610cc1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6103c5610d0a565b6103cf6000610d7e565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561041c5750825b905060008267ffffffffffffffff1660011480156104395750303b155b905081158015610447575080155b1561047e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156104b257845468ff00000000000000001916680100000000000000001785555b6104bb33610dfc565b6104c3610e0d565b831561050e57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b61051d610d0a565b600080546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600180549385169382169390931790925560028054919093169116179055565b6000546001600160a01b031633146105ad576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660006105bd6020850185611efc565b909250905060006105ce8535610e15565b90506000600584846040516105e4929190611f43565b908152604051908190036020019020549050610601816001611f53565b86351461061057505050505050565b6001546040517f9af06cd90000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690639af06cd99061065b9085908990600401611f74565b602060405180830381865afa158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190611f9f565b156106a957505050505050565b6001546040517f4a5d2b190000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a5d2b19906106f690879087908790600401611fea565b602060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190611f9f565b1561074457505050505050565b61074e8683610eb5565b505050505050565b6107816040518060800160405280600081526020016060815260200160608152602001606081525090565b60058383604051610793929190611f43565b9081526020016040518091039020604051806080016040529081600082015481526020016001820180546107c690611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546107f290611ec2565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561091957838290600052602060002001805461088c90611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611ec2565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b50505050508152602001906001019061086d565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156109f257838290600052602060002001805461096590611ec2565b80601f016020809104026020016040519081016040528092919081815260200182805461099190611ec2565b80156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081526020019060010190610946565b505050508152505090505b92915050565b6001546040516000916001600160a01b031690639af06cd990610a5090600590610a309089908990611f43565b90815260405190819003602001902054610a4b906001611f53565b610e15565b846040518363ffffffff1660e01b8152600401610a6e929190611f74565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611f9f565b90505b9392505050565b610ac1610d0a565b6001600160a01b038116610b09576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610b1281610d7e565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610bae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ba27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156103cf5760405163703e46dd60e11b815260040160405180910390fd5b610b12610d0a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c2e575060408051601f3d908101601f19168201909252610c2b9181019061201a565b60015b610c5657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b00565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610cb2576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610b00565b610cbc8383611612565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103cf5760405163703e46dd60e11b815260040160405180910390fd5b33610d3c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146103cf576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610b00565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b610e04611668565b610b12816116cf565b6103cf611668565b60606000610e22836116d7565b600101905060008167ffffffffffffffff811115610e4257610e42611a5f565b6040519080825280601f01601f191660200182016040528015610e6c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e7657509392505050565b60006040518060c0016040528084600001358152602001848060200190610edc9190611efc565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610f236040860186611efc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060a0850135602082015260c08501356040820152606001610f7e60e0860186612033565b610f8790612165565b8152509050600081604051602001610f9f919061226a565b6040516020818303038152906040528051906020012090506003848060200190610fc99190611efc565b604051610fd7929190611f43565b9081526040805160209281900383019020600084815292529020610ffe6060860186611efc565b8254600181018455600093845260209093209092019161101e918361234c565b50600461102e6020860186611efc565b60405161103c929190611f43565b90815260408051602092819003830190206000848152925290206110636080860186611efc565b82546001810184556000938452602090932090920191611083918361234c565b506001546040517fb9d808ff0000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063b9d808ff906110d29087903390879060040161240c565b6020604051808303816000875af11580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611115919061201a565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118e919061243a565b60ff16811061050e576001546040517f64d06b050000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906364d06b05906111e09088906004016125fb565b600060405180830381600087803b1580156111fa57600080fd5b505af115801561120e573d6000803e3d6000fd5b50506001546001600160a01b031691506351a6e11390506112326020880188611efc565b876040518463ffffffff1660e01b815260040161125193929190611fea565b600060405180830381600087803b15801561126b57600080fd5b505af115801561127f573d6000803e3d6000fd5b50505050604051806080016040528060058780602001906112a09190611efc565b6040516112ae929190611f43565b908152604051908190036020019020546112c9906001611f53565b81526020016112db6040880188611efc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060209081019060039061132790890189611efc565b604051611335929190611f43565b9081526040805191829003602090810183206000888152908252828120805480840286018401909452838552929184015b8282101561141257838290600052602060002001805461138590611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546113b190611ec2565b80156113fe5780601f106113d3576101008083540402835291602001916113fe565b820191906000526020600020905b8154815290600101906020018083116113e157829003601f168201915b505050505081526020019060010190611366565b505050508152602001600487806020019061142d9190611efc565b60405161143b929190611f43565b9081526040805191829003602090810183206000888152908252828120805480840286018401909452838552929184015b8282101561151857838290600052602060002001805461148b90611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546114b790611ec2565b80156115045780601f106114d957610100808354040283529160200191611504565b820191906000526020600020905b8154815290600101906020018083116114e757829003601f168201915b50505050508152602001906001019061146c565b505050915250600561152d6020880188611efc565b60405161153b929190611f43565b908152604051602091819003820190208251815590820151600182019061156290826126e1565b506040820151805161157e9160028401916020909101906119a2565b506060820151805161159a9160038401916020909101906119a2565b50506001546001600160a01b03169050630b5023326115bc6020880188611efc565b6040518363ffffffff1660e01b81526004016115d99291906127a1565b600060405180830381600087803b1580156115f357600080fd5b505af1158015611607573d6000803e3d6000fd5b505050505050505050565b61161b826117b9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561166057610cbc828261183d565b61038a6118b3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166103cf576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac1611668565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611720577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061174c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061176a57662386f26fc10000830492506010015b6305f5e1008310611782576305f5e100830492506008015b612710831061179657612710830492506004015b606483106117a8576064830492506002015b600a83106109fd5760010192915050565b806001600160a01b03163b6000036117ef57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b00565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161185a91906127b5565b600060405180830381855af49150503d8060008114611895576040519150601f19603f3d011682016040523d82523d6000602084013e61189a565b606091505b50915091506118aa8583836118eb565b95945050505050565b34156103cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611900576118fb82611960565b610ab2565b815115801561191757506001600160a01b0384163b155b15611959576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610b00565b5080610ab2565b8051156119705780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8280548282559060005260206000209081019282156119e8579160200282015b828111156119e857825182906119d890826126e1565b50916020019190600101906119c2565b506119f49291506119f8565b5090565b808211156119f4576000611a0c8282611a15565b506001016119f8565b508054611a2190611ec2565b6000825580601f10611a31575050565b601f016020900490600052602060002090810190610b1291905b808211156119f45760008155600101611a4b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715611a9857611a98611a5f565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611ac757611ac7611a5f565b604052919050565b600067ffffffffffffffff831115611ae957611ae9611a5f565b611afc601f8401601f1916602001611a9e565b9050828152838383011115611b1057600080fd5b828260208301376000602084830101529392505050565b600082601f830112611b3857600080fd5b610ab283833560208501611acf565b600060208284031215611b5957600080fd5b813567ffffffffffffffff811115611b7057600080fd5b611b7c84828501611b27565b949350505050565b60005b83811015611b9f578181015183820152602001611b87565b50506000910152565b60008151808452611bc0816020860160208601611b84565b601f01601f19169290920160200192915050565b828152604060208201526000610aaf6040830184611ba8565b80356001600160a01b0381168114611c0457600080fd5b919050565b60008060408385031215611c1c57600080fd5b611c2583611bed565b9150602083013567ffffffffffffffff811115611c4157600080fd5b8301601f81018513611c5257600080fd5b611c6185823560208401611acf565b9150509250929050565b602081526000610ab26020830184611ba8565b600080600060608486031215611c9357600080fd5b611c9c84611bed565b9250611caa60208501611bed565b9150611cb860408501611bed565b90509250925092565b60008060408385031215611cd457600080fd5b823567ffffffffffffffff811115611ceb57600080fd5b83016101008186031215611cfe57600080fd5b9150611d0c60208401611bed565b90509250929050565b60008083601f840112611d2757600080fd5b50813567ffffffffffffffff811115611d3f57600080fd5b602083019150836020828501011115611d5757600080fd5b9250929050565b60008060208385031215611d7157600080fd5b823567ffffffffffffffff811115611d8857600080fd5b611d9485828601611d15565b90969095509350505050565b60008282518085526020808601955060208260051b8401016020860160005b84811015611ded57601f19868403018952611ddb838351611ba8565b98840198925090830190600101611dbf565b5090979650505050505050565b60208152815160208201526000602083015160806040840152611e2060a0840182611ba8565b90506040840151601f1980858403016060860152611e3e8383611da0565b92506060860151915080858403016080860152506118aa8282611da0565b600080600060408486031215611e7157600080fd5b833567ffffffffffffffff811115611e8857600080fd5b611e9486828701611d15565b9094509250611cb8905060208501611bed565b600060208284031215611eb957600080fd5b610ab282611bed565b600181811c90821680611ed657607f821691505b602082108103611ef657634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112611f1357600080fd5b83018035915067ffffffffffffffff821115611f2e57600080fd5b602001915036819003821315611d5757600080fd5b8183823760009101908152919050565b808201808211156109fd57634e487b7160e01b600052601160045260246000fd5b604081526000611f876040830185611ba8565b90506001600160a01b03831660208301529392505050565b600060208284031215611fb157600080fd5b81518015158114610ab257600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611ffe604083018587611fc1565b82810360208401526120108185611ba8565b9695505050505050565b60006020828403121561202c57600080fd5b5051919050565b60008235603e1983360301811261204957600080fd5b9190910192915050565b803567ffffffffffffffff81168114611c0457600080fd5b600082601f83011261207c57600080fd5b8135602067ffffffffffffffff8083111561209957612099611a5f565b8260051b6120a8838201611a9e565b93845285810183019383810190888611156120c257600080fd5b84880192505b85831015612159578235848111156120e05760008081fd5b88016080818b03601f19018113156120f85760008081fd5b612100611a75565b61210b888401612053565b8152604080840135888111156121215760008081fd5b61212f8e8b83880101611b27565b838b01525060608481013591830191909152919092013590820152825291840191908401906120c8565b98975050505050505050565b60006040823603121561217757600080fd5b6040516040810167ffffffffffffffff828210818311171561219b5761219b611a5f565b8160405284359150808211156121b057600080fd5b6121bc3683870161206b565b835260208501359150808211156121d257600080fd5b506121df3682860161206b565b60208301525092915050565b600082825180855260208086019550808260051b84010181860160005b84811015611ded57601f198684030189528151608067ffffffffffffffff825116855285820151818787015261224082870182611ba8565b60408481015190880152606093840151939096019290925250509783019790830190600101612208565b60208152815160208201526000602083015160c0604084015261229060e0840182611ba8565b90506040840151601f19808584030160608601526122ae8383611ba8565b925060608601516080860152608086015160a086015260a08601519150808584030160c0860152508051604083526122e960408401826121eb565b905060208201519150828103602084015261201081836121eb565b601f821115610cbc576000816000526020600020601f850160051c8101602086101561232d5750805b601f850160051c820191505b8181101561074e57828155600101612339565b67ffffffffffffffff83111561236457612364611a5f565b612378836123728354611ec2565b83612304565b6000601f8411600181146123ac57600085156123945750838201355b600019600387901b1c1916600186901b17835561050e565b600083815260209020601f19861690835b828110156123dd57868501358255602094850194600190920191016123bd565b50868210156123fa5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60608152600061241f6060830186611ba8565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561244c57600080fd5b815160ff81168114610ab257600080fd5b6000808335601e1984360301811261247457600080fd5b830160208101925035905067ffffffffffffffff81111561249457600080fd5b803603821315611d5757600080fd5b60008235603e198336030181126124b957600080fd5b90910192915050565b6000808335601e198436030181126124d957600080fd5b830160208101925035905067ffffffffffffffff8111156124f957600080fd5b8060051b3603821315611d5757600080fd5b60008383855260208086019550808560051b830101846000805b888110156125ac57858403601f19018a52823536899003607e1901811261254a578283fd5b8801608067ffffffffffffffff61256083612053565b16865261256f8783018361245d565b82898901526125818389018284611fc1565b604085810135908a015260609485013594909801939093525050509884019891840191600101612525565b509198975050505050505050565b60006125c682836124c2565b604085526125d860408601828461250b565b9150506125e860208401846124c2565b858303602087015261201083828461250b565b60208152813560208201526000612615602084018461245d565b61010080604086015261262d61012086018385611fc1565b925061263c604087018761245d565b9250601f1980878603016060880152612656858584611fc1565b9450612665606089018961245d565b945091508087860301608088015261267e858584611fc1565b945061268d608089018961245d565b94509150808786030160a08801526126a6858584611fc1565b945060a088013560c088015260c088013560e08801526126c960e08901896124a3565b93508087860301838801525050506118aa82826125ba565b815167ffffffffffffffff8111156126fb576126fb611a5f565b61270f816127098454611ec2565b84612304565b602080601f831160018114612744576000841561272c5750858301515b600019600386901b1c1916600185901b17855561074e565b600085815260208120601f198616915b8281101561277357888601518255948401946001909101908401612754565b50858210156127915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000610aaf602083018486611fc1565b60008251612049818460208701611b8456fea264697066735822122044793a05ab85e7a8be11fa852e9b0c44f3f8547904d6c0c13cab46e25fdaf00664736f6c63430008180033","deployedBytecode":"0x6080604052600436106100c75760003560e01c8063ad3cb1cc11610074578063d52c54c41161004e578063d52c54c414610242578063df04b2ae1461026f578063f2fde38b1461029f57600080fd5b8063ad3cb1cc146101ac578063b52d326c14610202578063d254f6f21461022257600080fd5b8063715018a6116100a5578063715018a61461013b5780638129fc1c146101505780638da5cb5b1461016557600080fd5b80631c8f2775146100cc5780634f1ef2861461010357806352d1902d14610118575b600080fd5b3480156100d857600080fd5b506100ec6100e7366004611b47565b6102bf565b6040516100fa929190611bd4565b60405180910390f35b610116610111366004611c09565b61036f565b005b34801561012457600080fd5b5061012d61038e565b6040519081526020016100fa565b34801561014757600080fd5b506101166103bd565b34801561015c57600080fd5b506101166103d1565b34801561017157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100fa565b3480156101b857600080fd5b506101f56040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100fa9190611c6b565b34801561020e57600080fd5b5061011661021d366004611c7e565b610515565b34801561022e57600080fd5b5061011661023d366004611cc1565b610569565b34801561024e57600080fd5b5061026261025d366004611d5e565b610756565b6040516100fa9190611dfa565b34801561027b57600080fd5b5061028f61028a366004611e5c565b610a03565b60405190151581526020016100fa565b3480156102ab57600080fd5b506101166102ba366004611ea7565b610ab9565b8051602081830181018051600582529282019190930120915280546001820180549192916102ec90611ec2565b80601f016020809104026020016040519081016040528092919081815260200182805461031890611ec2565b80156103655780601f1061033a57610100808354040283529160200191610365565b820191906000526020600020905b81548152906001019060200180831161034857829003601f168201915b5050505050905082565b610377610b15565b61038082610bcc565b61038a8282610bd4565b5050565b6000610398610cc1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6103c5610d0a565b6103cf6000610d7e565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561041c5750825b905060008267ffffffffffffffff1660011480156104395750303b155b905081158015610447575080155b1561047e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156104b257845468ff00000000000000001916680100000000000000001785555b6104bb33610dfc565b6104c3610e0d565b831561050e57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b61051d610d0a565b600080546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600180549385169382169390931790925560028054919093169116179055565b6000546001600160a01b031633146105ad576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660006105bd6020850185611efc565b909250905060006105ce8535610e15565b90506000600584846040516105e4929190611f43565b908152604051908190036020019020549050610601816001611f53565b86351461061057505050505050565b6001546040517f9af06cd90000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690639af06cd99061065b9085908990600401611f74565b602060405180830381865afa158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190611f9f565b156106a957505050505050565b6001546040517f4a5d2b190000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a5d2b19906106f690879087908790600401611fea565b602060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190611f9f565b1561074457505050505050565b61074e8683610eb5565b505050505050565b6107816040518060800160405280600081526020016060815260200160608152602001606081525090565b60058383604051610793929190611f43565b9081526020016040518091039020604051806080016040529081600082015481526020016001820180546107c690611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546107f290611ec2565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561091957838290600052602060002001805461088c90611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611ec2565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b50505050508152602001906001019061086d565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156109f257838290600052602060002001805461096590611ec2565b80601f016020809104026020016040519081016040528092919081815260200182805461099190611ec2565b80156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081526020019060010190610946565b505050508152505090505b92915050565b6001546040516000916001600160a01b031690639af06cd990610a5090600590610a309089908990611f43565b90815260405190819003602001902054610a4b906001611f53565b610e15565b846040518363ffffffff1660e01b8152600401610a6e929190611f74565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611f9f565b90505b9392505050565b610ac1610d0a565b6001600160a01b038116610b09576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610b1281610d7e565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610bae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ba27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156103cf5760405163703e46dd60e11b815260040160405180910390fd5b610b12610d0a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c2e575060408051601f3d908101601f19168201909252610c2b9181019061201a565b60015b610c5657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b00565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610cb2576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610b00565b610cbc8383611612565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103cf5760405163703e46dd60e11b815260040160405180910390fd5b33610d3c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146103cf576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610b00565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b610e04611668565b610b12816116cf565b6103cf611668565b60606000610e22836116d7565b600101905060008167ffffffffffffffff811115610e4257610e42611a5f565b6040519080825280601f01601f191660200182016040528015610e6c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e7657509392505050565b60006040518060c0016040528084600001358152602001848060200190610edc9190611efc565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610f236040860186611efc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060a0850135602082015260c08501356040820152606001610f7e60e0860186612033565b610f8790612165565b8152509050600081604051602001610f9f919061226a565b6040516020818303038152906040528051906020012090506003848060200190610fc99190611efc565b604051610fd7929190611f43565b9081526040805160209281900383019020600084815292529020610ffe6060860186611efc565b8254600181018455600093845260209093209092019161101e918361234c565b50600461102e6020860186611efc565b60405161103c929190611f43565b90815260408051602092819003830190206000848152925290206110636080860186611efc565b82546001810184556000938452602090932090920191611083918361234c565b506001546040517fb9d808ff0000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063b9d808ff906110d29087903390879060040161240c565b6020604051808303816000875af11580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611115919061201a565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118e919061243a565b60ff16811061050e576001546040517f64d06b050000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906364d06b05906111e09088906004016125fb565b600060405180830381600087803b1580156111fa57600080fd5b505af115801561120e573d6000803e3d6000fd5b50506001546001600160a01b031691506351a6e11390506112326020880188611efc565b876040518463ffffffff1660e01b815260040161125193929190611fea565b600060405180830381600087803b15801561126b57600080fd5b505af115801561127f573d6000803e3d6000fd5b50505050604051806080016040528060058780602001906112a09190611efc565b6040516112ae929190611f43565b908152604051908190036020019020546112c9906001611f53565b81526020016112db6040880188611efc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060209081019060039061132790890189611efc565b604051611335929190611f43565b9081526040805191829003602090810183206000888152908252828120805480840286018401909452838552929184015b8282101561141257838290600052602060002001805461138590611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546113b190611ec2565b80156113fe5780601f106113d3576101008083540402835291602001916113fe565b820191906000526020600020905b8154815290600101906020018083116113e157829003601f168201915b505050505081526020019060010190611366565b505050508152602001600487806020019061142d9190611efc565b60405161143b929190611f43565b9081526040805191829003602090810183206000888152908252828120805480840286018401909452838552929184015b8282101561151857838290600052602060002001805461148b90611ec2565b80601f01602080910402602001604051908101604052809291908181526020018280546114b790611ec2565b80156115045780601f106114d957610100808354040283529160200191611504565b820191906000526020600020905b8154815290600101906020018083116114e757829003601f168201915b50505050508152602001906001019061146c565b505050915250600561152d6020880188611efc565b60405161153b929190611f43565b908152604051602091819003820190208251815590820151600182019061156290826126e1565b506040820151805161157e9160028401916020909101906119a2565b506060820151805161159a9160038401916020909101906119a2565b50506001546001600160a01b03169050630b5023326115bc6020880188611efc565b6040518363ffffffff1660e01b81526004016115d99291906127a1565b600060405180830381600087803b1580156115f357600080fd5b505af1158015611607573d6000803e3d6000fd5b505050505050505050565b61161b826117b9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561166057610cbc828261183d565b61038a6118b3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166103cf576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac1611668565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611720577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061174c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061176a57662386f26fc10000830492506010015b6305f5e1008310611782576305f5e100830492506008015b612710831061179657612710830492506004015b606483106117a8576064830492506002015b600a83106109fd5760010192915050565b806001600160a01b03163b6000036117ef57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b00565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161185a91906127b5565b600060405180830381855af49150503d8060008114611895576040519150601f19603f3d011682016040523d82523d6000602084013e61189a565b606091505b50915091506118aa8583836118eb565b95945050505050565b34156103cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611900576118fb82611960565b610ab2565b815115801561191757506001600160a01b0384163b155b15611959576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610b00565b5080610ab2565b8051156119705780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8280548282559060005260206000209081019282156119e8579160200282015b828111156119e857825182906119d890826126e1565b50916020019190600101906119c2565b506119f49291506119f8565b5090565b808211156119f4576000611a0c8282611a15565b506001016119f8565b508054611a2190611ec2565b6000825580601f10611a31575050565b601f016020900490600052602060002090810190610b1291905b808211156119f45760008155600101611a4b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715611a9857611a98611a5f565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611ac757611ac7611a5f565b604052919050565b600067ffffffffffffffff831115611ae957611ae9611a5f565b611afc601f8401601f1916602001611a9e565b9050828152838383011115611b1057600080fd5b828260208301376000602084830101529392505050565b600082601f830112611b3857600080fd5b610ab283833560208501611acf565b600060208284031215611b5957600080fd5b813567ffffffffffffffff811115611b7057600080fd5b611b7c84828501611b27565b949350505050565b60005b83811015611b9f578181015183820152602001611b87565b50506000910152565b60008151808452611bc0816020860160208601611b84565b601f01601f19169290920160200192915050565b828152604060208201526000610aaf6040830184611ba8565b80356001600160a01b0381168114611c0457600080fd5b919050565b60008060408385031215611c1c57600080fd5b611c2583611bed565b9150602083013567ffffffffffffffff811115611c4157600080fd5b8301601f81018513611c5257600080fd5b611c6185823560208401611acf565b9150509250929050565b602081526000610ab26020830184611ba8565b600080600060608486031215611c9357600080fd5b611c9c84611bed565b9250611caa60208501611bed565b9150611cb860408501611bed565b90509250925092565b60008060408385031215611cd457600080fd5b823567ffffffffffffffff811115611ceb57600080fd5b83016101008186031215611cfe57600080fd5b9150611d0c60208401611bed565b90509250929050565b60008083601f840112611d2757600080fd5b50813567ffffffffffffffff811115611d3f57600080fd5b602083019150836020828501011115611d5757600080fd5b9250929050565b60008060208385031215611d7157600080fd5b823567ffffffffffffffff811115611d8857600080fd5b611d9485828601611d15565b90969095509350505050565b60008282518085526020808601955060208260051b8401016020860160005b84811015611ded57601f19868403018952611ddb838351611ba8565b98840198925090830190600101611dbf565b5090979650505050505050565b60208152815160208201526000602083015160806040840152611e2060a0840182611ba8565b90506040840151601f1980858403016060860152611e3e8383611da0565b92506060860151915080858403016080860152506118aa8282611da0565b600080600060408486031215611e7157600080fd5b833567ffffffffffffffff811115611e8857600080fd5b611e9486828701611d15565b9094509250611cb8905060208501611bed565b600060208284031215611eb957600080fd5b610ab282611bed565b600181811c90821680611ed657607f821691505b602082108103611ef657634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112611f1357600080fd5b83018035915067ffffffffffffffff821115611f2e57600080fd5b602001915036819003821315611d5757600080fd5b8183823760009101908152919050565b808201808211156109fd57634e487b7160e01b600052601160045260246000fd5b604081526000611f876040830185611ba8565b90506001600160a01b03831660208301529392505050565b600060208284031215611fb157600080fd5b81518015158114610ab257600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611ffe604083018587611fc1565b82810360208401526120108185611ba8565b9695505050505050565b60006020828403121561202c57600080fd5b5051919050565b60008235603e1983360301811261204957600080fd5b9190910192915050565b803567ffffffffffffffff81168114611c0457600080fd5b600082601f83011261207c57600080fd5b8135602067ffffffffffffffff8083111561209957612099611a5f565b8260051b6120a8838201611a9e565b93845285810183019383810190888611156120c257600080fd5b84880192505b85831015612159578235848111156120e05760008081fd5b88016080818b03601f19018113156120f85760008081fd5b612100611a75565b61210b888401612053565b8152604080840135888111156121215760008081fd5b61212f8e8b83880101611b27565b838b01525060608481013591830191909152919092013590820152825291840191908401906120c8565b98975050505050505050565b60006040823603121561217757600080fd5b6040516040810167ffffffffffffffff828210818311171561219b5761219b611a5f565b8160405284359150808211156121b057600080fd5b6121bc3683870161206b565b835260208501359150808211156121d257600080fd5b506121df3682860161206b565b60208301525092915050565b600082825180855260208086019550808260051b84010181860160005b84811015611ded57601f198684030189528151608067ffffffffffffffff825116855285820151818787015261224082870182611ba8565b60408481015190880152606093840151939096019290925250509783019790830190600101612208565b60208152815160208201526000602083015160c0604084015261229060e0840182611ba8565b90506040840151601f19808584030160608601526122ae8383611ba8565b925060608601516080860152608086015160a086015260a08601519150808584030160c0860152508051604083526122e960408401826121eb565b905060208201519150828103602084015261201081836121eb565b601f821115610cbc576000816000526020600020601f850160051c8101602086101561232d5750805b601f850160051c820191505b8181101561074e57828155600101612339565b67ffffffffffffffff83111561236457612364611a5f565b612378836123728354611ec2565b83612304565b6000601f8411600181146123ac57600085156123945750838201355b600019600387901b1c1916600186901b17835561050e565b600083815260209020601f19861690835b828110156123dd57868501358255602094850194600190920191016123bd565b50868210156123fa5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60608152600061241f6060830186611ba8565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561244c57600080fd5b815160ff81168114610ab257600080fd5b6000808335601e1984360301811261247457600080fd5b830160208101925035905067ffffffffffffffff81111561249457600080fd5b803603821315611d5757600080fd5b60008235603e198336030181126124b957600080fd5b90910192915050565b6000808335601e198436030181126124d957600080fd5b830160208101925035905067ffffffffffffffff8111156124f957600080fd5b8060051b3603821315611d5757600080fd5b60008383855260208086019550808560051b830101846000805b888110156125ac57858403601f19018a52823536899003607e1901811261254a578283fd5b8801608067ffffffffffffffff61256083612053565b16865261256f8783018361245d565b82898901526125818389018284611fc1565b604085810135908a015260609485013594909801939093525050509884019891840191600101612525565b509198975050505050505050565b60006125c682836124c2565b604085526125d860408601828461250b565b9150506125e860208401846124c2565b858303602087015261201083828461250b565b60208152813560208201526000612615602084018461245d565b61010080604086015261262d61012086018385611fc1565b925061263c604087018761245d565b9250601f1980878603016060880152612656858584611fc1565b9450612665606089018961245d565b945091508087860301608088015261267e858584611fc1565b945061268d608089018961245d565b94509150808786030160a08801526126a6858584611fc1565b945060a088013560c088015260c088013560e08801526126c960e08901896124a3565b93508087860301838801525050506118aa82826125ba565b815167ffffffffffffffff8111156126fb576126fb611a5f565b61270f816127098454611ec2565b84612304565b602080601f831160018114612744576000841561272c5750858301515b600019600386901b1c1916600185901b17855561074e565b600085815260208120601f198616915b8281101561277357888601518255948401946001909101908401612754565b50858210156127915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000610aaf602083018486611fc1565b60008251612049818460208701611b8456fea264697066735822122044793a05ab85e7a8be11fa852e9b0c44f3f8547904d6c0c13cab46e25fdaf00664736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` -var SlotsArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"Slots","sourceName":"contracts/Slots.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"chainID","type":"string"}],"name":"getLastObservedBlock","outputs":[{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock","name":"cb","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"chainID","type":"string"},{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock[]","name":"blocks","type":"tuple[]"},{"internalType":"address","name":"_caller","type":"address"}],"name":"updateBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516114c86100fd6000396000818161089c015281816108c50152610a4801526114c86000f3fe6080604052600436106100b15760003560e01c80638da5cb5b11610069578063e87c28a71161004e578063e87c28a7146101eb578063ecc155dd1461020b578063f2fde38b1461022b57600080fd5b80638da5cb5b1461014e578063ad3cb1cc1461019557600080fd5b806352d1902d1161009a57806352d1902d14610101578063715018a6146101245780638129fc1c1461013957600080fd5b80632175c3f7146100b65780634f1ef286146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004610e8b565b61024b565b6040516100e39190610f1d565b60405180910390f35b6100ff6100fa366004610f8b565b61033a565b005b34801561010d57600080fd5b50610116610359565b6040519081526020016100e3565b34801561013057600080fd5b506100ff610388565b34801561014557600080fd5b506100ff61039c565b34801561015a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100e3565b3480156101a157600080fd5b506101de6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100e3919061104d565b3480156101f757600080fd5b506100ff610206366004611060565b6104e0565b34801561021757600080fd5b506100ff610226366004611093565b610523565b34801561023757600080fd5b506100ff610246366004611144565b610835565b6040805180820190915260608152600060208201526002838360405161027292919061115f565b908152602001604051809103902060405180604001604052908160008201805461029b9061116f565b80601f01602080910402602001604051908101604052809291908181526020018280546102c79061116f565b80156103145780601f106102e957610100808354040283529160200191610314565b820191906000526020600020905b8154815290600101906020018083116102f757829003601f168201915b50505091835250506001919091015467ffffffffffffffff166020909101529392505050565b610342610891565b61034b82610948565b6103558282610950565b5050565b6000610363610a3d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610390610a86565b61039a6000610afa565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103e75750825b905060008267ffffffffffffffff1660011480156104045750303b155b905081158015610412575080155b15610449576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047d57845468ff00000000000000001916680100000000000000001785555b61048633610b78565b61048e610b89565b83156104d957845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6104e8610a86565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b6000546001600160a01b03163314610567576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160005b8181101561082c5736858583818110610586576105866111a9565b905060200281019061059891906111bf565b905060006105a682806111df565b6105b6604085016020860161123c565b6040516020016105c893929190611259565b604051602081830303815290604052805190602001209050600489896040516105f292919061115f565b908152604080516020928190038301902060008481529083528181206001600160a01b038916825290925290205460ff161561062f575050610824565b600160048a8a60405161064392919061115f565b908152604080516020928190038301812060008681529084528281206001600160a01b038b1682529093529120805460ff191692151592909217909155600390610690908b908b9061115f565b9081526040805160209281900383019020600084815292528120805467ffffffffffffffff16916106c083611292565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050600160009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e91906112c7565b60ff1660038a8a60405161077392919061115f565b90815260408051602092819003830190206000858152925290205467ffffffffffffffff16108015906107ed5750600289896040516107b392919061115f565b90815260408051602092819003830190206001015467ffffffffffffffff16916107e191850190850161123c565b67ffffffffffffffff16115b15610821578160028a8a60405161080592919061115f565b90815260405190819003602001902061081e828261134d565b50505b50505b60010161056b565b50505050505050565b61083d610a86565b6001600160a01b038116610885576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61088e81610afa565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061092a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661091e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561039a5760405163703e46dd60e11b815260040160405180910390fd5b61088e610a86565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109aa575060408051601f3d908101601f191682019092526109a791810190611467565b60015b6109d257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161087c565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a2e576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161087c565b610a388383610b91565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039a5760405163703e46dd60e11b815260040160405180910390fd5b33610ab87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461039a576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161087c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b610b80610be7565b61088e81610c4e565b61039a610be7565b610b9a82610c56565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610bdf57610a388282610cda565b610355610d50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661039a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083d610be7565b806001600160a01b03163b600003610c8c57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161087c565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610cf79190611480565b600060405180830381855af49150503d8060008114610d32576040519150601f19603f3d011682016040523d82523d6000602084013e610d37565b606091505b5091509150610d47858383610d88565b95945050505050565b341561039a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082610d9d57610d9882610e00565b610df9565b8151158015610db457506001600160a01b0384163b155b15610df6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161087c565b50805b9392505050565b805115610e105780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f840112610e5457600080fd5b50813567ffffffffffffffff811115610e6c57600080fd5b602083019150836020828501011115610e8457600080fd5b9250929050565b60008060208385031215610e9e57600080fd5b823567ffffffffffffffff811115610eb557600080fd5b610ec185828601610e42565b90969095509350505050565b60005b83811015610ee8578181015183820152602001610ed0565b50506000910152565b60008151808452610f09816020860160208601610ecd565b601f01601f19169290920160200192915050565b602081526000825160406020840152610f396060840182610ef1565b905067ffffffffffffffff60208501511660408401528091505092915050565b80356001600160a01b0381168114610f7057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f9e57600080fd5b610fa783610f59565b9150602083013567ffffffffffffffff80821115610fc457600080fd5b818501915085601f830112610fd857600080fd5b813581811115610fea57610fea610f75565b604051601f8201601f19908116603f0116810190838211818310171561101257611012610f75565b8160405282815288602084870101111561102b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610df96020830184610ef1565b6000806040838503121561107357600080fd5b61107c83610f59565b915061108a60208401610f59565b90509250929050565b6000806000806000606086880312156110ab57600080fd5b853567ffffffffffffffff808211156110c357600080fd5b6110cf89838a01610e42565b909750955060208801359150808211156110e857600080fd5b818801915088601f8301126110fc57600080fd5b81358181111561110b57600080fd5b8960208260051b850101111561112057600080fd5b60208301955080945050505061113860408701610f59565b90509295509295909350565b60006020828403121561115657600080fd5b610df982610f59565b8183823760009101908152919050565b600181811c9082168061118357607f821691505b6020821081036111a357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126111d557600080fd5b9190910192915050565b6000808335601e198436030181126111f657600080fd5b83018035915067ffffffffffffffff82111561121157600080fd5b602001915036819003821315610e8457600080fd5b67ffffffffffffffff8116811461088e57600080fd5b60006020828403121561124e57600080fd5b8135610df981611226565b8284823760c09190911b7fffffffffffffffff000000000000000000000000000000000000000000000000169101908152600801919050565b600067ffffffffffffffff8083168181036112bd57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b6000602082840312156112d957600080fd5b815160ff81168114610df957600080fd5b601f821115610a38576000816000526020600020601f850160051c810160208610156113135750805b601f850160051c820191505b818110156113325782815560010161131f565b505050505050565b6000813561134781611226565b92915050565b8135601e1983360301811261136157600080fd5b8201803567ffffffffffffffff81111561137a57600080fd5b6020813603818401131561138d57600080fd5b6113a18261139b865461116f565b866112ea565b6000601f8311600181146113d757600084156113bf57508482018301355b600019600386901b1c1916600185901b178655611434565b600086815260209020601f19851690835b828110156114095787850186013582559385019360019091019085016113e8565b50858210156114285760001960f88760031b161c198585890101351681555b505060018460011b0186555b50506104d961144482870161133a565b6001860167ffffffffffffffff821667ffffffffffffffff198254161781555050565b60006020828403121561147957600080fd5b5051919050565b600082516111d5818460208701610ecd56fea2646970667358221220195652498b8ae0bd96f5ce07009a38ccdfe175860f2661e1fe33ce29bf82513264736f6c63430008180033","deployedBytecode":"0x6080604052600436106100b15760003560e01c80638da5cb5b11610069578063e87c28a71161004e578063e87c28a7146101eb578063ecc155dd1461020b578063f2fde38b1461022b57600080fd5b80638da5cb5b1461014e578063ad3cb1cc1461019557600080fd5b806352d1902d1161009a57806352d1902d14610101578063715018a6146101245780638129fc1c1461013957600080fd5b80632175c3f7146100b65780634f1ef286146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004610e8b565b61024b565b6040516100e39190610f1d565b60405180910390f35b6100ff6100fa366004610f8b565b61033a565b005b34801561010d57600080fd5b50610116610359565b6040519081526020016100e3565b34801561013057600080fd5b506100ff610388565b34801561014557600080fd5b506100ff61039c565b34801561015a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100e3565b3480156101a157600080fd5b506101de6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100e3919061104d565b3480156101f757600080fd5b506100ff610206366004611060565b6104e0565b34801561021757600080fd5b506100ff610226366004611093565b610523565b34801561023757600080fd5b506100ff610246366004611144565b610835565b6040805180820190915260608152600060208201526002838360405161027292919061115f565b908152602001604051809103902060405180604001604052908160008201805461029b9061116f565b80601f01602080910402602001604051908101604052809291908181526020018280546102c79061116f565b80156103145780601f106102e957610100808354040283529160200191610314565b820191906000526020600020905b8154815290600101906020018083116102f757829003601f168201915b50505091835250506001919091015467ffffffffffffffff166020909101529392505050565b610342610891565b61034b82610948565b6103558282610950565b5050565b6000610363610a3d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610390610a86565b61039a6000610afa565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103e75750825b905060008267ffffffffffffffff1660011480156104045750303b155b905081158015610412575080155b15610449576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047d57845468ff00000000000000001916680100000000000000001785555b61048633610b78565b61048e610b89565b83156104d957845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6104e8610a86565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b6000546001600160a01b03163314610567576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160005b8181101561082c5736858583818110610586576105866111a9565b905060200281019061059891906111bf565b905060006105a682806111df565b6105b6604085016020860161123c565b6040516020016105c893929190611259565b604051602081830303815290604052805190602001209050600489896040516105f292919061115f565b908152604080516020928190038301902060008481529083528181206001600160a01b038916825290925290205460ff161561062f575050610824565b600160048a8a60405161064392919061115f565b908152604080516020928190038301812060008681529084528281206001600160a01b038b1682529093529120805460ff191692151592909217909155600390610690908b908b9061115f565b9081526040805160209281900383019020600084815292528120805467ffffffffffffffff16916106c083611292565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050600160009054906101000a90046001600160a01b03166001600160a01b031663d8718da06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e91906112c7565b60ff1660038a8a60405161077392919061115f565b90815260408051602092819003830190206000858152925290205467ffffffffffffffff16108015906107ed5750600289896040516107b392919061115f565b90815260408051602092819003830190206001015467ffffffffffffffff16916107e191850190850161123c565b67ffffffffffffffff16115b15610821578160028a8a60405161080592919061115f565b90815260405190819003602001902061081e828261134d565b50505b50505b60010161056b565b50505050505050565b61083d610a86565b6001600160a01b038116610885576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61088e81610afa565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061092a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661091e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561039a5760405163703e46dd60e11b815260040160405180910390fd5b61088e610a86565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109aa575060408051601f3d908101601f191682019092526109a791810190611467565b60015b6109d257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161087c565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a2e576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161087c565b610a388383610b91565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039a5760405163703e46dd60e11b815260040160405180910390fd5b33610ab87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461039a576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161087c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b610b80610be7565b61088e81610c4e565b61039a610be7565b610b9a82610c56565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610bdf57610a388282610cda565b610355610d50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661039a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083d610be7565b806001600160a01b03163b600003610c8c57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161087c565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610cf79190611480565b600060405180830381855af49150503d8060008114610d32576040519150601f19603f3d011682016040523d82523d6000602084013e610d37565b606091505b5091509150610d47858383610d88565b95945050505050565b341561039a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082610d9d57610d9882610e00565b610df9565b8151158015610db457506001600160a01b0384163b155b15610df6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161087c565b50805b9392505050565b805115610e105780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f840112610e5457600080fd5b50813567ffffffffffffffff811115610e6c57600080fd5b602083019150836020828501011115610e8457600080fd5b9250929050565b60008060208385031215610e9e57600080fd5b823567ffffffffffffffff811115610eb557600080fd5b610ec185828601610e42565b90969095509350505050565b60005b83811015610ee8578181015183820152602001610ed0565b50506000910152565b60008151808452610f09816020860160208601610ecd565b601f01601f19169290920160200192915050565b602081526000825160406020840152610f396060840182610ef1565b905067ffffffffffffffff60208501511660408401528091505092915050565b80356001600160a01b0381168114610f7057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f9e57600080fd5b610fa783610f59565b9150602083013567ffffffffffffffff80821115610fc457600080fd5b818501915085601f830112610fd857600080fd5b813581811115610fea57610fea610f75565b604051601f8201601f19908116603f0116810190838211818310171561101257611012610f75565b8160405282815288602084870101111561102b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610df96020830184610ef1565b6000806040838503121561107357600080fd5b61107c83610f59565b915061108a60208401610f59565b90509250929050565b6000806000806000606086880312156110ab57600080fd5b853567ffffffffffffffff808211156110c357600080fd5b6110cf89838a01610e42565b909750955060208801359150808211156110e857600080fd5b818801915088601f8301126110fc57600080fd5b81358181111561110b57600080fd5b8960208260051b850101111561112057600080fd5b60208301955080945050505061113860408701610f59565b90509295509295909350565b60006020828403121561115657600080fd5b610df982610f59565b8183823760009101908152919050565b600181811c9082168061118357607f821691505b6020821081036111a357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126111d557600080fd5b9190910192915050565b6000808335601e198436030181126111f657600080fd5b83018035915067ffffffffffffffff82111561121157600080fd5b602001915036819003821315610e8457600080fd5b67ffffffffffffffff8116811461088e57600080fd5b60006020828403121561124e57600080fd5b8135610df981611226565b8284823760c09190911b7fffffffffffffffff000000000000000000000000000000000000000000000000169101908152600801919050565b600067ffffffffffffffff8083168181036112bd57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b6000602082840312156112d957600080fd5b815160ff81168114610df957600080fd5b601f821115610a38576000816000526020600020601f850160051c810160208610156113135750805b601f850160051c820191505b818110156113325782815560010161131f565b505050505050565b6000813561134781611226565b92915050565b8135601e1983360301811261136157600080fd5b8201803567ffffffffffffffff81111561137a57600080fd5b6020813603818401131561138d57600080fd5b6113a18261139b865461116f565b866112ea565b6000601f8311600181146113d757600084156113bf57508482018301355b600019600386901b1c1916600185901b178655611434565b600086815260209020601f19851690835b828110156114095787850186013582559385019360019091019085016113e8565b50858210156114285760001960f88760031b161c198585890101351681555b505060018460011b0186555b50506104d961144482870161133a565b6001860167ffffffffffffffff821667ffffffffffffffff198254161781555050565b60006020828403121561147957600080fd5b5051919050565b600082516111d5818460208701610ecd56fea2646970667358221220195652498b8ae0bd96f5ce07009a38ccdfe175860f2661e1fe33ce29bf82513264736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` +var BridgeArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"Bridge","sourceName":"contracts/Bridge.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllRegisteredChains","outputs":[{"components":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"addressMultisig","type":"string"},{"internalType":"string","name":"addressFeePayer","type":"string"}],"internalType":"struct IBridgeStructs.Chain[]","name":"_chains","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getAvailableUTXOs","outputs":[{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"availableUTXOs","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getConfirmedBatch","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string[]","name":"multisigSignatures","type":"string[]"},{"internalType":"string[]","name":"feePayerMultisigSignatures","type":"string[]"}],"internalType":"struct IBridgeStructs.ConfirmedBatch","name":"batch","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getConfirmedTransactions","outputs":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"blockHeight","type":"uint256"},{"internalType":"string","name":"sourceChainID","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ConfirmedTransaction[]","name":"_confirmedTransactions","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_sourceChain","type":"string"}],"name":"getLastObservedBlock","outputs":[{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock","name":"cblock","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getNextBatchId","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getRawTransactionFromLastBatch","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"getValidatorsCardanoData","outputs":[{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData[]","name":"validatorCardanoData","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"addressMultisig","type":"string"},{"internalType":"string","name":"addressFeePayer","type":"string"}],"internalType":"struct IBridgeStructs.Chain","name":"_chain","type":"tuple"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"_initialUTXOs","type":"tuple"},{"internalType":"uint256","name":"_tokenQuantity","type":"uint256"},{"components":[{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData","name":"data","type":"tuple"}],"internalType":"struct IBridgeStructs.ValidatorAddressCardanoData[]","name":"_validatorsAddressCardanoData","type":"tuple[]"}],"name":"registerChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"addressMultisig","type":"string"},{"internalType":"string","name":"addressFeePayer","type":"string"}],"internalType":"struct IBridgeStructs.Chain","name":"_chain","type":"tuple"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"_initialUTXOs","type":"tuple"},{"internalType":"uint256","name":"_tokenQuantity","type":"uint256"},{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData","name":"_validatorCardanoData","type":"tuple"}],"name":"registerChainGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_claimsAddress","type":"address"},{"internalType":"address","name":"_signedBatchesAddress","type":"address"},{"internalType":"address","name":"_slotsAddress","type":"address"},{"internalType":"address","name":"_utxoscAddress","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"shouldCreateBatch","outputs":[{"internalType":"bool","name":"batch","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"outputUTXO","type":"tuple"},{"internalType":"string","name":"sourceChainID","type":"string"},{"internalType":"string","name":"destinationChainID","type":"string"}],"internalType":"struct IBridgeStructs.BridgingRequestClaim[]","name":"bridgingRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"outputUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.BatchExecutedClaim[]","name":"batchExecutedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"}],"internalType":"struct IBridgeStructs.BatchExecutionFailedClaim[]","name":"batchExecutionFailedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"previousRefundTxHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"receiver","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"uint256","name":"retryCounter","type":"uint256"}],"internalType":"struct IBridgeStructs.RefundRequestClaim[]","name":"refundRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"refundTxHash","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"}],"internalType":"struct IBridgeStructs.RefundExecutedClaim[]","name":"refundExecutedClaims","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ValidatorClaims","name":"_claims","type":"tuple"}],"name":"submitClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"chainID","type":"string"},{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock[]","name":"blocks","type":"tuple[]"}],"name":"submitLastObservedBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"destinationChainId","type":"string"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"string","name":"feePayerMultisigSignature","type":"string"},{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.SignedBatch","name":"_signedBatch","type":"tuple"}],"name":"submitSignedBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516142136200010460003960008181611e5e01528181611e87015261200a01526142136000f3fe6080604052600436106101755760003560e01c8063715018a6116100cb578063ad3cb1cc1161007f578063d52c54c411610059578063d52c54c414610468578063e3d5853914610495578063f2fde38b146104b557600080fd5b8063ad3cb1cc146103df578063b95a432c14610428578063cbb0ff791461044857600080fd5b80638129fc1c116100b05780638129fc1c146103635780638da5cb5b14610378578063997ef201146103bf57600080fd5b8063715018a61461031e57806377968b341461033357600080fd5b806349187cd91161012d578063595051f911610107578063595051f9146102a2578063636b8a0d146102cf57806367f0cc44146102fc57600080fd5b806349187cd91461024d5780634f1ef2861461027a57806352d1902d1461028d57600080fd5b806333552ec51161015e57806333552ec5146101dd5780633cd9ae3e146101ff578063406f8f041461022d57600080fd5b806303fe69ae1461017a5780632175c3f7146101b0575b600080fd5b34801561018657600080fd5b5061019a6101953660046123d0565b6104d5565b6040516101a791906124ee565b60405180910390f35b3480156101bc57600080fd5b506101d06101cb3660046123d0565b610580565b6040516101a79190612527565b3480156101e957600080fd5b506101fd6101f83660046125d2565b610623565b005b34801561020b57600080fd5b5061021f61021a3660046123d0565b6106ab565b6040519081526020016101a7565b34801561023957600080fd5b506101fd61024836600461266b565b6107b9565b34801561025957600080fd5b5061026d6102683660046123d0565b6108cc565b6040516101a791906126d7565b6101fd6102883660046127e4565b610952565b34801561029957600080fd5b5061021f610971565b3480156102ae57600080fd5b506102c26102bd3660046123d0565b6109a0565b6040516101a79190612875565b3480156102db57600080fd5b506102ef6102ea3660046123d0565b610cbb565b6040516101a79190612981565b34801561030857600080fd5b50610311610d4d565b6040516101a791906129fa565b34801561032a57600080fd5b506101fd610f62565b34801561033f57600080fd5b5061035361034e3660046123d0565b610f76565b60405190151581526020016101a7565b34801561036f57600080fd5b506101fd610fea565b34801561038457600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101a7565b3480156103cb57600080fd5b506101fd6103da366004612a8f565b61112d565b3480156103eb57600080fd5b5061026d6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561043457600080fd5b506101fd610443366004612af4565b6111a1565b34801561045457600080fd5b506101fd610463366004612b2f565b6112a4565b34801561047457600080fd5b506104886104833660046123d0565b6114de565b6040516101a79190612bb8565b3480156104a157600080fd5b506101fd6104b0366004612c1a565b611599565b3480156104c157600080fd5b506101fd6104d0366004612cac565b6119ea565b6040805180820182526060808252602082015260035491517f34c3908400000000000000000000000000000000000000000000000000000000815290916001600160a01b0316906334c39084906105329086908690600401612cf0565b600060405180830381865afa15801561054f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612e6f565b90505b92915050565b604080518082018252606081526000602082015260025491517f2175c3f700000000000000000000000000000000000000000000000000000000815290916001600160a01b031690632175c3f7906105de9086908690600401612cf0565b600060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612f00565b61062b611a3e565b6004546001600160a01b03166332bae10d6106468780612f84565b85856040518563ffffffff1660e01b8152600401610667949392919061307b565b600060405180830381600087803b15801561068157600080fd5b505af1158015610695573d6000803e3d6000fd5b505050506106a4858585611ab2565b5050505050565b60008054604051631de5a2cd60e21b81526001600160a01b03909116906377968b34906106de9086908690600401612cf0565b602060405180830381865afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190613120565b61072b5750600061057a565b600154604051631c8f277560e01b81526000916001600160a01b031690631c8f27759061075e9087908790600401612cf0565b600060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107a39190810190613142565b5090506107b181600161319f565b949350505050565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108269190613120565b61084357604051632ec5b44960e01b815260040160405180910390fd5b6002546040517fecc155dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ecc155dd9061089490879087908790879033906004016131b2565b600060405180830381600087803b1580156108ae57600080fd5b505af11580156108c2573d6000803e3d6000fd5b5050505050505050565b600154604051631c8f277560e01b81526060916000916001600160a01b0390911690631c8f2775906109049087908790600401612cf0565b600060405180830381865afa158015610921573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109499190810190613142565b95945050505050565b61095a611e53565b61096382611f0a565b61096d8282611f12565b5050565b600061097b611fff565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600054604051631de5a2cd60e21b81526060916001600160a01b0316906377968b34906109d39086908690600401612cf0565b602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190613120565b610a575782826040517fa87b2dd8000000000000000000000000000000000000000000000000000000008152600401610a4e929190612cf0565b60405180910390fd5b600080546040517f1d530f120000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631d530f1290610aa39087908790600401612cf0565b602060405180830381865afa158015610ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae4919061326e565b610aef90600161319f565b600080546040517f44e3bd2200000000000000000000000000000000000000000000000000000000815292935090916001600160a01b03909116906344e3bd2290610b409088908890600401612cf0565b602060405180830381865afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b81919061326e565b90508067ffffffffffffffff811115610b9c57610b9c612706565b604051908082528060200260200182016040528015610bff57816020015b610bec6040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b815260200190600190039081610bba5790505b50925060005b81811015610cb2576000546001600160a01b0316636cabee018787610c2a858861319f565b6040518463ffffffff1660e01b8152600401610c4893929190613287565b600060405180830381865afa158015610c65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8d919081019061336a565b848281518110610c9f57610c9f613433565b6020908102919091010152600101610c05565b50505092915050565b600480546040517f636b8a0d0000000000000000000000000000000000000000000000000000000081526060926001600160a01b039092169163636b8a0d91610d08918791879101612cf0565b600060405180830381865afa158015610d25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190613449565b60606005805480602002602001604051908101604052809291908181526020016000905b82821015610f595783829060005260206000209060030201604051806060016040529081600082018054610da490613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd090613555565b8015610e1d5780601f10610df257610100808354040283529160200191610e1d565b820191906000526020600020905b815481529060010190602001808311610e0057829003601f168201915b50505050508152602001600182018054610e3690613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6290613555565b8015610eaf5780601f10610e8457610100808354040283529160200191610eaf565b820191906000526020600020905b815481529060010190602001808311610e9257829003601f168201915b50505050508152602001600282018054610ec890613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef490613555565b8015610f415780601f10610f1657610100808354040283529160200191610f41565b820191906000526020600020905b815481529060010190602001808311610f2457829003601f168201915b50505050508152505081526020019060010190610d71565b50505050905090565b610f6a611a3e565b610f746000612048565b565b60008054604051631de5a2cd60e21b81526001600160a01b03909116906377968b3490610fa99086908690600401612cf0565b602060405180830381865afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105779190613120565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156110355750825b905060008267ffffffffffffffff1660011480156110525750303b155b905081158015611060575080155b15611097576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110cb57845468ff00000000000000001916680100000000000000001785555b6110d4336120c6565b6110dc6120d7565b83156106a457845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b611135611a3e565b6000805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03978816179091556001805482169587169590951790945560028054851693861693909317909255600380548416918516919091179055600480549092169216919091179055565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120e9190613120565b61122b57604051632ec5b44960e01b815260040160405180910390fd5b6000546040517f5673ee670000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635673ee67906112769084903390600401613a65565b600060405180830381600087803b15801561129057600080fd5b505af11580156106a4573d6000803e3d6000fd5b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113119190613120565b61132e57604051632ec5b44960e01b815260040160405180910390fd5b6000546001600160a01b03166377968b3461134c6020840184612f84565b6040518363ffffffff1660e01b8152600401611369929190612cf0565b602060405180830381865afa158015611386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113aa9190613120565b156114db576004546001600160a01b03166381b6ecf56113cd6020840184612f84565b6113da6040860186612f84565b6113e76060880188612f84565b6113f460808a018a612f84565b336040518a63ffffffff1660e01b815260040161141999989796959493929190613cb9565b602060405180830381865afa158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190613120565b611490576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517fd254f6f20000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d254f6f2906112769084903390600401613d2a565b50565b6115096040518060800160405280600081526020016060815260200160608152602001606081525090565b6001546040517fd52c54c40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d52c54c4906115549086908690600401612cf0565b600060405180830381865afa158015611571573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190613eaa565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190613120565b61162357604051632ec5b44960e01b815260040160405180910390fd5b3660006116308680612f84565b6000546040517f18c586cd0000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b0316906318c586cd9061167f9085908590600401612cf0565b602060405180830381865afa15801561169c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c09190613120565b156116fb5781816040517fc4a32e49000000000000000000000000000000000000000000000000000000008152600401610a4e929190612cf0565b600086868660405160200161171293929190613f69565b60408051808303601f190181529082905280516020909101206000547faadc3b72000000000000000000000000000000000000000000000000000000008352600483018290523360248401529092506001600160a01b03169063aadc3b7290604401602060405180830381865afa158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613120565b156117f05782826040517fc113c1e3000000000000000000000000000000000000000000000000000000008152600401610a4e929190612cf0565b600480546040517f34a1a0950000000000000000000000000000000000000000000000000000000081526001600160a01b03909116916334a1a0959161183e918791879133918b9101614005565b600060405180830381600087803b15801561185857600080fd5b505af115801561186c573d6000803e3d6000fd5b505060048054604080517f2749824000000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921694506327498240935080830192602092918290030181865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f49190614045565b6000546040517f4d3f9c8e0000000000000000000000000000000000000000000000000000000081523360048201526024810184905260ff92909216916001600160a01b0390911690634d3f9c8e906044016020604051808303816000875af1158015611965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611989919061326e565b0361199e57611999878787611ab2565b6119e1565b60405133906119b09085908590614068565b604051908190038120907f99960385426dfd945f1af41c805b3ce369f9f0585b1a7f48ed778e026d2caaae90600090a35b50505050505050565b6119f2611a3e565b6001600160a01b038116611a35576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610a4e565b6114db81612048565b33611a707f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f74576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a4e565b366000611abf8580612f84565b6000546040517feab481c30000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03169063eab481c390611b0e9085908590600401612cf0565b600060405180830381600087803b158015611b2857600080fd5b505af1158015611b3c573d6000803e3d6000fd5b50506005805460019081018083556000928352919350611b5d925090614078565b9050828260058381548110611b7457611b74613433565b90600052602060002090600302016000019182611b929291906140db565b50611ba06020870187612f84565b60058381548110611bb357611bb3613433565b90600052602060002090600302016001019182611bd19291906140db565b50611bdf6040870187612f84565b60058381548110611bf257611bf2613433565b90600052602060002090600302016002019182611c109291906140db565b506003546040517f7e31e3fd0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690637e31e3fd90611c5e90869086908a9060040161419b565b600060405180830381600087803b158015611c7857600080fd5b505af1158015611c8c573d6000803e3d6000fd5b50506000546040517fe3aa21f40000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063e3aa21f49150611cdd90869086908990600401613287565b600060405180830381600087803b158015611cf757600080fd5b505af1158015611d0b573d6000803e3d6000fd5b50506000546040517fca6869820000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063ca6869829150611d5a9086908690600401612cf0565b600060405180830381600087803b158015611d7457600080fd5b505af1158015611d88573d6000803e3d6000fd5b50506000546040517f0d32b63e0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250630d32b63e9150611dd990869086904390600401613287565b600060405180830381600087803b158015611df357600080fd5b505af1158015611e07573d6000803e3d6000fd5b505050508282604051611e1b929190614068565b604051908190038120907f3cbe969d5c5f2c70c7cfb293cd355d3fcc80a852eac9bee1c1c317dc302f199d90600090a2505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611eec57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ee07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f745760405163703e46dd60e11b815260040160405180910390fd5b6114db611a3e565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f6c575060408051601f3d908101601f19168201909252611f699181019061326e565b60015b611f9457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a4e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611ff0576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a4e565b611ffa83836120df565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f745760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6120ce612135565b6114db8161219c565b610f74612135565b6120e8826121a4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561212d57611ffa8282612228565b61096d612295565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f74576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f2612135565b806001600160a01b03163b6000036121da57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a4e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161224591906141c1565b600060405180830381855af49150503d8060008114612280576040519150601f19603f3d011682016040523d82523d6000602084013e612285565b606091505b50915091506109498583836122cd565b3415610f74576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826122e2576122dd82612345565b61233e565b81511580156122f957506001600160a01b0384163b155b1561233b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a4e565b50805b9392505050565b8051156123555780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f84011261239957600080fd5b50813567ffffffffffffffff8111156123b157600080fd5b6020830191508360208285010111156123c957600080fd5b9250929050565b600080602083850312156123e357600080fd5b823567ffffffffffffffff8111156123fa57600080fd5b61240685828601612387565b90969095509350505050565b60005b8381101561242d578181015183820152602001612415565b50506000910152565b6000815180845261244e816020860160208601612412565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156124e157601f198684030189528151608067ffffffffffffffff82511685528582015181878701526124b782870182612436565b6040848101519088015260609384015193909601929092525050978301979083019060010161247f565b5090979650505050505050565b60208152600082516040602084015261250a6060840182612462565b90506020840151601f198483030160408501526109498282612462565b6020815260008251604060208401526125436060840182612436565b905067ffffffffffffffff60208501511660408401528091505092915050565b60006060828403121561257557600080fd5b50919050565b60006040828403121561257557600080fd5b60008083601f84011261259f57600080fd5b50813567ffffffffffffffff8111156125b757600080fd5b6020830191508360208260051b85010111156123c957600080fd5b6000806000806000608086880312156125ea57600080fd5b853567ffffffffffffffff8082111561260257600080fd5b61260e89838a01612563565b9650602088013591508082111561262457600080fd5b61263089838a0161257b565b955060408801359450606088013591508082111561264d57600080fd5b5061265a8882890161258d565b969995985093965092949392505050565b6000806000806040858703121561268157600080fd5b843567ffffffffffffffff8082111561269957600080fd5b6126a588838901612387565b909650945060208701359150808211156126be57600080fd5b506126cb8782880161258d565b95989497509550505050565b6020815260006105776020830184612436565b80356001600160a01b038116811461270157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561273f5761273f612706565b60405290565b6040805190810167ffffffffffffffff8111828210171561273f5761273f612706565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612706565b604051601f8201601f1916810167ffffffffffffffff811182821017156127b4576127b4612706565b604052919050565b600067ffffffffffffffff8211156127d6576127d6612706565b50601f01601f191660200190565b600080604083850312156127f757600080fd5b612800836126ea565b9150602083013567ffffffffffffffff81111561281c57600080fd5b8301601f8101851361282d57600080fd5b803561284061283b826127bc565b61278b565b81815286602083850101111561285557600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561297357603f19898403018552815160a081518186526128c282870182612436565b91505088820151898601528782015188860152606080830151868303828801526128ec8382612436565b92505050608080830151925085820381870152508082518083528a830191508a8160051b8401018b8501945060005b8281101561295c57848203601f19018452855180518d845261293f8e850182612436565b918f0151938f0193909352958d0195938d0193915060010161291b565b50988b01989650505092880192505060010161289c565b509098975050505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561297357888303603f19018552815180518785526129ce88860182612436565b91890151858303868b01529190506129e68183612436565b9689019694505050908601906001016129aa565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561297357603f19898403018552815160608151818652612a4982870182612436565b915050888201518582038a870152612a618282612436565b91505087820151915084810388860152612a7b8183612436565b968901969450505090860190600101612a23565b600080600080600060a08688031215612aa757600080fd5b612ab0866126ea565b9450612abe602087016126ea565b9350612acc604087016126ea565b9250612ada606087016126ea565b9150612ae8608087016126ea565b90509295509295909350565b600060208284031215612b0657600080fd5b813567ffffffffffffffff811115612b1d57600080fd5b820160a0818503121561233e57600080fd5b600060208284031215612b4157600080fd5b813567ffffffffffffffff811115612b5857600080fd5b8201610100818503121561233e57600080fd5b60008282518085526020808601955060208260051b8401016020860160005b848110156124e157601f19868403018952612ba6838351612436565b98840198925090830190600101612b8a565b60208152815160208201526000602083015160806040840152612bde60a0840182612436565b90506040840151601f1980858403016060860152612bfc8383612b6b565b92506060860151915080858403016080860152506109498282612b6b565b60008060008060808587031215612c3057600080fd5b843567ffffffffffffffff80821115612c4857600080fd5b612c5488838901612563565b95506020870135915080821115612c6a57600080fd5b612c768883890161257b565b9450604087013593506060870135915080821115612c9357600080fd5b50612ca08782880161257b565b91505092959194509250565b600060208284031215612cbe57600080fd5b610577826126ea565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006107b1602083018486612cc7565b600067ffffffffffffffff821115612d1e57612d1e612706565b5060051b60200190565b67ffffffffffffffff811681146114db57600080fd5b600082601f830112612d4f57600080fd5b8151612d5d61283b826127bc565b818152846020838601011115612d7257600080fd5b6107b1826020830160208701612412565b600082601f830112612d9457600080fd5b81516020612da461283b83612d04565b82815260059290921b84018101918181019086841115612dc357600080fd5b8286015b84811015612e6457805167ffffffffffffffff80821115612de85760008081fd5b908801906080828b03601f1901811315612e025760008081fd5b612e0a61271c565b87840151612e1781612d28565b815260408481015184811115612e2d5760008081fd5b612e3b8e8b83890101612d3e565b838b01525060608581015191830191909152919093015190830152508352918301918301612dc7565b509695505050505050565b600060208284031215612e8157600080fd5b815167ffffffffffffffff80821115612e9957600080fd5b9083019060408286031215612ead57600080fd5b612eb5612745565b825182811115612ec457600080fd5b612ed087828601612d83565b825250602083015182811115612ee557600080fd5b612ef187828601612d83565b60208301525095945050505050565b600060208284031215612f1257600080fd5b815167ffffffffffffffff80821115612f2a57600080fd5b9083019060408286031215612f3e57600080fd5b612f46612745565b825182811115612f5557600080fd5b612f6187828601612d3e565b82525060208301519250612f7483612d28565b6020810192909252509392505050565b6000808335601e19843603018112612f9b57600080fd5b83018035915067ffffffffffffffff821115612fb657600080fd5b6020019150368190038213156123c957600080fd5b60008235603e19833603018112612fe157600080fd5b90910192915050565b6000808335601e1984360301811261300157600080fd5b830160208101925035905067ffffffffffffffff81111561302157600080fd5b8036038213156123c957600080fd5b600061303c8283612fea565b6040855261304e604086018284612cc7565b91505061305e6020840184612fea565b8583036020870152613071838284612cc7565b9695505050505050565b60006040808352613090604084018789612cc7565b602084820381860152818683528183019050818760051b8401018860005b8981101561310f57858303601f190184526130c9828c612fcb565b6001600160a01b036130da826126ea565b1684526130e986820182612fcb565b905087868501526130fc88850182613030565b94860194935050908401906001016130ae565b50909b9a5050505050505050505050565b60006020828403121561313257600080fd5b8151801515811461233e57600080fd5b6000806040838503121561315557600080fd5b82519150602083015167ffffffffffffffff81111561317357600080fd5b61317f85828601612d3e565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561057a5761057a613189565b6060815260006131c6606083018789612cc7565b602083820381850152818683528183019050818760051b8401018860005b8981101561325257858303601f190184526131ff828c612fcb565b604061320b8283612fea565b82875261321b8388018284612cc7565b9250505086820135915061322e82612d28565b67ffffffffffffffff919091169386019390935292840192908401906001016131e4565b50506001600160a01b0387166040870152935061307192505050565b60006020828403121561328057600080fd5b5051919050565b60408152600061329b604083018587612cc7565b9050826020830152949350505050565b600082601f8301126132bc57600080fd5b815160206132cc61283b83612d04565b82815260059290921b840181019181810190868411156132eb57600080fd5b8286015b84811015612e6457805167ffffffffffffffff808211156133105760008081fd5b908801906040828b03601f190181131561332a5760008081fd5b613332612745565b87840151838111156133445760008081fd5b6133528d8a83880101612d3e565b825250920151868301525083529183019183016132ef565b60006020828403121561337c57600080fd5b815167ffffffffffffffff8082111561339457600080fd5b9083019060a082860312156133a857600080fd5b6133b0612768565b8251828111156133bf57600080fd5b6133cb87828601612d3e565b82525060208301516020820152604083015160408201526060830151828111156133f457600080fd5b61340087828601612d3e565b60608301525060808301518281111561341857600080fd5b613424878286016132ab565b60808301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561345c57600080fd5b825167ffffffffffffffff8082111561347457600080fd5b818501915085601f83011261348857600080fd5b815161349661283b82612d04565b81815260059190911b830184019084810190888311156134b557600080fd5b8585015b83811015613548578051858111156134d15760008081fd5b86016040818c03601f19018113156134e95760008081fd5b6134f1612745565b89830151888111156135035760008081fd5b6135118e8c83870101612d3e565b8252509082015190878211156135275760008081fd5b6135358d8b84860101612d3e565b818b0152855250509186019186016134b9565b5098975050505050505050565b600181811c9082168061356957607f821691505b60208210810361257557634e487b7160e01b600052602260045260246000fd5b6000808335601e198436030181126135a057600080fd5b830160208101925035905067ffffffffffffffff8111156135c057600080fd5b8060051b36038213156123c957600080fd5b60008235607e19833603018112612fe157600080fd5b600081356135f581612d28565b67ffffffffffffffff16835261360e6020830183612fea565b60806020860152613623608086018284612cc7565b91505060408301356040850152606083013560608501528091505092915050565b6000838385526020808601955060208560051b8301018460005b878110156124e157848303601f190189526136828361367d848a6135d2565b6135e8565b9884019892509083019060010161365e565b60006136a08283613589565b604085526136b2604086018284613644565b9150506136c26020840184613589565b8583036020870152613071838284613644565b60008383855260208086019550808560051b8301018460005b878110156124e157848303601f1901895261370982886135d2565b60806137158283612fea565b8287526137258388018284612cc7565b9250505061373586830183612fea565b86830388880152613747838284612cc7565b925050506040808301358187015250606061376481840184612fcb565b925085820381870152506137788183613694565b9a86019a94505050908301906001016136ee565b60008383855260208086019550808560051b830101846000805b8881101561382d57858403601f19018a52823536899003605e190181126137cb578283fd5b880160606137d98280612fea565b8288526137e98389018284612cc7565b925050506137f987830183612fea565b8783038989015261380b838284612cc7565b60409485013598909401979097525050998501999350918401916001016137a6565b509198975050505050505050565b60008383855260208086019550808560051b830101846000805b8881101561382d57858403601f19018a5282353689900360fe1901811261387a578283fd5b88016101006138898280612fea565b8288526138998389018284612cc7565b925050506138a987830183612fea565b878303898901526138bb838284612cc7565b9250505060406138cd81840184612fea565b888403838a01526138df848284612cc7565b935050505060606138f281840184612fea565b888403838a0152613904848284612cc7565b93505050506080613917818401846135d2565b8783038289015261392883826135e8565b9250505060a061393a81840184612fea565b888403838a015261394c848284612cc7565b935050505060c061395f81840184612fea565b888403838a0152613971848284612cc7565b60e095860135999095019890985250505099850199935091840191600101613855565b60008383855260208086019550808560051b8301018460005b878110156124e157848303601f190189526139c882886135d2565b60806139d48283612fea565b8287526139e48388018284612cc7565b925050506139f486830183612fea565b86830388880152613a06838284612cc7565b925050506040613a1881840184612fea565b87840383890152613a2a848284612cc7565b93505050506060613a3d818401846135d2565b92508582038187015250613a5181836135e8565b9a86019a94505050908301906001016139ad565b604081526000613a758485613589565b60a0604085015260e08401818152610100850190506101008260051b8601018360005b84811015613bfc5787830360ff1901845236869003609e1901823512613abd57600080fd5b613aca8235870180612fea565b60a08552613adc60a086018284612cc7565b9150613af19050833588016020810190613589565b85830360208701528281845260208401905060208260051b8501018360005b84811015613b6757868303601f19018452613b2b8287612fcb565b613b358182612fea565b60408652613b47604087018284612cc7565b602093840135968401969096525050938401939190910190600101613b10565b50613b7b905087358c0160408101906135d2565b94508781036040890152613b8f81866135e8565b9450613ba79350505050833588016060810190612fea565b8583036060870152613bba838284612cc7565b9250613bd0915050833588016080810190612fea565b8583036080870152613be3838284612cc7565b6020978801979096509490940193505050600101613a98565b5050613c0b6020890189613589565b94509250603f19915081868203016060870152613c298185856136d5565b935050613c396040880188613589565b925081868503016080870152613c5084848361378c565b935050613c606060880188613589565b9250818685030160a0870152613c7784848361383b565b935050613c876080880188613589565b9250818685030160c0870152613c9e848483613994565b94505050505061233e60208301846001600160a01b03169052565b60a081526000613ccd60a083018b8d612cc7565b8281036020840152613ce0818a8c612cc7565b90508281036040840152613cf581888a612cc7565b90508281036060840152613d0a818688612cc7565b9150506001600160a01b03831660808301529a9950505050505050505050565b60408152823560408201526000613d446020850185612fea565b610100806060860152613d5c61014086018385612cc7565b9250613d6b6040880188612fea565b9250603f1980878603016080880152613d85858584612cc7565b9450613d9460608a018a612fea565b94509150808786030160a0880152613dad858584612cc7565b9450613dbc60808a018a612fea565b94509150808786030160c0880152613dd5858584612cc7565b945060a089013560e088015260c089013583880152613df760e08a018a612fcb565b93508087860301610120880152505050613e118282613694565b9250505061233e60208301846001600160a01b03169052565b600082601f830112613e3b57600080fd5b81516020613e4b61283b83612d04565b82815260059290921b84018101918181019086841115613e6a57600080fd5b8286015b84811015612e6457805167ffffffffffffffff811115613e8e5760008081fd5b613e9c8986838b0101612d3e565b845250918301918301613e6e565b600060208284031215613ebc57600080fd5b815167ffffffffffffffff80821115613ed457600080fd5b9083019060808286031215613ee857600080fd5b613ef061271c565b82518152602083015182811115613f0657600080fd5b613f1287828601612d3e565b602083015250604083015182811115613f2a57600080fd5b613f3687828601613e2a565b604083015250606083015182811115613f4e57600080fd5b613f5a87828601613e2a565b60608301525095945050505050565b606081526000613f798586612fea565b606080850152613f8d60c085018284612cc7565b915050613f9d6020870187612fea565b605f1980868503016080870152613fb5848385612cc7565b9350613fc460408a018a612fea565b93509150808685030160a087015250613fde838383612cc7565b925050508281036020840152613ff48186613694565b915050826040830152949350505050565b606081526000614019606083018688612cc7565b6001600160a01b0385166020840152828103604084015261403a8185613030565b979650505050505050565b60006020828403121561405757600080fd5b815160ff8116811461233e57600080fd5b8183823760009101908152919050565b8181038181111561057a5761057a613189565b601f821115611ffa576000816000526020600020601f850160051c810160208610156140b45750805b601f850160051c820191505b818110156140d3578281556001016140c0565b505050505050565b67ffffffffffffffff8311156140f3576140f3612706565b614107836141018354613555565b8361408b565b6000601f84116001811461413b57600085156141235750838201355b600019600387901b1c1916600186901b1783556106a4565b600083815260209020601f19861690835b8281101561416c578685013582556020948501946001909201910161414c565b50868210156141895760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6040815260006141af604083018587612cc7565b82810360208401526130718185613694565b600082516141d3818460208701612412565b919091019291505056fea26469706673582212201d5e996ea7f6fe77d4859da1c28a8cd3b7e2d169289d24f122c5f09414e4e25764736f6c63430008180033","deployedBytecode":"0x6080604052600436106101755760003560e01c8063715018a6116100cb578063ad3cb1cc1161007f578063d52c54c411610059578063d52c54c414610468578063e3d5853914610495578063f2fde38b146104b557600080fd5b8063ad3cb1cc146103df578063b95a432c14610428578063cbb0ff791461044857600080fd5b80638129fc1c116100b05780638129fc1c146103635780638da5cb5b14610378578063997ef201146103bf57600080fd5b8063715018a61461031e57806377968b341461033357600080fd5b806349187cd91161012d578063595051f911610107578063595051f9146102a2578063636b8a0d146102cf57806367f0cc44146102fc57600080fd5b806349187cd91461024d5780634f1ef2861461027a57806352d1902d1461028d57600080fd5b806333552ec51161015e57806333552ec5146101dd5780633cd9ae3e146101ff578063406f8f041461022d57600080fd5b806303fe69ae1461017a5780632175c3f7146101b0575b600080fd5b34801561018657600080fd5b5061019a6101953660046123d0565b6104d5565b6040516101a791906124ee565b60405180910390f35b3480156101bc57600080fd5b506101d06101cb3660046123d0565b610580565b6040516101a79190612527565b3480156101e957600080fd5b506101fd6101f83660046125d2565b610623565b005b34801561020b57600080fd5b5061021f61021a3660046123d0565b6106ab565b6040519081526020016101a7565b34801561023957600080fd5b506101fd61024836600461266b565b6107b9565b34801561025957600080fd5b5061026d6102683660046123d0565b6108cc565b6040516101a791906126d7565b6101fd6102883660046127e4565b610952565b34801561029957600080fd5b5061021f610971565b3480156102ae57600080fd5b506102c26102bd3660046123d0565b6109a0565b6040516101a79190612875565b3480156102db57600080fd5b506102ef6102ea3660046123d0565b610cbb565b6040516101a79190612981565b34801561030857600080fd5b50610311610d4d565b6040516101a791906129fa565b34801561032a57600080fd5b506101fd610f62565b34801561033f57600080fd5b5061035361034e3660046123d0565b610f76565b60405190151581526020016101a7565b34801561036f57600080fd5b506101fd610fea565b34801561038457600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101a7565b3480156103cb57600080fd5b506101fd6103da366004612a8f565b61112d565b3480156103eb57600080fd5b5061026d6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561043457600080fd5b506101fd610443366004612af4565b6111a1565b34801561045457600080fd5b506101fd610463366004612b2f565b6112a4565b34801561047457600080fd5b506104886104833660046123d0565b6114de565b6040516101a79190612bb8565b3480156104a157600080fd5b506101fd6104b0366004612c1a565b611599565b3480156104c157600080fd5b506101fd6104d0366004612cac565b6119ea565b6040805180820182526060808252602082015260035491517f34c3908400000000000000000000000000000000000000000000000000000000815290916001600160a01b0316906334c39084906105329086908690600401612cf0565b600060405180830381865afa15801561054f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612e6f565b90505b92915050565b604080518082018252606081526000602082015260025491517f2175c3f700000000000000000000000000000000000000000000000000000000815290916001600160a01b031690632175c3f7906105de9086908690600401612cf0565b600060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190612f00565b61062b611a3e565b6004546001600160a01b03166332bae10d6106468780612f84565b85856040518563ffffffff1660e01b8152600401610667949392919061307b565b600060405180830381600087803b15801561068157600080fd5b505af1158015610695573d6000803e3d6000fd5b505050506106a4858585611ab2565b5050505050565b60008054604051631de5a2cd60e21b81526001600160a01b03909116906377968b34906106de9086908690600401612cf0565b602060405180830381865afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190613120565b61072b5750600061057a565b600154604051631c8f277560e01b81526000916001600160a01b031690631c8f27759061075e9087908790600401612cf0565b600060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107a39190810190613142565b5090506107b181600161319f565b949350505050565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108269190613120565b61084357604051632ec5b44960e01b815260040160405180910390fd5b6002546040517fecc155dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ecc155dd9061089490879087908790879033906004016131b2565b600060405180830381600087803b1580156108ae57600080fd5b505af11580156108c2573d6000803e3d6000fd5b5050505050505050565b600154604051631c8f277560e01b81526060916000916001600160a01b0390911690631c8f2775906109049087908790600401612cf0565b600060405180830381865afa158015610921573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109499190810190613142565b95945050505050565b61095a611e53565b61096382611f0a565b61096d8282611f12565b5050565b600061097b611fff565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600054604051631de5a2cd60e21b81526060916001600160a01b0316906377968b34906109d39086908690600401612cf0565b602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190613120565b610a575782826040517fa87b2dd8000000000000000000000000000000000000000000000000000000008152600401610a4e929190612cf0565b60405180910390fd5b600080546040517f1d530f120000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631d530f1290610aa39087908790600401612cf0565b602060405180830381865afa158015610ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae4919061326e565b610aef90600161319f565b600080546040517f44e3bd2200000000000000000000000000000000000000000000000000000000815292935090916001600160a01b03909116906344e3bd2290610b409088908890600401612cf0565b602060405180830381865afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b81919061326e565b90508067ffffffffffffffff811115610b9c57610b9c612706565b604051908082528060200260200182016040528015610bff57816020015b610bec6040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b815260200190600190039081610bba5790505b50925060005b81811015610cb2576000546001600160a01b0316636cabee018787610c2a858861319f565b6040518463ffffffff1660e01b8152600401610c4893929190613287565b600060405180830381865afa158015610c65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8d919081019061336a565b848281518110610c9f57610c9f613433565b6020908102919091010152600101610c05565b50505092915050565b600480546040517f636b8a0d0000000000000000000000000000000000000000000000000000000081526060926001600160a01b039092169163636b8a0d91610d08918791879101612cf0565b600060405180830381865afa158015610d25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190613449565b60606005805480602002602001604051908101604052809291908181526020016000905b82821015610f595783829060005260206000209060030201604051806060016040529081600082018054610da490613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd090613555565b8015610e1d5780601f10610df257610100808354040283529160200191610e1d565b820191906000526020600020905b815481529060010190602001808311610e0057829003601f168201915b50505050508152602001600182018054610e3690613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6290613555565b8015610eaf5780601f10610e8457610100808354040283529160200191610eaf565b820191906000526020600020905b815481529060010190602001808311610e9257829003601f168201915b50505050508152602001600282018054610ec890613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef490613555565b8015610f415780601f10610f1657610100808354040283529160200191610f41565b820191906000526020600020905b815481529060010190602001808311610f2457829003601f168201915b50505050508152505081526020019060010190610d71565b50505050905090565b610f6a611a3e565b610f746000612048565b565b60008054604051631de5a2cd60e21b81526001600160a01b03909116906377968b3490610fa99086908690600401612cf0565b602060405180830381865afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105779190613120565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156110355750825b905060008267ffffffffffffffff1660011480156110525750303b155b905081158015611060575080155b15611097576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110cb57845468ff00000000000000001916680100000000000000001785555b6110d4336120c6565b6110dc6120d7565b83156106a457845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b611135611a3e565b6000805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03978816179091556001805482169587169590951790945560028054851693861693909317909255600380548416918516919091179055600480549092169216919091179055565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120e9190613120565b61122b57604051632ec5b44960e01b815260040160405180910390fd5b6000546040517f5673ee670000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635673ee67906112769084903390600401613a65565b600060405180830381600087803b15801561129057600080fd5b505af11580156106a4573d6000803e3d6000fd5b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113119190613120565b61132e57604051632ec5b44960e01b815260040160405180910390fd5b6000546001600160a01b03166377968b3461134c6020840184612f84565b6040518363ffffffff1660e01b8152600401611369929190612cf0565b602060405180830381865afa158015611386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113aa9190613120565b156114db576004546001600160a01b03166381b6ecf56113cd6020840184612f84565b6113da6040860186612f84565b6113e76060880188612f84565b6113f460808a018a612f84565b336040518a63ffffffff1660e01b815260040161141999989796959493929190613cb9565b602060405180830381865afa158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190613120565b611490576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517fd254f6f20000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d254f6f2906112769084903390600401613d2a565b50565b6115096040518060800160405280600081526020016060815260200160608152602001606081525090565b6001546040517fd52c54c40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d52c54c4906115549086908690600401612cf0565b600060405180830381865afa158015611571573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105779190810190613eaa565b6004805460405163facd743b60e01b815233928101929092526001600160a01b03169063facd743b90602401602060405180830381865afa1580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190613120565b61162357604051632ec5b44960e01b815260040160405180910390fd5b3660006116308680612f84565b6000546040517f18c586cd0000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b0316906318c586cd9061167f9085908590600401612cf0565b602060405180830381865afa15801561169c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c09190613120565b156116fb5781816040517fc4a32e49000000000000000000000000000000000000000000000000000000008152600401610a4e929190612cf0565b600086868660405160200161171293929190613f69565b60408051808303601f190181529082905280516020909101206000547faadc3b72000000000000000000000000000000000000000000000000000000008352600483018290523360248401529092506001600160a01b03169063aadc3b7290604401602060405180830381865afa158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613120565b156117f05782826040517fc113c1e3000000000000000000000000000000000000000000000000000000008152600401610a4e929190612cf0565b600480546040517f34a1a0950000000000000000000000000000000000000000000000000000000081526001600160a01b03909116916334a1a0959161183e918791879133918b9101614005565b600060405180830381600087803b15801561185857600080fd5b505af115801561186c573d6000803e3d6000fd5b505060048054604080517f2749824000000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921694506327498240935080830192602092918290030181865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f49190614045565b6000546040517f4d3f9c8e0000000000000000000000000000000000000000000000000000000081523360048201526024810184905260ff92909216916001600160a01b0390911690634d3f9c8e906044016020604051808303816000875af1158015611965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611989919061326e565b0361199e57611999878787611ab2565b6119e1565b60405133906119b09085908590614068565b604051908190038120907f99960385426dfd945f1af41c805b3ce369f9f0585b1a7f48ed778e026d2caaae90600090a35b50505050505050565b6119f2611a3e565b6001600160a01b038116611a35576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610a4e565b6114db81612048565b33611a707f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f74576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a4e565b366000611abf8580612f84565b6000546040517feab481c30000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03169063eab481c390611b0e9085908590600401612cf0565b600060405180830381600087803b158015611b2857600080fd5b505af1158015611b3c573d6000803e3d6000fd5b50506005805460019081018083556000928352919350611b5d925090614078565b9050828260058381548110611b7457611b74613433565b90600052602060002090600302016000019182611b929291906140db565b50611ba06020870187612f84565b60058381548110611bb357611bb3613433565b90600052602060002090600302016001019182611bd19291906140db565b50611bdf6040870187612f84565b60058381548110611bf257611bf2613433565b90600052602060002090600302016002019182611c109291906140db565b506003546040517f7e31e3fd0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690637e31e3fd90611c5e90869086908a9060040161419b565b600060405180830381600087803b158015611c7857600080fd5b505af1158015611c8c573d6000803e3d6000fd5b50506000546040517fe3aa21f40000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063e3aa21f49150611cdd90869086908990600401613287565b600060405180830381600087803b158015611cf757600080fd5b505af1158015611d0b573d6000803e3d6000fd5b50506000546040517fca6869820000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063ca6869829150611d5a9086908690600401612cf0565b600060405180830381600087803b158015611d7457600080fd5b505af1158015611d88573d6000803e3d6000fd5b50506000546040517f0d32b63e0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250630d32b63e9150611dd990869086904390600401613287565b600060405180830381600087803b158015611df357600080fd5b505af1158015611e07573d6000803e3d6000fd5b505050508282604051611e1b929190614068565b604051908190038120907f3cbe969d5c5f2c70c7cfb293cd355d3fcc80a852eac9bee1c1c317dc302f199d90600090a2505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611eec57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ee07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f745760405163703e46dd60e11b815260040160405180910390fd5b6114db611a3e565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f6c575060408051601f3d908101601f19168201909252611f699181019061326e565b60015b611f9457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a4e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611ff0576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a4e565b611ffa83836120df565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f745760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6120ce612135565b6114db8161219c565b610f74612135565b6120e8826121a4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561212d57611ffa8282612228565b61096d612295565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f74576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f2612135565b806001600160a01b03163b6000036121da57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a4e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161224591906141c1565b600060405180830381855af49150503d8060008114612280576040519150601f19603f3d011682016040523d82523d6000602084013e612285565b606091505b50915091506109498583836122cd565b3415610f74576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826122e2576122dd82612345565b61233e565b81511580156122f957506001600160a01b0384163b155b1561233b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a4e565b50805b9392505050565b8051156123555780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f84011261239957600080fd5b50813567ffffffffffffffff8111156123b157600080fd5b6020830191508360208285010111156123c957600080fd5b9250929050565b600080602083850312156123e357600080fd5b823567ffffffffffffffff8111156123fa57600080fd5b61240685828601612387565b90969095509350505050565b60005b8381101561242d578181015183820152602001612415565b50506000910152565b6000815180845261244e816020860160208601612412565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156124e157601f198684030189528151608067ffffffffffffffff82511685528582015181878701526124b782870182612436565b6040848101519088015260609384015193909601929092525050978301979083019060010161247f565b5090979650505050505050565b60208152600082516040602084015261250a6060840182612462565b90506020840151601f198483030160408501526109498282612462565b6020815260008251604060208401526125436060840182612436565b905067ffffffffffffffff60208501511660408401528091505092915050565b60006060828403121561257557600080fd5b50919050565b60006040828403121561257557600080fd5b60008083601f84011261259f57600080fd5b50813567ffffffffffffffff8111156125b757600080fd5b6020830191508360208260051b85010111156123c957600080fd5b6000806000806000608086880312156125ea57600080fd5b853567ffffffffffffffff8082111561260257600080fd5b61260e89838a01612563565b9650602088013591508082111561262457600080fd5b61263089838a0161257b565b955060408801359450606088013591508082111561264d57600080fd5b5061265a8882890161258d565b969995985093965092949392505050565b6000806000806040858703121561268157600080fd5b843567ffffffffffffffff8082111561269957600080fd5b6126a588838901612387565b909650945060208701359150808211156126be57600080fd5b506126cb8782880161258d565b95989497509550505050565b6020815260006105776020830184612436565b80356001600160a01b038116811461270157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561273f5761273f612706565b60405290565b6040805190810167ffffffffffffffff8111828210171561273f5761273f612706565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612706565b604051601f8201601f1916810167ffffffffffffffff811182821017156127b4576127b4612706565b604052919050565b600067ffffffffffffffff8211156127d6576127d6612706565b50601f01601f191660200190565b600080604083850312156127f757600080fd5b612800836126ea565b9150602083013567ffffffffffffffff81111561281c57600080fd5b8301601f8101851361282d57600080fd5b803561284061283b826127bc565b61278b565b81815286602083850101111561285557600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561297357603f19898403018552815160a081518186526128c282870182612436565b91505088820151898601528782015188860152606080830151868303828801526128ec8382612436565b92505050608080830151925085820381870152508082518083528a830191508a8160051b8401018b8501945060005b8281101561295c57848203601f19018452855180518d845261293f8e850182612436565b918f0151938f0193909352958d0195938d0193915060010161291b565b50988b01989650505092880192505060010161289c565b509098975050505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561297357888303603f19018552815180518785526129ce88860182612436565b91890151858303868b01529190506129e68183612436565b9689019694505050908601906001016129aa565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561297357603f19898403018552815160608151818652612a4982870182612436565b915050888201518582038a870152612a618282612436565b91505087820151915084810388860152612a7b8183612436565b968901969450505090860190600101612a23565b600080600080600060a08688031215612aa757600080fd5b612ab0866126ea565b9450612abe602087016126ea565b9350612acc604087016126ea565b9250612ada606087016126ea565b9150612ae8608087016126ea565b90509295509295909350565b600060208284031215612b0657600080fd5b813567ffffffffffffffff811115612b1d57600080fd5b820160a0818503121561233e57600080fd5b600060208284031215612b4157600080fd5b813567ffffffffffffffff811115612b5857600080fd5b8201610100818503121561233e57600080fd5b60008282518085526020808601955060208260051b8401016020860160005b848110156124e157601f19868403018952612ba6838351612436565b98840198925090830190600101612b8a565b60208152815160208201526000602083015160806040840152612bde60a0840182612436565b90506040840151601f1980858403016060860152612bfc8383612b6b565b92506060860151915080858403016080860152506109498282612b6b565b60008060008060808587031215612c3057600080fd5b843567ffffffffffffffff80821115612c4857600080fd5b612c5488838901612563565b95506020870135915080821115612c6a57600080fd5b612c768883890161257b565b9450604087013593506060870135915080821115612c9357600080fd5b50612ca08782880161257b565b91505092959194509250565b600060208284031215612cbe57600080fd5b610577826126ea565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006107b1602083018486612cc7565b600067ffffffffffffffff821115612d1e57612d1e612706565b5060051b60200190565b67ffffffffffffffff811681146114db57600080fd5b600082601f830112612d4f57600080fd5b8151612d5d61283b826127bc565b818152846020838601011115612d7257600080fd5b6107b1826020830160208701612412565b600082601f830112612d9457600080fd5b81516020612da461283b83612d04565b82815260059290921b84018101918181019086841115612dc357600080fd5b8286015b84811015612e6457805167ffffffffffffffff80821115612de85760008081fd5b908801906080828b03601f1901811315612e025760008081fd5b612e0a61271c565b87840151612e1781612d28565b815260408481015184811115612e2d5760008081fd5b612e3b8e8b83890101612d3e565b838b01525060608581015191830191909152919093015190830152508352918301918301612dc7565b509695505050505050565b600060208284031215612e8157600080fd5b815167ffffffffffffffff80821115612e9957600080fd5b9083019060408286031215612ead57600080fd5b612eb5612745565b825182811115612ec457600080fd5b612ed087828601612d83565b825250602083015182811115612ee557600080fd5b612ef187828601612d83565b60208301525095945050505050565b600060208284031215612f1257600080fd5b815167ffffffffffffffff80821115612f2a57600080fd5b9083019060408286031215612f3e57600080fd5b612f46612745565b825182811115612f5557600080fd5b612f6187828601612d3e565b82525060208301519250612f7483612d28565b6020810192909252509392505050565b6000808335601e19843603018112612f9b57600080fd5b83018035915067ffffffffffffffff821115612fb657600080fd5b6020019150368190038213156123c957600080fd5b60008235603e19833603018112612fe157600080fd5b90910192915050565b6000808335601e1984360301811261300157600080fd5b830160208101925035905067ffffffffffffffff81111561302157600080fd5b8036038213156123c957600080fd5b600061303c8283612fea565b6040855261304e604086018284612cc7565b91505061305e6020840184612fea565b8583036020870152613071838284612cc7565b9695505050505050565b60006040808352613090604084018789612cc7565b602084820381860152818683528183019050818760051b8401018860005b8981101561310f57858303601f190184526130c9828c612fcb565b6001600160a01b036130da826126ea565b1684526130e986820182612fcb565b905087868501526130fc88850182613030565b94860194935050908401906001016130ae565b50909b9a5050505050505050505050565b60006020828403121561313257600080fd5b8151801515811461233e57600080fd5b6000806040838503121561315557600080fd5b82519150602083015167ffffffffffffffff81111561317357600080fd5b61317f85828601612d3e565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561057a5761057a613189565b6060815260006131c6606083018789612cc7565b602083820381850152818683528183019050818760051b8401018860005b8981101561325257858303601f190184526131ff828c612fcb565b604061320b8283612fea565b82875261321b8388018284612cc7565b9250505086820135915061322e82612d28565b67ffffffffffffffff919091169386019390935292840192908401906001016131e4565b50506001600160a01b0387166040870152935061307192505050565b60006020828403121561328057600080fd5b5051919050565b60408152600061329b604083018587612cc7565b9050826020830152949350505050565b600082601f8301126132bc57600080fd5b815160206132cc61283b83612d04565b82815260059290921b840181019181810190868411156132eb57600080fd5b8286015b84811015612e6457805167ffffffffffffffff808211156133105760008081fd5b908801906040828b03601f190181131561332a5760008081fd5b613332612745565b87840151838111156133445760008081fd5b6133528d8a83880101612d3e565b825250920151868301525083529183019183016132ef565b60006020828403121561337c57600080fd5b815167ffffffffffffffff8082111561339457600080fd5b9083019060a082860312156133a857600080fd5b6133b0612768565b8251828111156133bf57600080fd5b6133cb87828601612d3e565b82525060208301516020820152604083015160408201526060830151828111156133f457600080fd5b61340087828601612d3e565b60608301525060808301518281111561341857600080fd5b613424878286016132ab565b60808301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561345c57600080fd5b825167ffffffffffffffff8082111561347457600080fd5b818501915085601f83011261348857600080fd5b815161349661283b82612d04565b81815260059190911b830184019084810190888311156134b557600080fd5b8585015b83811015613548578051858111156134d15760008081fd5b86016040818c03601f19018113156134e95760008081fd5b6134f1612745565b89830151888111156135035760008081fd5b6135118e8c83870101612d3e565b8252509082015190878211156135275760008081fd5b6135358d8b84860101612d3e565b818b0152855250509186019186016134b9565b5098975050505050505050565b600181811c9082168061356957607f821691505b60208210810361257557634e487b7160e01b600052602260045260246000fd5b6000808335601e198436030181126135a057600080fd5b830160208101925035905067ffffffffffffffff8111156135c057600080fd5b8060051b36038213156123c957600080fd5b60008235607e19833603018112612fe157600080fd5b600081356135f581612d28565b67ffffffffffffffff16835261360e6020830183612fea565b60806020860152613623608086018284612cc7565b91505060408301356040850152606083013560608501528091505092915050565b6000838385526020808601955060208560051b8301018460005b878110156124e157848303601f190189526136828361367d848a6135d2565b6135e8565b9884019892509083019060010161365e565b60006136a08283613589565b604085526136b2604086018284613644565b9150506136c26020840184613589565b8583036020870152613071838284613644565b60008383855260208086019550808560051b8301018460005b878110156124e157848303601f1901895261370982886135d2565b60806137158283612fea565b8287526137258388018284612cc7565b9250505061373586830183612fea565b86830388880152613747838284612cc7565b925050506040808301358187015250606061376481840184612fcb565b925085820381870152506137788183613694565b9a86019a94505050908301906001016136ee565b60008383855260208086019550808560051b830101846000805b8881101561382d57858403601f19018a52823536899003605e190181126137cb578283fd5b880160606137d98280612fea565b8288526137e98389018284612cc7565b925050506137f987830183612fea565b8783038989015261380b838284612cc7565b60409485013598909401979097525050998501999350918401916001016137a6565b509198975050505050505050565b60008383855260208086019550808560051b830101846000805b8881101561382d57858403601f19018a5282353689900360fe1901811261387a578283fd5b88016101006138898280612fea565b8288526138998389018284612cc7565b925050506138a987830183612fea565b878303898901526138bb838284612cc7565b9250505060406138cd81840184612fea565b888403838a01526138df848284612cc7565b935050505060606138f281840184612fea565b888403838a0152613904848284612cc7565b93505050506080613917818401846135d2565b8783038289015261392883826135e8565b9250505060a061393a81840184612fea565b888403838a015261394c848284612cc7565b935050505060c061395f81840184612fea565b888403838a0152613971848284612cc7565b60e095860135999095019890985250505099850199935091840191600101613855565b60008383855260208086019550808560051b8301018460005b878110156124e157848303601f190189526139c882886135d2565b60806139d48283612fea565b8287526139e48388018284612cc7565b925050506139f486830183612fea565b86830388880152613a06838284612cc7565b925050506040613a1881840184612fea565b87840383890152613a2a848284612cc7565b93505050506060613a3d818401846135d2565b92508582038187015250613a5181836135e8565b9a86019a94505050908301906001016139ad565b604081526000613a758485613589565b60a0604085015260e08401818152610100850190506101008260051b8601018360005b84811015613bfc5787830360ff1901845236869003609e1901823512613abd57600080fd5b613aca8235870180612fea565b60a08552613adc60a086018284612cc7565b9150613af19050833588016020810190613589565b85830360208701528281845260208401905060208260051b8501018360005b84811015613b6757868303601f19018452613b2b8287612fcb565b613b358182612fea565b60408652613b47604087018284612cc7565b602093840135968401969096525050938401939190910190600101613b10565b50613b7b905087358c0160408101906135d2565b94508781036040890152613b8f81866135e8565b9450613ba79350505050833588016060810190612fea565b8583036060870152613bba838284612cc7565b9250613bd0915050833588016080810190612fea565b8583036080870152613be3838284612cc7565b6020978801979096509490940193505050600101613a98565b5050613c0b6020890189613589565b94509250603f19915081868203016060870152613c298185856136d5565b935050613c396040880188613589565b925081868503016080870152613c5084848361378c565b935050613c606060880188613589565b9250818685030160a0870152613c7784848361383b565b935050613c876080880188613589565b9250818685030160c0870152613c9e848483613994565b94505050505061233e60208301846001600160a01b03169052565b60a081526000613ccd60a083018b8d612cc7565b8281036020840152613ce0818a8c612cc7565b90508281036040840152613cf581888a612cc7565b90508281036060840152613d0a818688612cc7565b9150506001600160a01b03831660808301529a9950505050505050505050565b60408152823560408201526000613d446020850185612fea565b610100806060860152613d5c61014086018385612cc7565b9250613d6b6040880188612fea565b9250603f1980878603016080880152613d85858584612cc7565b9450613d9460608a018a612fea565b94509150808786030160a0880152613dad858584612cc7565b9450613dbc60808a018a612fea565b94509150808786030160c0880152613dd5858584612cc7565b945060a089013560e088015260c089013583880152613df760e08a018a612fcb565b93508087860301610120880152505050613e118282613694565b9250505061233e60208301846001600160a01b03169052565b600082601f830112613e3b57600080fd5b81516020613e4b61283b83612d04565b82815260059290921b84018101918181019086841115613e6a57600080fd5b8286015b84811015612e6457805167ffffffffffffffff811115613e8e5760008081fd5b613e9c8986838b0101612d3e565b845250918301918301613e6e565b600060208284031215613ebc57600080fd5b815167ffffffffffffffff80821115613ed457600080fd5b9083019060808286031215613ee857600080fd5b613ef061271c565b82518152602083015182811115613f0657600080fd5b613f1287828601612d3e565b602083015250604083015182811115613f2a57600080fd5b613f3687828601613e2a565b604083015250606083015182811115613f4e57600080fd5b613f5a87828601613e2a565b60608301525095945050505050565b606081526000613f798586612fea565b606080850152613f8d60c085018284612cc7565b915050613f9d6020870187612fea565b605f1980868503016080870152613fb5848385612cc7565b9350613fc460408a018a612fea565b93509150808685030160a087015250613fde838383612cc7565b925050508281036020840152613ff48186613694565b915050826040830152949350505050565b606081526000614019606083018688612cc7565b6001600160a01b0385166020840152828103604084015261403a8185613030565b979650505050505050565b60006020828403121561405757600080fd5b815160ff8116811461233e57600080fd5b8183823760009101908152919050565b8181038181111561057a5761057a613189565b601f821115611ffa576000816000526020600020601f850160051c810160208610156140b45750805b601f850160051c820191505b818110156140d3578281556001016140c0565b505050505050565b67ffffffffffffffff8311156140f3576140f3612706565b614107836141018354613555565b8361408b565b6000601f84116001811461413b57600085156141235750838201355b600019600387901b1c1916600186901b1783556106a4565b600083815260209020601f19861690835b8281101561416c578685013582556020948501946001909201910161414c565b50868210156141895760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6040815260006141af604083018587612cc7565b82810360208401526130718185613694565b600082516141d3818460208701612412565b919091019291505056fea26469706673582212201d5e996ea7f6fe77d4859da1c28a8cd3b7e2d169289d24f122c5f09414e4e25764736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` +var ClaimsHelperArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"ClaimsHelper","sourceName":"contracts/ClaimsHelper.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"confirmedSignedBatches","outputs":[{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"currentBatchBlock","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_batchId","type":"uint256"}],"name":"getConfirmedSignedBatchData","outputs":[{"components":[{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.ConfirmedSignedBatchData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"numberOfVotes","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"resetCurrentBatchBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"destinationChainId","type":"string"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"string","name":"feePayerMultisigSignature","type":"string"},{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.SignedBatch","name":"_signedBatch","type":"tuple"}],"name":"setConfirmedSignedBatchData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_claimsAddress","type":"address"},{"internalType":"address","name":"_signedBatchesAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"setVoted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"uint256","name":"_quorumCnt","type":"uint256"}],"name":"setVotedOnlyIfNeeded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051611f996100fd60003960008181610ea801528181610ed101526110540152611f996000f3fe60806040526004361061010e5760003560e01c806386e71477116100a5578063ca68698211610074578063e2100f4d11610059578063e2100f4d1461038b578063e87c28a7146103b8578063f2fde38b146103d857600080fd5b8063ca68698214610333578063e038ab551461035357600080fd5b806386e71477146102195780638da5cb5b1461025b578063aadc3b72146102a2578063ad3cb1cc146102dd57600080fd5b806364d06b05116100e157806364d06b05146101a0578063715018a6146101c05780637f9b665c146101d55780638129fc1c1461020457600080fd5b806336bf07d3146101135780634d3f9c8e146101485780634f1ef2861461017657806352d1902d1461018b575b600080fd5b34801561011f57600080fd5b5061013361012e3660046114a2565b6103f8565b60405190151581526020015b60405180910390f35b34801561015457600080fd5b506101686101633660046114d5565b6104fc565b60405190815260200161013f565b61018961018436600461158b565b6105ac565b005b34801561019757600080fd5b506101686105cb565b3480156101ac57600080fd5b506101896101bb3660046115ed565b6105fa565b3480156101cc57600080fd5b50610189610733565b3480156101e157600080fd5b506101f56101f0366004611649565b610747565b60405161013f93929190611798565b34801561021057600080fd5b506101896109bc565b34801561022557600080fd5b506102496102343660046117b7565b60056020526000908152604090205460ff1681565b60405160ff909116815260200161013f565b34801561026757600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161013f565b3480156102ae57600080fd5b506101336102bd3660046117d0565b600460209081526000928352604080842090915290825290205460ff1681565b3480156102e957600080fd5b506103266040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161013f91906117fc565b34801561033f57600080fd5b5061018961034e366004611858565b610b00565b34801561035f57600080fd5b5061016861036e36600461189a565b805160208183018101805160038252928201919093012091525481565b34801561039757600080fd5b506103ab6103a63660046118d7565b610b6d565b60405161013f9190611923565b3480156103c457600080fd5b506101896103d3366004611952565b610dfe565b3480156103e457600080fd5b506101896103f336600461197c565b610e41565b6001546000906001600160a01b0316331480159061042157506000546001600160a01b03163314155b1561043f57604051639a4b386f60e01b815260040160405180910390fd5b60008381526004602090815260408083206001600160a01b038816845290915290205460ff1680610481575060008381526005602052604090205460ff168211155b1561048e575060006104f5565b60008381526004602090815260408083206001600160a01b03881684528252808320805460ff191660011790558583526005909152812080548492906104d69060ff166119ad565b91906101000a81548160ff021916908360ff160217905560ff16101590505b9392505050565b6001546000906001600160a01b0316331480159061052557506000546001600160a01b03163314155b1561054357604051639a4b386f60e01b815260040160405180910390fd5b60008281526004602090815260408083206001600160a01b03871684528252808320805460ff19166001179055848352600590915281208054829061058a9060ff166119ad565b825460ff9182166101009390930a838102920219161790915591505092915050565b6105b4610e9d565b6105bd82610f54565b6105c78282610f5c565b5050565b60006105d5611049565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6001546001600160a01b0316331480159061062057506000546001600160a01b03163314155b1561063e57604051639a4b386f60e01b815260040160405180910390fd5b36600061064e60208401846119cc565b604051919350915083359060a08501359060029061066f9086908690611a13565b90815260408051918290036020908101832060008681529152209190915560c0850135906002906106a39086908690611a13565b9081526040805160209281900383019020600085815292529020600101556106ce60e0850185611a23565b600284846040516106e0929190611a13565b90815260408051602092819003830190206000858152925290206002016107078282611dcb565b905050436003848460405161071d929190611a13565b9081526040519081900360200190205550505050565b61073b611092565b6107456000611106565b565b81518083016020908101805160028083529383019583019590952094905292835260009182526040808320805460018201548351948301805460609881028701890186529486018581529297919693959490938593928592919085015b82821015610893576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff16825260018101805492939192918401916107ee90611aa3565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90611aa3565b80156108675780601f1061083c57610100808354040283529160200191610867565b820191906000526020600020905b81548152906001019060200180831161084a57829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906107a4565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156109af576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff168252600181018054929391929184019161090a90611aa3565b80601f016020809104026020016040519081016040528092919081815260200182805461093690611aa3565b80156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906108c0565b5050505081525050905083565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610a075750825b905060008267ffffffffffffffff166001148015610a245750303b155b905081158015610a32575080155b15610a69576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a9d57845468ff00000000000000001916680100000000000000001785555b610aa633611184565b610aae611195565b8315610af957845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6000546001600160a01b03163314610b44576040517fd695af0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60001960038383604051610b59929190611a13565b908152604051908190036020019020555050565b610b7561144b565b60028484604051610b87929190611a13565b90815260408051602092819003830181206000868152908452828120606080840185528154845260018201548685015284516002830180549788028201830187528187018881529597939688019591949093859385929085015b82821015610cd0576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610c2b90611aa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5790611aa3565b8015610ca45780601f10610c7957610100808354040283529160200191610ca4565b820191906000526020600020905b815481529060010190602001808311610c8757829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610be1565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610dec576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610d4790611aa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7390611aa3565b8015610dc05780601f10610d9557610100808354040283529160200191610dc0565b820191906000526020600020905b815481529060010190602001808311610da357829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610cfd565b50505091525050905250949350505050565b610e06611092565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b610e49611092565b6001600160a01b038116610e91576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610e9a81611106565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f3657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f2a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156107455760405163703e46dd60e11b815260040160405180910390fd5b610e9a611092565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fb6575060408051601f3d908101601f19168201909252610fb391810190611f38565b60015b610fde57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e88565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461103a576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610e88565b611044838361119d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107455760405163703e46dd60e11b815260040160405180910390fd5b336110c47f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610745576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610e88565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61118c6111f3565b610e9a8161125a565b6107456111f3565b6111a682611262565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156111eb5761104482826112e6565b6105c761135c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610745576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e496111f3565b806001600160a01b03163b60000361129857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e88565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516113039190611f51565b600060405180830381855af49150503d806000811461133e576040519150601f19603f3d011682016040523d82523d6000602084013e611343565b606091505b5091509150611353858383611394565b95945050505050565b3415610745576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826113a9576113a482611409565b6104f5565b81511580156113c057506001600160a01b0384163b155b15611402576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e88565b50806104f5565b8051156114195780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001611481604051806040016040528060608152602001606081525090565b905290565b80356001600160a01b038116811461149d57600080fd5b919050565b6000806000606084860312156114b757600080fd5b6114c084611486565b95602085013595506040909401359392505050565b600080604083850312156114e857600080fd5b6114f183611486565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611530576115306114ff565b604051601f8501601f19908116603f01168101908282118183101715611558576115586114ff565b8160405280935085815286868601111561157157600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561159e57600080fd5b6115a783611486565b9150602083013567ffffffffffffffff8111156115c357600080fd5b8301601f810185136115d457600080fd5b6115e385823560208401611515565b9150509250929050565b6000602082840312156115ff57600080fd5b813567ffffffffffffffff81111561161657600080fd5b820161010081850312156104f557600080fd5b600082601f83011261163a57600080fd5b6104f583833560208501611515565b6000806040838503121561165c57600080fd5b823567ffffffffffffffff81111561167357600080fd5b61167f85828601611629565b95602094909401359450505050565b60005b838110156116a9578181015183820152602001611691565b50506000910152565b600081518084526116ca81602086016020860161168e565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561175d57601f198684030189528151608067ffffffffffffffff8251168552858201518187870152611733828701826116b2565b604084810151908801526060938401519390960192909252505097830197908301906001016116fb565b5090979650505050505050565b600081516040845261177f60408501826116de565b90506020830151848203602086015261135382826116de565b838152826020820152606060408201526000611353606083018461176a565b6000602082840312156117c957600080fd5b5035919050565b600080604083850312156117e357600080fd5b823591506117f360208401611486565b90509250929050565b6020815260006104f560208301846116b2565b60008083601f84011261182157600080fd5b50813567ffffffffffffffff81111561183957600080fd5b60208301915083602082850101111561185157600080fd5b9250929050565b6000806020838503121561186b57600080fd5b823567ffffffffffffffff81111561188257600080fd5b61188e8582860161180f565b90969095509350505050565b6000602082840312156118ac57600080fd5b813567ffffffffffffffff8111156118c357600080fd5b6118cf84828501611629565b949350505050565b6000806000604084860312156118ec57600080fd5b833567ffffffffffffffff81111561190357600080fd5b61190f8682870161180f565b909790965060209590950135949350505050565b602081528151602082015260208201516040820152600060408301516060808401526118cf608084018261176a565b6000806040838503121561196557600080fd5b61196e83611486565b91506117f360208401611486565b60006020828403121561198e57600080fd5b6104f582611486565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036119c3576119c3611997565b60010192915050565b6000808335601e198436030181126119e357600080fd5b83018035915067ffffffffffffffff8211156119fe57600080fd5b60200191503681900382131561185157600080fd5b8183823760009101908152919050565b60008235603e19833603018112611a3957600080fd5b9190910192915050565b6000808335601e19843603018112611a5a57600080fd5b83018035915067ffffffffffffffff821115611a7557600080fd5b6020019150600581901b360382131561185157600080fd5b60008235607e19833603018112611a3957600080fd5b600181811c90821680611ab757607f821691505b602082108103611ad757634e487b7160e01b600052602260045260246000fd5b50919050565b5b818110156105c75760008155600101611ade565b601f82111561104457806000526020600020601f840160051c81016020851015611b195750805b610af9601f850160051c830182611add565b67ffffffffffffffff831115611b4357611b436114ff565b611b5783611b518354611aa3565b83611af2565b6000601f841160018114611b8b5760008515611b735750838201355b600019600387901b1c1916600186901b178355610af9565b600083815260209020601f19861690835b82811015611bbc5786850135825560209485019460019092019101611b9c565b5086821015611bd95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813567ffffffffffffffff808216808314611c0557600080fd5b835467ffffffffffffffff19161783556020840135915036849003601e19018212611c2f57600080fd5b90830190813581811115611c4257600080fd5b602083019250803603831315611c5757600080fd5b611c65818460018701611b2b565b50505060408201356002820155606082013560038201555050565b68010000000000000000831115611c9957611c996114ff565b805483825580841015611d855760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611cda57611cda611997565b8086168614611ceb57611ceb611997565b506000838152602081208360021b81018760021b820191505b80821015611d80578282556001808301611d1e8154611aa3565b8015611d6757601f80821160018114611d3957878455611d64565b600084815260209020611d5583850160051c8201878301611add565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611d04565b505050505b5060008181526020812083915b85811015611dc357611dad611da78487611a8d565b83611beb565b6020929092019160049190910190600101611d92565b505050505050565b611dd58283611a43565b68010000000000000000811115611dee57611dee6114ff565b825481845580821015611eda5760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611e2f57611e2f611997565b8084168414611e4057611e40611997565b506000858152602081208360021b81018560021b820191505b80821015611ed5578282556001808301611e738154611aa3565b8015611ebc57601f80821160018114611e8e57878455611eb9565b600084815260209020611eaa83850160051c8201878301611add565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611e59565b505050505b5060008381526020812083915b83811015611f1257611efc611da78487611a8d565b6020929092019160049190910190600101611ee7565b5050505050611f246020830183611a43565b611f32818360018601611c80565b50505050565b600060208284031215611f4a57600080fd5b5051919050565b60008251611a3981846020870161168e56fea264697066735822122006e0af27223409af232d1ac9a43b9818b6ca89a72f905ca017ac0c3263715be164736f6c63430008180033","deployedBytecode":"0x60806040526004361061010e5760003560e01c806386e71477116100a5578063ca68698211610074578063e2100f4d11610059578063e2100f4d1461038b578063e87c28a7146103b8578063f2fde38b146103d857600080fd5b8063ca68698214610333578063e038ab551461035357600080fd5b806386e71477146102195780638da5cb5b1461025b578063aadc3b72146102a2578063ad3cb1cc146102dd57600080fd5b806364d06b05116100e157806364d06b05146101a0578063715018a6146101c05780637f9b665c146101d55780638129fc1c1461020457600080fd5b806336bf07d3146101135780634d3f9c8e146101485780634f1ef2861461017657806352d1902d1461018b575b600080fd5b34801561011f57600080fd5b5061013361012e3660046114a2565b6103f8565b60405190151581526020015b60405180910390f35b34801561015457600080fd5b506101686101633660046114d5565b6104fc565b60405190815260200161013f565b61018961018436600461158b565b6105ac565b005b34801561019757600080fd5b506101686105cb565b3480156101ac57600080fd5b506101896101bb3660046115ed565b6105fa565b3480156101cc57600080fd5b50610189610733565b3480156101e157600080fd5b506101f56101f0366004611649565b610747565b60405161013f93929190611798565b34801561021057600080fd5b506101896109bc565b34801561022557600080fd5b506102496102343660046117b7565b60056020526000908152604090205460ff1681565b60405160ff909116815260200161013f565b34801561026757600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161013f565b3480156102ae57600080fd5b506101336102bd3660046117d0565b600460209081526000928352604080842090915290825290205460ff1681565b3480156102e957600080fd5b506103266040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161013f91906117fc565b34801561033f57600080fd5b5061018961034e366004611858565b610b00565b34801561035f57600080fd5b5061016861036e36600461189a565b805160208183018101805160038252928201919093012091525481565b34801561039757600080fd5b506103ab6103a63660046118d7565b610b6d565b60405161013f9190611923565b3480156103c457600080fd5b506101896103d3366004611952565b610dfe565b3480156103e457600080fd5b506101896103f336600461197c565b610e41565b6001546000906001600160a01b0316331480159061042157506000546001600160a01b03163314155b1561043f57604051639a4b386f60e01b815260040160405180910390fd5b60008381526004602090815260408083206001600160a01b038816845290915290205460ff1680610481575060008381526005602052604090205460ff168211155b1561048e575060006104f5565b60008381526004602090815260408083206001600160a01b03881684528252808320805460ff191660011790558583526005909152812080548492906104d69060ff166119ad565b91906101000a81548160ff021916908360ff160217905560ff16101590505b9392505050565b6001546000906001600160a01b0316331480159061052557506000546001600160a01b03163314155b1561054357604051639a4b386f60e01b815260040160405180910390fd5b60008281526004602090815260408083206001600160a01b03871684528252808320805460ff19166001179055848352600590915281208054829061058a9060ff166119ad565b825460ff9182166101009390930a838102920219161790915591505092915050565b6105b4610e9d565b6105bd82610f54565b6105c78282610f5c565b5050565b60006105d5611049565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6001546001600160a01b0316331480159061062057506000546001600160a01b03163314155b1561063e57604051639a4b386f60e01b815260040160405180910390fd5b36600061064e60208401846119cc565b604051919350915083359060a08501359060029061066f9086908690611a13565b90815260408051918290036020908101832060008681529152209190915560c0850135906002906106a39086908690611a13565b9081526040805160209281900383019020600085815292529020600101556106ce60e0850185611a23565b600284846040516106e0929190611a13565b90815260408051602092819003830190206000858152925290206002016107078282611dcb565b905050436003848460405161071d929190611a13565b9081526040519081900360200190205550505050565b61073b611092565b6107456000611106565b565b81518083016020908101805160028083529383019583019590952094905292835260009182526040808320805460018201548351948301805460609881028701890186529486018581529297919693959490938593928592919085015b82821015610893576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff16825260018101805492939192918401916107ee90611aa3565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90611aa3565b80156108675780601f1061083c57610100808354040283529160200191610867565b820191906000526020600020905b81548152906001019060200180831161084a57829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906107a4565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156109af576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff168252600181018054929391929184019161090a90611aa3565b80601f016020809104026020016040519081016040528092919081815260200182805461093690611aa3565b80156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906108c0565b5050505081525050905083565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610a075750825b905060008267ffffffffffffffff166001148015610a245750303b155b905081158015610a32575080155b15610a69576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a9d57845468ff00000000000000001916680100000000000000001785555b610aa633611184565b610aae611195565b8315610af957845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6000546001600160a01b03163314610b44576040517fd695af0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60001960038383604051610b59929190611a13565b908152604051908190036020019020555050565b610b7561144b565b60028484604051610b87929190611a13565b90815260408051602092819003830181206000868152908452828120606080840185528154845260018201548685015284516002830180549788028201830187528187018881529597939688019591949093859385929085015b82821015610cd0576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610c2b90611aa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5790611aa3565b8015610ca45780601f10610c7957610100808354040283529160200191610ca4565b820191906000526020600020905b815481529060010190602001808311610c8757829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610be1565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610dec576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff1682526001810180549293919291840191610d4790611aa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7390611aa3565b8015610dc05780601f10610d9557610100808354040283529160200191610dc0565b820191906000526020600020905b815481529060010190602001808311610da357829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610cfd565b50505091525050905250949350505050565b610e06611092565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b610e49611092565b6001600160a01b038116610e91576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610e9a81611106565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f3657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f2a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156107455760405163703e46dd60e11b815260040160405180910390fd5b610e9a611092565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fb6575060408051601f3d908101601f19168201909252610fb391810190611f38565b60015b610fde57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e88565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461103a576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610e88565b611044838361119d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107455760405163703e46dd60e11b815260040160405180910390fd5b336110c47f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610745576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610e88565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61118c6111f3565b610e9a8161125a565b6107456111f3565b6111a682611262565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156111eb5761104482826112e6565b6105c761135c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610745576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e496111f3565b806001600160a01b03163b60000361129857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e88565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516113039190611f51565b600060405180830381855af49150503d806000811461133e576040519150601f19603f3d011682016040523d82523d6000602084013e611343565b606091505b5091509150611353858383611394565b95945050505050565b3415610745576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826113a9576113a482611409565b6104f5565b81511580156113c057506001600160a01b0384163b155b15611402576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e88565b50806104f5565b8051156114195780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001611481604051806040016040528060608152602001606081525090565b905290565b80356001600160a01b038116811461149d57600080fd5b919050565b6000806000606084860312156114b757600080fd5b6114c084611486565b95602085013595506040909401359392505050565b600080604083850312156114e857600080fd5b6114f183611486565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611530576115306114ff565b604051601f8501601f19908116603f01168101908282118183101715611558576115586114ff565b8160405280935085815286868601111561157157600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561159e57600080fd5b6115a783611486565b9150602083013567ffffffffffffffff8111156115c357600080fd5b8301601f810185136115d457600080fd5b6115e385823560208401611515565b9150509250929050565b6000602082840312156115ff57600080fd5b813567ffffffffffffffff81111561161657600080fd5b820161010081850312156104f557600080fd5b600082601f83011261163a57600080fd5b6104f583833560208501611515565b6000806040838503121561165c57600080fd5b823567ffffffffffffffff81111561167357600080fd5b61167f85828601611629565b95602094909401359450505050565b60005b838110156116a9578181015183820152602001611691565b50506000910152565b600081518084526116ca81602086016020860161168e565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561175d57601f198684030189528151608067ffffffffffffffff8251168552858201518187870152611733828701826116b2565b604084810151908801526060938401519390960192909252505097830197908301906001016116fb565b5090979650505050505050565b600081516040845261177f60408501826116de565b90506020830151848203602086015261135382826116de565b838152826020820152606060408201526000611353606083018461176a565b6000602082840312156117c957600080fd5b5035919050565b600080604083850312156117e357600080fd5b823591506117f360208401611486565b90509250929050565b6020815260006104f560208301846116b2565b60008083601f84011261182157600080fd5b50813567ffffffffffffffff81111561183957600080fd5b60208301915083602082850101111561185157600080fd5b9250929050565b6000806020838503121561186b57600080fd5b823567ffffffffffffffff81111561188257600080fd5b61188e8582860161180f565b90969095509350505050565b6000602082840312156118ac57600080fd5b813567ffffffffffffffff8111156118c357600080fd5b6118cf84828501611629565b949350505050565b6000806000604084860312156118ec57600080fd5b833567ffffffffffffffff81111561190357600080fd5b61190f8682870161180f565b909790965060209590950135949350505050565b602081528151602082015260208201516040820152600060408301516060808401526118cf608084018261176a565b6000806040838503121561196557600080fd5b61196e83611486565b91506117f360208401611486565b60006020828403121561198e57600080fd5b6104f582611486565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036119c3576119c3611997565b60010192915050565b6000808335601e198436030181126119e357600080fd5b83018035915067ffffffffffffffff8211156119fe57600080fd5b60200191503681900382131561185157600080fd5b8183823760009101908152919050565b60008235603e19833603018112611a3957600080fd5b9190910192915050565b6000808335601e19843603018112611a5a57600080fd5b83018035915067ffffffffffffffff821115611a7557600080fd5b6020019150600581901b360382131561185157600080fd5b60008235607e19833603018112611a3957600080fd5b600181811c90821680611ab757607f821691505b602082108103611ad757634e487b7160e01b600052602260045260246000fd5b50919050565b5b818110156105c75760008155600101611ade565b601f82111561104457806000526020600020601f840160051c81016020851015611b195750805b610af9601f850160051c830182611add565b67ffffffffffffffff831115611b4357611b436114ff565b611b5783611b518354611aa3565b83611af2565b6000601f841160018114611b8b5760008515611b735750838201355b600019600387901b1c1916600186901b178355610af9565b600083815260209020601f19861690835b82811015611bbc5786850135825560209485019460019092019101611b9c565b5086821015611bd95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813567ffffffffffffffff808216808314611c0557600080fd5b835467ffffffffffffffff19161783556020840135915036849003601e19018212611c2f57600080fd5b90830190813581811115611c4257600080fd5b602083019250803603831315611c5757600080fd5b611c65818460018701611b2b565b50505060408201356002820155606082013560038201555050565b68010000000000000000831115611c9957611c996114ff565b805483825580841015611d855760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611cda57611cda611997565b8086168614611ceb57611ceb611997565b506000838152602081208360021b81018760021b820191505b80821015611d80578282556001808301611d1e8154611aa3565b8015611d6757601f80821160018114611d3957878455611d64565b600084815260209020611d5583850160051c8201878301611add565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611d04565b505050505b5060008181526020812083915b85811015611dc357611dad611da78487611a8d565b83611beb565b6020929092019160049190910190600101611d92565b505050505050565b611dd58283611a43565b68010000000000000000811115611dee57611dee6114ff565b825481845580821015611eda5760027f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314611e2f57611e2f611997565b8084168414611e4057611e40611997565b506000858152602081208360021b81018560021b820191505b80821015611ed5578282556001808301611e738154611aa3565b8015611ebc57601f80821160018114611e8e57878455611eb9565b600084815260209020611eaa83850160051c8201878301611add565b50600084815260208120818655555b50505b5050508284830155826003830155600482019150611e59565b505050505b5060008381526020812083915b83811015611f1257611efc611da78487611a8d565b6020929092019160049190910190600101611ee7565b5050505050611f246020830183611a43565b611f32818360018601611c80565b50505050565b600060208284031215611f4a57600080fd5b5051919050565b60008251611a3981846020870161168e56fea264697066735822122006e0af27223409af232d1ac9a43b9818b6ca89a72f905ca017ac0c3263715be164736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` +var ClaimsArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"Claims","sourceName":"contracts/Claims.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"chainTokenQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"getBatchingTxsCount","outputs":[{"internalType":"uint256","name":"counterConfirmedTransactions","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getConfirmedTransaction","outputs":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"blockHeight","type":"uint256"},{"internalType":"string","name":"sourceChainID","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ConfirmedTransaction","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"getTokenQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"address","name":"_voter","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_maxNumberOfTransactions","type":"uint16"},{"internalType":"uint8","name":"_timeoutBlocksNumber","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"isChainRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"lastBatchedTxNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"lastConfirmedTxNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxNumberOfTransactions","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"nextTimeoutBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"resetCurrentBatchBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"setChainRegistered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"},{"internalType":"address","name":"_claimsHelperAddress","type":"address"},{"internalType":"address","name":"_utxosc","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"setNextTimeoutBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"},{"internalType":"uint256","name":"_tokenQuantity","type":"uint256"}],"name":"setTokenQuantity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"setVoted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"shouldCreateBatch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"components":[{"internalType":"string","name":"destinationAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.Receiver[]","name":"receivers","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"outputUTXO","type":"tuple"},{"internalType":"string","name":"sourceChainID","type":"string"},{"internalType":"string","name":"destinationChainID","type":"string"}],"internalType":"struct IBridgeStructs.BridgingRequestClaim[]","name":"bridgingRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"outputUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.BatchExecutedClaim[]","name":"batchExecutedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"uint256","name":"batchNonceID","type":"uint256"}],"internalType":"struct IBridgeStructs.BatchExecutionFailedClaim[]","name":"batchExecutionFailedClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"previousRefundTxHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"receiver","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"uint256","name":"retryCounter","type":"uint256"}],"internalType":"struct IBridgeStructs.RefundRequestClaim[]","name":"refundRequestClaims","type":"tuple[]"},{"components":[{"internalType":"string","name":"observedTransactionHash","type":"string"},{"internalType":"string","name":"chainID","type":"string"},{"internalType":"string","name":"refundTxHash","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"utxo","type":"tuple"}],"internalType":"struct IBridgeStructs.RefundExecutedClaim[]","name":"refundExecutedClaims","type":"tuple[]"}],"internalType":"struct IBridgeStructs.ValidatorClaims","name":"_claims","type":"tuple"},{"internalType":"address","name":"_caller","type":"address"}],"name":"submitClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timeoutBlocksNumber","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613b4b62000104600039600081816115060152818161152f01526116b20152613b4b6000f3fe6080604052600436106101a15760003560e01c80636cabee01116100e1578063ad3cb1cc1161008a578063d9dee84411610064578063d9dee8441461056d578063e3aa21f41461058d578063eab481c3146105ad578063f2fde38b146105cd57600080fd5b8063ad3cb1cc146104c9578063c34872551461051f578063ca6869821461054d57600080fd5b806377968b34116100bb57806377968b34146104425780638da5cb5b14610462578063aadc3b72146104a957600080fd5b80636cabee01146103c85780636cc8f8c7146103f5578063715018a61461042d57600080fd5b806344e3bd221161014e5780634d3f9c8e116101285780634d3f9c8e146103605780634f1ef2861461038057806352d1902d146103935780635673ee67146103a857600080fd5b806344e3bd22146102d05780634ae4dd7c146102f05780634b4c1f841461032857600080fd5b80631d530f121161017f5780631d530f121461024657806334d581401461027e5780633bde7d2e146102b057600080fd5b80630a19c4d2146101a65780630d32b63e146101d957806318c586cd146101fb575b600080fd5b3480156101b257600080fd5b506101c66101c13660046127ea565b6105ed565b6040519081526020015b60405180910390f35b3480156101e557600080fd5b506101f96101f436600461282c565b610619565b005b34801561020757600080fd5b506102366102163660046129b4565b805160208183018101805160048252928201919093012091525460ff1681565b60405190151581526020016101d0565b34801561025257600080fd5b506101c66102613660046129b4565b8051602081830181018051600a8252928201919093012091525481565b34801561028a57600080fd5b5060065461029e9062010000900460ff1681565b60405160ff90911681526020016101d0565b3480156102bc57600080fd5b506101f96102cb366004612a05565b610681565b3480156102dc57600080fd5b506101c66102eb3660046127ea565b6106e6565b3480156102fc57600080fd5b506101c661030b3660046129b4565b805160208183018101805160058252928201919093012091525481565b34801561033457600080fd5b506101c66103433660046129b4565b805160208183018101805160098252928201919093012091525481565b34801561036c57600080fd5b506101c661037b366004612a59565b61080a565b6101f961038e366004612a83565b6108cd565b34801561039f57600080fd5b506101c66108ec565b3480156103b457600080fd5b506101f96103c3366004612ae5565b61091b565b3480156103d457600080fd5b506103e86103e336600461282c565b610d76565b6040516101d09190612b88565b34801561040157600080fd5b506101c66104103660046129b4565b805160208183018101805160078252928201919093012091525481565b34801561043957600080fd5b506101f9611017565b34801561044e57600080fd5b5061023661045d3660046127ea565b61102b565b34801561046e57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101d0565b3480156104b557600080fd5b506102366104c4366004612c53565b611109565b3480156104d557600080fd5b506105126040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101d09190612c76565b34801561052b57600080fd5b5060065461053a9061ffff1681565b60405161ffff90911681526020016101d0565b34801561055957600080fd5b506101f96105683660046127ea565b611198565b34801561057957600080fd5b506101f9610588366004612c98565b61122b565b34801561059957600080fd5b506101f96105a836600461282c565b61138f565b3480156105b957600080fd5b506101f96105c83660046127ea565b6113cd565b3480156105d957600080fd5b506101f96105e8366004612cd8565b611430565b600060078383604051610601929190612cf3565b90815260200160405180910390205490505b92915050565b6000546001600160a01b0316331461064457604051637fea9dc560e01b815260040160405180910390fd5b60065461065a9062010000900460ff1682612d19565b6005848460405161066c929190612cf3565b90815260405190819003602001902055505050565b610689611487565b600080546001600160a01b0395861673ffffffffffffffffffffffffffffffffffffffff19918216179091556001805494861694821694909417909355600280549285169284169290921790915560038054919093169116179055565b600080600984846040516106fb929190612cf3565b90815260200160405180910390205490506000600a8585604051610720929190612cf3565b9081526040519081900360200190205460065490915060009061ffff166107478385612d2c565b101561075c576107578284612d2c565b610764565b60065461ffff165b9050600093505b8084101561080157600060088787604051610787929190612cf3565b90815260405190819003602001902060006107a28786612d19565b6107ad906001612d19565b8152602001908152602001600020600201549050600587876040516107d3929190612cf3565b90815260200160405180910390205481106107ee5750610801565b846107f881612d3f565b9550505061076b565b50505092915050565b600080546001600160a01b0316331461083657604051637fea9dc560e01b815260040160405180910390fd5b6001546040517f4d3f9c8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905290911690634d3f9c8e906044016020604051808303816000875af11580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c69190612d58565b9392505050565b6108d56114fb565b6108de826115b2565b6108e882826115ba565b5050565b60006108f66116a7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000546001600160a01b0316331461094657604051637fea9dc560e01b815260040160405180910390fd5b60006109528380612d71565b9050905060005b81811015610abd573661096c8580612d71565b8381811061097c5761097c612dbb565b905060200281019061098e9190612dd1565b90503660006109a06060840184612df1565b90925090503660006109b56080860186612df1565b91509150600484846040516109cb929190612cf3565b9081526040519081900360200190205460ff16610a0857838360405163af0ab70960e01b81526004016109ff929190612e61565b60405180910390fd5b60048282604051610a1a929190612cf3565b9081526040519081900360200190205460ff16610a4e57818160405163af0ab70960e01b81526004016109ff929190612e61565b6000610a6e610a606020880188612d71565b610a6991612e99565b6116f0565b90508060078686604051610a83929190612cf3565b9081526020016040518091039020541015610aa357505050505050610ab5565b610aae868a8361173d565b5050505050505b600101610959565b506000610acd6020850185612d71565b9050905060005b81811015610b7d5736610aea6020870187612d71565b83818110610afa57610afa612dbb565b9050602002810190610b0c9190612f47565b90506004610b1d6020830183612df1565b604051610b2b929190612cf3565b9081526040519081900360200190205460ff16610b6a57610b4f6020820182612df1565b60405163af0ab70960e01b81526004016109ff929190612e61565b610b748186611a43565b50600101610ad4565b506000610b8d6040860186612d71565b9050905060005b81811015610c225736610baa6040880188612d71565b83818110610bba57610bba612dbb565b9050602002810190610bcc9190612f5d565b90506004610bdd6020830183612df1565b604051610beb929190612cf3565b9081526040519081900360200190205460ff16610c0f57610b4f6020820182612df1565b610c198187611f56565b50600101610b94565b506000610c326060870187612d71565b9050905060005b81811015610cc75736610c4f6060890189612d71565b83818110610c5f57610c5f612dbb565b9050602002810190610c719190612f73565b90506004610c826040830183612df1565b604051610c90929190612cf3565b9081526040519081900360200190205460ff16610cb457610b4f6040820182612df1565b610cbe8188612138565b50600101610c39565b506000610cd76080880188612d71565b9050905060005b81811015610d6c5736610cf460808a018a612d71565b83818110610d0457610d04612dbb565b9050602002810190610d169190612f47565b90506004610d276020830183612df1565b604051610d35929190612cf3565b9081526040519081900360200190205460ff16610d5957610b4f6020820182612df1565b610d638189612257565b50600101610cde565b5050505050505050565b610da86040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b60088484604051610dba929190612cf3565b9081526040805191829003602090810183206000868152915281902060a08301909152805482908290610dec90612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1890612f89565b8015610e655780601f10610e3a57610100808354040283529160200191610e65565b820191906000526020600020905b815481529060010190602001808311610e4857829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382018054610e9290612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebe90612f89565b8015610f0b5780601f10610ee057610100808354040283529160200191610f0b565b820191906000526020600020905b815481529060010190602001808311610eee57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156110075783829060005260206000209060020201604051806040016040529081600082018054610f6c90612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9890612f89565b8015610fe55780601f10610fba57610100808354040283529160200191610fe5565b820191906000526020600020905b815481529060010190602001808311610fc857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610f39565b5050509152509095945050505050565b61101f611487565b611029600061226a565b565b60015460405163e038ab5560e01b8152600091600019916001600160a01b039091169063e038ab55906110649087908790600401612e61565b602060405180830381865afa158015611081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a59190612d58565b146110b257506000610613565b60006110be84846106e6565b60065490915061ffff168110158061110157506000811180156111015750600584846040516110ee929190612cf3565b9081526020016040518091039020544310155b949350505050565b6001546040517faadc3b72000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152600092169063aadc3b7290604401602060405180830381865afa158015611174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c69190612fc3565b6000546001600160a01b031633146111c357604051637fea9dc560e01b815260040160405180910390fd5b60015460405163653434c160e11b81526001600160a01b039091169063ca686982906111f59085908590600401612e61565b600060405180830381600087803b15801561120f57600080fd5b505af1158015611223573d6000803e3d6000fd5b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112765750825b905060008267ffffffffffffffff1660011480156112935750303b155b9050811580156112a1575080155b156112d8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561130c57845468ff00000000000000001916680100000000000000001785555b611315336122e8565b61131d6122f9565b6006805460ff8816620100000262ffffff1990911661ffff8a1617179055831561138657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000546001600160a01b031633146113ba57604051637fea9dc560e01b815260040160405180910390fd5b806007848460405161066c929190612cf3565b6000546001600160a01b031633146113f857604051637fea9dc560e01b815260040160405180910390fd5b60016004838360405161140c929190612cf3565b908152604051908190036020019020805491151560ff199092169190911790555050565b611438611487565b6001600160a01b03811661147b576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016109ff565b6114848161226a565b50565b336114b97f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611029576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016109ff565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061159457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156110295760405163703e46dd60e11b815260040160405180910390fd5b611484611487565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611614575060408051601f3d908101601f1916820190925261161191810190612d58565b60015b61163c57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016109ff565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611698576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016109ff565b6116a28383612301565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110295760405163703e46dd60e11b815260040160405180910390fd5b80516000908190815b818110156117345784818151811061171357611713612dbb565b6020026020010151602001518361172a9190612d19565b92506001016116f9565b50909392505050565b600083604051602001611750919061311b565b60408051808303601f1901815282825280516020918201206001546003546306c38c6d60e51b865293519195506000946001600160a01b03918216946336bf07d3948a9489949092169263d8718da092600480830193928290030181865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e49190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af115801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e9190612fc3565b90508015611a3c573660006118766080880188612df1565b909250905036600061188b60608a018a612df1565b9150915086600783836040516118a2929190612cf3565b908152602001604051809103902060008282546118bf9190612d2c565b90915550506002546001600160a01b031663bb1da9c983836118e460408e018e612f47565b6040518463ffffffff1660e01b815260040161190293929190613265565b600060405180830381600087803b15801561191c57600080fd5b505af1158015611930573d6000803e3d6000fd5b50505050600061194085856106e6565b905061194b8a612357565b60015460405163e038ab5560e01b81526001600160a01b039091169063e038ab559061197d9088908890600401612e61565b602060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119be9190612d58565b6000191480156119cc575080155b80156119f85750600585856040516119e5929190612cf3565b9081526020016040518091039020544310155b15611a3657600654611a139062010000900460ff1643612d19565b60058686604051611a25929190612cf3565b908152604051908190036020019020555b50505050505b5050505050565b600082604051602001611a569190613329565b60408051808303601f1901815282825280516020918201206001546003546306c38c6d60e51b865293519195506000946001600160a01b03918216946336bf07d394899489949092169263d8718da092600480830193928290030181865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea9190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af1158015611b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b649190612fc3565b90508015611f5057366000611b7c6020870187612df1565b60015460405163653434c160e11b81529294509092506001600160a01b03169063ca68698290611bb29085908590600401612e61565b600060405180830381600087803b158015611bcc57600080fd5b505af1158015611be0573d6000803e3d6000fd5b5050600154604080517fe2100f4d000000000000000000000000000000000000000000000000000000008152600094506001600160a01b03909216925063e2100f4d91611c3791879187918d0135906004016133a7565b600060405180830381865afa158015611c54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c7c91908101906134f1565b8051602082015191925090815b818111611df757611db060088787604051611ca5929190612cf3565b9081526040805191829003602090810183206000868152908252828120600401805480840286018401909452838552929184015b82821015611da75783829060005260206000209060020201604051806040016040529081600082018054611d0c90612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3890612f89565b8015611d855780601f10611d5a57610100808354040283529160200191611d85565b820191906000526020600020905b815481529060010190602001808311611d6857829003601f168201915b5050505050815260200160018201548152505081526020019060010190611cd9565b505050506116f0565b60078787604051611dc2929190612cf3565b90815260200160405180910390206000828254611ddf9190612d19565b90915550819050611def81612d3f565b915050611c89565b508260200151600a8686604051611e0f929190612cf3565b90815260405190819003602001902055600654611e369060ff620100009091041643612d19565b60058686604051611e48929190612cf3565b908152604051908190036020019020556002546001600160a01b031663b1f08d6b8686611e7860608e018e6135c4565b6040518463ffffffff1660e01b8152600401611e96939291906135da565b600060405180830381600087803b158015611eb057600080fd5b505af1158015611ec4573d6000803e3d6000fd5b505060025460408087015190517f1754a61f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169350631754a61f9250611f18918991899160040161367f565b600060405180830381600087803b158015611f3257600080fd5b505af1158015611f46573d6000803e3d6000fd5b5050505050505050505b50505050565b600082604051602001611f6991906136d3565b60408051808303601f1901815282825280516020918201206001546003546306c38c6d60e51b865293519195506000946001600160a01b03918216946336bf07d394899489949092169263d8718da092600480830193928290030181865afa158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd9190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af1158015612053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120779190612fc3565b90508015611f505736600061208f6020870187612df1565b60015460405163653434c160e11b81529294509092506001600160a01b03169063ca686982906120c59085908590600401612e61565b600060405180830381600087803b1580156120df57600080fd5b505af11580156120f3573d6000803e3d6000fd5b505060065461210e925062010000900460ff16905043612d19565b60058383604051612120929190612cf3565b90815260405190819003602001902055505050505050565b60008260405160200161214b9190613737565b60408051601f1981840301815282825280516020918201206001546003546306c38c6d60e51b865293519195506001600160a01b03908116946336bf07d39488948894919093169263d8718da092600480820193918290030181865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dd9190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af1158015612233573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190612fc3565b60008260405160200161214b9190613866565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6122f0612549565b611484816125b0565b611029612549565b61230a826125b8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561234f576116a2828261263c565b6108e86126b2565b3660006123676080840184612df1565b9150915060006009838360405161237f929190612cf3565b90815260200160405180910390206000815461239a90612d3f565b918290555090506123ab8480612df1565b600885856040516123bd929190612cf3565b9081526040805160209281900383019020600086815292529020916123e391908361394a565b506123f16060850185612df1565b60088585604051612403929190612cf3565b90815260408051602092819003830190206000868152925290206003019161242c91908361394a565b508060088484604051612440929190612cf3565b908152604080516020928190038301902060008581529083529081206001019290925561246f90860186612d71565b9050905060005b818110156125085760088585604051612490929190612cf3565b9081526040805160209281900383019020600086815290835220600401906124ba90880188612d71565b838181106124ca576124ca612dbb565b90506020028101906124dc91906135c4565b8154600181018355600092835260209092209091600202016124fe8282613a0a565b5050600101612476565b50436008858560405161251c929190612cf3565b90815260200160405180910390206000848152602001908152602001600020600201819055505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611029576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611438612549565b806001600160a01b03163b6000036125ee57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016109ff565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126599190613b03565b600060405180830381855af49150503d8060008114612694576040519150601f19603f3d011682016040523d82523d6000602084013e612699565b606091505b50915091506126a98583836126ea565b95945050505050565b3415611029576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826126ff576126fa8261275f565b6108c6565b815115801561271657506001600160a01b0384163b155b15612758576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109ff565b50806108c6565b80511561276f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f8401126127b357600080fd5b50813567ffffffffffffffff8111156127cb57600080fd5b6020830191508360208285010111156127e357600080fd5b9250929050565b600080602083850312156127fd57600080fd5b823567ffffffffffffffff81111561281457600080fd5b612820858286016127a1565b90969095509350505050565b60008060006040848603121561284157600080fd5b833567ffffffffffffffff81111561285857600080fd5b612864868287016127a1565b909790965060209590950135949350505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156128b1576128b1612878565b60405290565b6040516080810167ffffffffffffffff811182821017156128b1576128b1612878565b6040516060810167ffffffffffffffff811182821017156128b1576128b1612878565b604051601f8201601f1916810167ffffffffffffffff8111828210171561292657612926612878565b604052919050565b600067ffffffffffffffff82111561294857612948612878565b50601f01601f191660200190565b60006129696129648461292e565b6128fd565b905082815283838301111561297d57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126129a557600080fd5b6108c683833560208501612956565b6000602082840312156129c657600080fd5b813567ffffffffffffffff8111156129dd57600080fd5b61110184828501612994565b80356001600160a01b0381168114612a0057600080fd5b919050565b60008060008060808587031215612a1b57600080fd5b612a24856129e9565b9350612a32602086016129e9565b9250612a40604086016129e9565b9150612a4e606086016129e9565b905092959194509250565b60008060408385031215612a6c57600080fd5b612a75836129e9565b946020939093013593505050565b60008060408385031215612a9657600080fd5b612a9f836129e9565b9150602083013567ffffffffffffffff811115612abb57600080fd5b8301601f81018513612acc57600080fd5b612adb85823560208401612956565b9150509250929050565b60008060408385031215612af857600080fd5b823567ffffffffffffffff811115612b0f57600080fd5b830160a08186031215612b2157600080fd5b9150612b2f602084016129e9565b90509250929050565b60005b83811015612b53578181015183820152602001612b3b565b50506000910152565b60008151808452612b74816020860160208601612b38565b601f01601f19169290920160200192915050565b60006020808352835160a082850152612ba460c0850182612b5c565b90508185015160408160408701526040870151606087015260608701519150601f1980878503016080880152612bda8484612b5c565b6080890151888203830160a08a015280518083529195508601935085850190600581901b8601870160005b82811015612c44578488830301845286518051878452612c2788850182612b5c565b918b0151938b019390935296890196938901939150600101612c05565b509a9950505050505050505050565b60008060408385031215612c6657600080fd5b82359150612b2f602084016129e9565b6020815260006108c66020830184612b5c565b60ff8116811461148457600080fd5b60008060408385031215612cab57600080fd5b823561ffff81168114612cbd57600080fd5b91506020830135612ccd81612c89565b809150509250929050565b600060208284031215612cea57600080fd5b6108c6826129e9565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561061357610613612d03565b8181038181111561061357610613612d03565b600060018201612d5157612d51612d03565b5060010190565b600060208284031215612d6a57600080fd5b5051919050565b6000808335601e19843603018112612d8857600080fd5b83018035915067ffffffffffffffff821115612da357600080fd5b6020019150600581901b36038213156127e357600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235609e19833603018112612de757600080fd5b9190910192915050565b6000808335601e19843603018112612e0857600080fd5b83018035915067ffffffffffffffff821115612e2357600080fd5b6020019150368190038213156127e357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611101602083018486612e38565b600067ffffffffffffffff821115612e8f57612e8f612878565b5060051b60200190565b6000612ea761296484612e75565b80848252602080830192508560051b850136811115612ec557600080fd5b855b81811015612f3b57803567ffffffffffffffff80821115612ee85760008081fd5b818901915060408236031215612efe5760008081fd5b612f0661288e565b823582811115612f165760008081fd5b612f2236828601612994565b8252509185013585830152508552938201938201612ec7565b50919695505050505050565b60008235607e19833603018112612de757600080fd5b60008235605e19833603018112612de757600080fd5b6000823560fe19833603018112612de757600080fd5b600181811c90821680612f9d57607f821691505b602082108103612fbd57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612fd557600080fd5b815180151581146108c657600080fd5b6000808335601e19843603018112612ffc57600080fd5b830160208101925035905067ffffffffffffffff81111561301c57600080fd5b8036038213156127e357600080fd5b6000808335601e1984360301811261304257600080fd5b830160208101925035905067ffffffffffffffff81111561306257600080fd5b8060051b36038213156127e357600080fd5b60008235603e1983360301811261308a57600080fd5b90910192915050565b60008235607e1983360301811261308a57600080fd5b67ffffffffffffffff8116811461148457600080fd5b600081356130cc816130a9565b67ffffffffffffffff1683526130e56020830183612fe5565b608060208601526130fa608086018284612e38565b91505060408301356040850152606083013560608501528091505092915050565b6000602080835261312c8485612fe5565b60a08386015261314060c086018284612e38565b91505061314f8286018661302b565b601f19604081888603016040890152848386528686019050868460051b8701018560005b868110156131c4578589840301845261318c8289613074565b6131968182612fe5565b8786526131a68887018284612e38565b928d0135958d019590955250938a0193925090890190600101613173565b50506131d360408c018c613093565b9750838a82030160608b01526131e981896130bf565b97505050506131fb6060890189612fe5565b9450925080878603016080880152613214858585612e38565b94506132236080890189612fe5565b94509250808786030160a0880152505061323e838383612e38565b9695505050505050565b60006020828403121561325a57600080fd5b81516108c681612c89565b604081526000613279604083018587612e38565b828103602084015261323e81856130bf565b6000838385526020808601955060208560051b8301018460005b878110156132db57848303601f190189526132c9836132c4848a613093565b6130bf565b988401989250908301906001016132a5565b5090979650505050505050565b60006132f4828361302b565b6040855261330660408601828461328b565b915050613316602084018461302b565b858303602087015261323e83828461328b565b6020815260006133398384612fe5565b6080602085015261334e60a085018284612e38565b91505061335e6020850185612fe5565b601f1980868503016040870152613376848385612e38565b93506040870135606087015261338f6060880188613074565b92508086850301608087015250506126a982826132e8565b6040815260006133bb604083018587612e38565b9050826020830152949350505050565b600082601f8301126133dc57600080fd5b815160206133ec61296483612e75565b82815260059290921b8401810191818101908684111561340b57600080fd5b8286015b848110156134e657805167ffffffffffffffff808211156134305760008081fd5b908801906080828b03601f190181131561344a5760008081fd5b6134526128b7565b8784015161345f816130a9565b8152604084810151848111156134755760008081fd5b85019350603f84018d136134895760008081fd5b888401516134996129648261292e565b8181528e838388010111156134ae5760008081fd5b6134bd828c8301858901612b38565b838b0152506060858101519183019190915291909301519083015250835291830191830161340f565b509695505050505050565b60006020828403121561350357600080fd5b815167ffffffffffffffff8082111561351b57600080fd5b908301906060828603121561352f57600080fd5b6135376128da565b825181526020830151602082015260408301518281111561355757600080fd5b92909201916040838703121561356c57600080fd5b61357461288e565b83518381111561358357600080fd5b61358f888287016133cb565b8252506020840151838111156135a457600080fd5b6135b0888287016133cb565b602083015250604082015295945050505050565b60008235603e19833603018112612de757600080fd5b6040815260006135ee604083018587612e38565b828103602084015261323e81856132e8565b600082825180855260208086019550808260051b84010181860160005b848110156132db57601f198684030189528151608067ffffffffffffffff825116855285820151818787015261365582870182612b5c565b6040848101519088015260609384015193909601929092525050978301979083019060010161361d565b604081526000613693604083018587612e38565b82810360208401528351604082526136ae6040830182613600565b9050602085015182820360208401526136c78282613600565b98975050505050505050565b6020815260006136e38384612fe5565b606060208501526136f8608085018284612e38565b9150506137086020850185612fe5565b848303601f1901604086015261371f838284612e38565b92505050604084013560608401528091505092915050565b6020815260006137478384612fe5565b61010080602086015261375f61012086018385612e38565b925061376e6020870187612fe5565b9250601f1980878603016040880152613788858584612e38565b94506137976040890189612fe5565b94509150808786030160608801526137b0858584612e38565b94506137bf6060890189612fe5565b94509150808786030160808801526137d8858584612e38565b94506137e76080890189613093565b9350808786030160a08801526137fd85856130bf565b945061380c60a0890189612fe5565b94509150808786030160c0880152613825858584612e38565b945061383460c0890189612fe5565b94509150808786030160e08801525061384e848483612e38565b93505060e08601358186015250508091505092915050565b6020815260006138768384612fe5565b6080602085015261388b60a085018284612e38565b91505061389b6020850185612fe5565b601f19808685030160408701526138b3848385612e38565b93506138c26040880188612fe5565b93509150808685030160608701526138db848484612e38565b93506138ea6060880188613093565b92508086850301608087015250506126a982826130bf565b601f8211156116a2576000816000526020600020601f850160051c8101602086101561392b5750805b601f850160051c820191505b8181101561122357828155600101613937565b67ffffffffffffffff83111561396257613962612878565b613976836139708354612f89565b83613902565b6000601f8411600181146139aa57600085156139925750838201355b600019600387901b1c1916600186901b178355611a3c565b600083815260209020601f19861690835b828110156139db57868501358255602094850194600190920191016139bb565b50868210156139f85760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135601e19833603018112613a1e57600080fd5b8201803567ffffffffffffffff811115613a3757600080fd5b60208136038184011315613a4a57600080fd5b613a5e82613a588654612f89565b86613902565b6000601f831160018114613a945760008415613a7c57508482018301355b600019600386901b1c1916600185901b178655613af1565b600086815260209020601f19851690835b82811015613ac6578785018601358255938501936001909101908501613aa5565b5085821015613ae55760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b60008251612de7818460208701612b3856fea264697066735822122085870283a494f4a4dfbc83aa25709e6fd7fe7df1343d0aee3c77b460eb64661664736f6c63430008180033","deployedBytecode":"0x6080604052600436106101a15760003560e01c80636cabee01116100e1578063ad3cb1cc1161008a578063d9dee84411610064578063d9dee8441461056d578063e3aa21f41461058d578063eab481c3146105ad578063f2fde38b146105cd57600080fd5b8063ad3cb1cc146104c9578063c34872551461051f578063ca6869821461054d57600080fd5b806377968b34116100bb57806377968b34146104425780638da5cb5b14610462578063aadc3b72146104a957600080fd5b80636cabee01146103c85780636cc8f8c7146103f5578063715018a61461042d57600080fd5b806344e3bd221161014e5780634d3f9c8e116101285780634d3f9c8e146103605780634f1ef2861461038057806352d1902d146103935780635673ee67146103a857600080fd5b806344e3bd22146102d05780634ae4dd7c146102f05780634b4c1f841461032857600080fd5b80631d530f121161017f5780631d530f121461024657806334d581401461027e5780633bde7d2e146102b057600080fd5b80630a19c4d2146101a65780630d32b63e146101d957806318c586cd146101fb575b600080fd5b3480156101b257600080fd5b506101c66101c13660046127ea565b6105ed565b6040519081526020015b60405180910390f35b3480156101e557600080fd5b506101f96101f436600461282c565b610619565b005b34801561020757600080fd5b506102366102163660046129b4565b805160208183018101805160048252928201919093012091525460ff1681565b60405190151581526020016101d0565b34801561025257600080fd5b506101c66102613660046129b4565b8051602081830181018051600a8252928201919093012091525481565b34801561028a57600080fd5b5060065461029e9062010000900460ff1681565b60405160ff90911681526020016101d0565b3480156102bc57600080fd5b506101f96102cb366004612a05565b610681565b3480156102dc57600080fd5b506101c66102eb3660046127ea565b6106e6565b3480156102fc57600080fd5b506101c661030b3660046129b4565b805160208183018101805160058252928201919093012091525481565b34801561033457600080fd5b506101c66103433660046129b4565b805160208183018101805160098252928201919093012091525481565b34801561036c57600080fd5b506101c661037b366004612a59565b61080a565b6101f961038e366004612a83565b6108cd565b34801561039f57600080fd5b506101c66108ec565b3480156103b457600080fd5b506101f96103c3366004612ae5565b61091b565b3480156103d457600080fd5b506103e86103e336600461282c565b610d76565b6040516101d09190612b88565b34801561040157600080fd5b506101c66104103660046129b4565b805160208183018101805160078252928201919093012091525481565b34801561043957600080fd5b506101f9611017565b34801561044e57600080fd5b5061023661045d3660046127ea565b61102b565b34801561046e57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101d0565b3480156104b557600080fd5b506102366104c4366004612c53565b611109565b3480156104d557600080fd5b506105126040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101d09190612c76565b34801561052b57600080fd5b5060065461053a9061ffff1681565b60405161ffff90911681526020016101d0565b34801561055957600080fd5b506101f96105683660046127ea565b611198565b34801561057957600080fd5b506101f9610588366004612c98565b61122b565b34801561059957600080fd5b506101f96105a836600461282c565b61138f565b3480156105b957600080fd5b506101f96105c83660046127ea565b6113cd565b3480156105d957600080fd5b506101f96105e8366004612cd8565b611430565b600060078383604051610601929190612cf3565b90815260200160405180910390205490505b92915050565b6000546001600160a01b0316331461064457604051637fea9dc560e01b815260040160405180910390fd5b60065461065a9062010000900460ff1682612d19565b6005848460405161066c929190612cf3565b90815260405190819003602001902055505050565b610689611487565b600080546001600160a01b0395861673ffffffffffffffffffffffffffffffffffffffff19918216179091556001805494861694821694909417909355600280549285169284169290921790915560038054919093169116179055565b600080600984846040516106fb929190612cf3565b90815260200160405180910390205490506000600a8585604051610720929190612cf3565b9081526040519081900360200190205460065490915060009061ffff166107478385612d2c565b101561075c576107578284612d2c565b610764565b60065461ffff165b9050600093505b8084101561080157600060088787604051610787929190612cf3565b90815260405190819003602001902060006107a28786612d19565b6107ad906001612d19565b8152602001908152602001600020600201549050600587876040516107d3929190612cf3565b90815260200160405180910390205481106107ee5750610801565b846107f881612d3f565b9550505061076b565b50505092915050565b600080546001600160a01b0316331461083657604051637fea9dc560e01b815260040160405180910390fd5b6001546040517f4d3f9c8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905290911690634d3f9c8e906044016020604051808303816000875af11580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c69190612d58565b9392505050565b6108d56114fb565b6108de826115b2565b6108e882826115ba565b5050565b60006108f66116a7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000546001600160a01b0316331461094657604051637fea9dc560e01b815260040160405180910390fd5b60006109528380612d71565b9050905060005b81811015610abd573661096c8580612d71565b8381811061097c5761097c612dbb565b905060200281019061098e9190612dd1565b90503660006109a06060840184612df1565b90925090503660006109b56080860186612df1565b91509150600484846040516109cb929190612cf3565b9081526040519081900360200190205460ff16610a0857838360405163af0ab70960e01b81526004016109ff929190612e61565b60405180910390fd5b60048282604051610a1a929190612cf3565b9081526040519081900360200190205460ff16610a4e57818160405163af0ab70960e01b81526004016109ff929190612e61565b6000610a6e610a606020880188612d71565b610a6991612e99565b6116f0565b90508060078686604051610a83929190612cf3565b9081526020016040518091039020541015610aa357505050505050610ab5565b610aae868a8361173d565b5050505050505b600101610959565b506000610acd6020850185612d71565b9050905060005b81811015610b7d5736610aea6020870187612d71565b83818110610afa57610afa612dbb565b9050602002810190610b0c9190612f47565b90506004610b1d6020830183612df1565b604051610b2b929190612cf3565b9081526040519081900360200190205460ff16610b6a57610b4f6020820182612df1565b60405163af0ab70960e01b81526004016109ff929190612e61565b610b748186611a43565b50600101610ad4565b506000610b8d6040860186612d71565b9050905060005b81811015610c225736610baa6040880188612d71565b83818110610bba57610bba612dbb565b9050602002810190610bcc9190612f5d565b90506004610bdd6020830183612df1565b604051610beb929190612cf3565b9081526040519081900360200190205460ff16610c0f57610b4f6020820182612df1565b610c198187611f56565b50600101610b94565b506000610c326060870187612d71565b9050905060005b81811015610cc75736610c4f6060890189612d71565b83818110610c5f57610c5f612dbb565b9050602002810190610c719190612f73565b90506004610c826040830183612df1565b604051610c90929190612cf3565b9081526040519081900360200190205460ff16610cb457610b4f6040820182612df1565b610cbe8188612138565b50600101610c39565b506000610cd76080880188612d71565b9050905060005b81811015610d6c5736610cf460808a018a612d71565b83818110610d0457610d04612dbb565b9050602002810190610d169190612f47565b90506004610d276020830183612df1565b604051610d35929190612cf3565b9081526040519081900360200190205460ff16610d5957610b4f6020820182612df1565b610d638189612257565b50600101610cde565b5050505050505050565b610da86040518060a0016040528060608152602001600081526020016000815260200160608152602001606081525090565b60088484604051610dba929190612cf3565b9081526040805191829003602090810183206000868152915281902060a08301909152805482908290610dec90612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1890612f89565b8015610e655780601f10610e3a57610100808354040283529160200191610e65565b820191906000526020600020905b815481529060010190602001808311610e4857829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382018054610e9290612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebe90612f89565b8015610f0b5780601f10610ee057610100808354040283529160200191610f0b565b820191906000526020600020905b815481529060010190602001808311610eee57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156110075783829060005260206000209060020201604051806040016040529081600082018054610f6c90612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9890612f89565b8015610fe55780601f10610fba57610100808354040283529160200191610fe5565b820191906000526020600020905b815481529060010190602001808311610fc857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610f39565b5050509152509095945050505050565b61101f611487565b611029600061226a565b565b60015460405163e038ab5560e01b8152600091600019916001600160a01b039091169063e038ab55906110649087908790600401612e61565b602060405180830381865afa158015611081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a59190612d58565b146110b257506000610613565b60006110be84846106e6565b60065490915061ffff168110158061110157506000811180156111015750600584846040516110ee929190612cf3565b9081526020016040518091039020544310155b949350505050565b6001546040517faadc3b72000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152600092169063aadc3b7290604401602060405180830381865afa158015611174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c69190612fc3565b6000546001600160a01b031633146111c357604051637fea9dc560e01b815260040160405180910390fd5b60015460405163653434c160e11b81526001600160a01b039091169063ca686982906111f59085908590600401612e61565b600060405180830381600087803b15801561120f57600080fd5b505af1158015611223573d6000803e3d6000fd5b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112765750825b905060008267ffffffffffffffff1660011480156112935750303b155b9050811580156112a1575080155b156112d8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561130c57845468ff00000000000000001916680100000000000000001785555b611315336122e8565b61131d6122f9565b6006805460ff8816620100000262ffffff1990911661ffff8a1617179055831561138657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000546001600160a01b031633146113ba57604051637fea9dc560e01b815260040160405180910390fd5b806007848460405161066c929190612cf3565b6000546001600160a01b031633146113f857604051637fea9dc560e01b815260040160405180910390fd5b60016004838360405161140c929190612cf3565b908152604051908190036020019020805491151560ff199092169190911790555050565b611438611487565b6001600160a01b03811661147b576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016109ff565b6114848161226a565b50565b336114b97f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611029576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016109ff565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061159457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156110295760405163703e46dd60e11b815260040160405180910390fd5b611484611487565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611614575060408051601f3d908101601f1916820190925261161191810190612d58565b60015b61163c57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016109ff565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611698576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016109ff565b6116a28383612301565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110295760405163703e46dd60e11b815260040160405180910390fd5b80516000908190815b818110156117345784818151811061171357611713612dbb565b6020026020010151602001518361172a9190612d19565b92506001016116f9565b50909392505050565b600083604051602001611750919061311b565b60408051808303601f1901815282825280516020918201206001546003546306c38c6d60e51b865293519195506000946001600160a01b03918216946336bf07d3948a9489949092169263d8718da092600480830193928290030181865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e49190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af115801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e9190612fc3565b90508015611a3c573660006118766080880188612df1565b909250905036600061188b60608a018a612df1565b9150915086600783836040516118a2929190612cf3565b908152602001604051809103902060008282546118bf9190612d2c565b90915550506002546001600160a01b031663bb1da9c983836118e460408e018e612f47565b6040518463ffffffff1660e01b815260040161190293929190613265565b600060405180830381600087803b15801561191c57600080fd5b505af1158015611930573d6000803e3d6000fd5b50505050600061194085856106e6565b905061194b8a612357565b60015460405163e038ab5560e01b81526001600160a01b039091169063e038ab559061197d9088908890600401612e61565b602060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119be9190612d58565b6000191480156119cc575080155b80156119f85750600585856040516119e5929190612cf3565b9081526020016040518091039020544310155b15611a3657600654611a139062010000900460ff1643612d19565b60058686604051611a25929190612cf3565b908152604051908190036020019020555b50505050505b5050505050565b600082604051602001611a569190613329565b60408051808303601f1901815282825280516020918201206001546003546306c38c6d60e51b865293519195506000946001600160a01b03918216946336bf07d394899489949092169263d8718da092600480830193928290030181865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea9190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af1158015611b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b649190612fc3565b90508015611f5057366000611b7c6020870187612df1565b60015460405163653434c160e11b81529294509092506001600160a01b03169063ca68698290611bb29085908590600401612e61565b600060405180830381600087803b158015611bcc57600080fd5b505af1158015611be0573d6000803e3d6000fd5b5050600154604080517fe2100f4d000000000000000000000000000000000000000000000000000000008152600094506001600160a01b03909216925063e2100f4d91611c3791879187918d0135906004016133a7565b600060405180830381865afa158015611c54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c7c91908101906134f1565b8051602082015191925090815b818111611df757611db060088787604051611ca5929190612cf3565b9081526040805191829003602090810183206000868152908252828120600401805480840286018401909452838552929184015b82821015611da75783829060005260206000209060020201604051806040016040529081600082018054611d0c90612f89565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3890612f89565b8015611d855780601f10611d5a57610100808354040283529160200191611d85565b820191906000526020600020905b815481529060010190602001808311611d6857829003601f168201915b5050505050815260200160018201548152505081526020019060010190611cd9565b505050506116f0565b60078787604051611dc2929190612cf3565b90815260200160405180910390206000828254611ddf9190612d19565b90915550819050611def81612d3f565b915050611c89565b508260200151600a8686604051611e0f929190612cf3565b90815260405190819003602001902055600654611e369060ff620100009091041643612d19565b60058686604051611e48929190612cf3565b908152604051908190036020019020556002546001600160a01b031663b1f08d6b8686611e7860608e018e6135c4565b6040518463ffffffff1660e01b8152600401611e96939291906135da565b600060405180830381600087803b158015611eb057600080fd5b505af1158015611ec4573d6000803e3d6000fd5b505060025460408087015190517f1754a61f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169350631754a61f9250611f18918991899160040161367f565b600060405180830381600087803b158015611f3257600080fd5b505af1158015611f46573d6000803e3d6000fd5b5050505050505050505b50505050565b600082604051602001611f6991906136d3565b60408051808303601f1901815282825280516020918201206001546003546306c38c6d60e51b865293519195506000946001600160a01b03918216946336bf07d394899489949092169263d8718da092600480830193928290030181865afa158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd9190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af1158015612053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120779190612fc3565b90508015611f505736600061208f6020870187612df1565b60015460405163653434c160e11b81529294509092506001600160a01b03169063ca686982906120c59085908590600401612e61565b600060405180830381600087803b1580156120df57600080fd5b505af11580156120f3573d6000803e3d6000fd5b505060065461210e925062010000900460ff16905043612d19565b60058383604051612120929190612cf3565b90815260405190819003602001902055505050505050565b60008260405160200161214b9190613737565b60408051601f1981840301815282825280516020918201206001546003546306c38c6d60e51b865293519195506001600160a01b03908116946336bf07d39488948894919093169263d8718da092600480820193918290030181865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dd9190613248565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915260ff1660448201526064016020604051808303816000875af1158015612233573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190612fc3565b60008260405160200161214b9190613866565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6122f0612549565b611484816125b0565b611029612549565b61230a826125b8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561234f576116a2828261263c565b6108e86126b2565b3660006123676080840184612df1565b9150915060006009838360405161237f929190612cf3565b90815260200160405180910390206000815461239a90612d3f565b918290555090506123ab8480612df1565b600885856040516123bd929190612cf3565b9081526040805160209281900383019020600086815292529020916123e391908361394a565b506123f16060850185612df1565b60088585604051612403929190612cf3565b90815260408051602092819003830190206000868152925290206003019161242c91908361394a565b508060088484604051612440929190612cf3565b908152604080516020928190038301902060008581529083529081206001019290925561246f90860186612d71565b9050905060005b818110156125085760088585604051612490929190612cf3565b9081526040805160209281900383019020600086815290835220600401906124ba90880188612d71565b838181106124ca576124ca612dbb565b90506020028101906124dc91906135c4565b8154600181018355600092835260209092209091600202016124fe8282613a0a565b5050600101612476565b50436008858560405161251c929190612cf3565b90815260200160405180910390206000848152602001908152602001600020600201819055505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611029576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611438612549565b806001600160a01b03163b6000036125ee57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016109ff565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126599190613b03565b600060405180830381855af49150503d8060008114612694576040519150601f19603f3d011682016040523d82523d6000602084013e612699565b606091505b50915091506126a98583836126ea565b95945050505050565b3415611029576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826126ff576126fa8261275f565b6108c6565b815115801561271657506001600160a01b0384163b155b15612758576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109ff565b50806108c6565b80511561276f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f8401126127b357600080fd5b50813567ffffffffffffffff8111156127cb57600080fd5b6020830191508360208285010111156127e357600080fd5b9250929050565b600080602083850312156127fd57600080fd5b823567ffffffffffffffff81111561281457600080fd5b612820858286016127a1565b90969095509350505050565b60008060006040848603121561284157600080fd5b833567ffffffffffffffff81111561285857600080fd5b612864868287016127a1565b909790965060209590950135949350505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156128b1576128b1612878565b60405290565b6040516080810167ffffffffffffffff811182821017156128b1576128b1612878565b6040516060810167ffffffffffffffff811182821017156128b1576128b1612878565b604051601f8201601f1916810167ffffffffffffffff8111828210171561292657612926612878565b604052919050565b600067ffffffffffffffff82111561294857612948612878565b50601f01601f191660200190565b60006129696129648461292e565b6128fd565b905082815283838301111561297d57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126129a557600080fd5b6108c683833560208501612956565b6000602082840312156129c657600080fd5b813567ffffffffffffffff8111156129dd57600080fd5b61110184828501612994565b80356001600160a01b0381168114612a0057600080fd5b919050565b60008060008060808587031215612a1b57600080fd5b612a24856129e9565b9350612a32602086016129e9565b9250612a40604086016129e9565b9150612a4e606086016129e9565b905092959194509250565b60008060408385031215612a6c57600080fd5b612a75836129e9565b946020939093013593505050565b60008060408385031215612a9657600080fd5b612a9f836129e9565b9150602083013567ffffffffffffffff811115612abb57600080fd5b8301601f81018513612acc57600080fd5b612adb85823560208401612956565b9150509250929050565b60008060408385031215612af857600080fd5b823567ffffffffffffffff811115612b0f57600080fd5b830160a08186031215612b2157600080fd5b9150612b2f602084016129e9565b90509250929050565b60005b83811015612b53578181015183820152602001612b3b565b50506000910152565b60008151808452612b74816020860160208601612b38565b601f01601f19169290920160200192915050565b60006020808352835160a082850152612ba460c0850182612b5c565b90508185015160408160408701526040870151606087015260608701519150601f1980878503016080880152612bda8484612b5c565b6080890151888203830160a08a015280518083529195508601935085850190600581901b8601870160005b82811015612c44578488830301845286518051878452612c2788850182612b5c565b918b0151938b019390935296890196938901939150600101612c05565b509a9950505050505050505050565b60008060408385031215612c6657600080fd5b82359150612b2f602084016129e9565b6020815260006108c66020830184612b5c565b60ff8116811461148457600080fd5b60008060408385031215612cab57600080fd5b823561ffff81168114612cbd57600080fd5b91506020830135612ccd81612c89565b809150509250929050565b600060208284031215612cea57600080fd5b6108c6826129e9565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561061357610613612d03565b8181038181111561061357610613612d03565b600060018201612d5157612d51612d03565b5060010190565b600060208284031215612d6a57600080fd5b5051919050565b6000808335601e19843603018112612d8857600080fd5b83018035915067ffffffffffffffff821115612da357600080fd5b6020019150600581901b36038213156127e357600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235609e19833603018112612de757600080fd5b9190910192915050565b6000808335601e19843603018112612e0857600080fd5b83018035915067ffffffffffffffff821115612e2357600080fd5b6020019150368190038213156127e357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611101602083018486612e38565b600067ffffffffffffffff821115612e8f57612e8f612878565b5060051b60200190565b6000612ea761296484612e75565b80848252602080830192508560051b850136811115612ec557600080fd5b855b81811015612f3b57803567ffffffffffffffff80821115612ee85760008081fd5b818901915060408236031215612efe5760008081fd5b612f0661288e565b823582811115612f165760008081fd5b612f2236828601612994565b8252509185013585830152508552938201938201612ec7565b50919695505050505050565b60008235607e19833603018112612de757600080fd5b60008235605e19833603018112612de757600080fd5b6000823560fe19833603018112612de757600080fd5b600181811c90821680612f9d57607f821691505b602082108103612fbd57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612fd557600080fd5b815180151581146108c657600080fd5b6000808335601e19843603018112612ffc57600080fd5b830160208101925035905067ffffffffffffffff81111561301c57600080fd5b8036038213156127e357600080fd5b6000808335601e1984360301811261304257600080fd5b830160208101925035905067ffffffffffffffff81111561306257600080fd5b8060051b36038213156127e357600080fd5b60008235603e1983360301811261308a57600080fd5b90910192915050565b60008235607e1983360301811261308a57600080fd5b67ffffffffffffffff8116811461148457600080fd5b600081356130cc816130a9565b67ffffffffffffffff1683526130e56020830183612fe5565b608060208601526130fa608086018284612e38565b91505060408301356040850152606083013560608501528091505092915050565b6000602080835261312c8485612fe5565b60a08386015261314060c086018284612e38565b91505061314f8286018661302b565b601f19604081888603016040890152848386528686019050868460051b8701018560005b868110156131c4578589840301845261318c8289613074565b6131968182612fe5565b8786526131a68887018284612e38565b928d0135958d019590955250938a0193925090890190600101613173565b50506131d360408c018c613093565b9750838a82030160608b01526131e981896130bf565b97505050506131fb6060890189612fe5565b9450925080878603016080880152613214858585612e38565b94506132236080890189612fe5565b94509250808786030160a0880152505061323e838383612e38565b9695505050505050565b60006020828403121561325a57600080fd5b81516108c681612c89565b604081526000613279604083018587612e38565b828103602084015261323e81856130bf565b6000838385526020808601955060208560051b8301018460005b878110156132db57848303601f190189526132c9836132c4848a613093565b6130bf565b988401989250908301906001016132a5565b5090979650505050505050565b60006132f4828361302b565b6040855261330660408601828461328b565b915050613316602084018461302b565b858303602087015261323e83828461328b565b6020815260006133398384612fe5565b6080602085015261334e60a085018284612e38565b91505061335e6020850185612fe5565b601f1980868503016040870152613376848385612e38565b93506040870135606087015261338f6060880188613074565b92508086850301608087015250506126a982826132e8565b6040815260006133bb604083018587612e38565b9050826020830152949350505050565b600082601f8301126133dc57600080fd5b815160206133ec61296483612e75565b82815260059290921b8401810191818101908684111561340b57600080fd5b8286015b848110156134e657805167ffffffffffffffff808211156134305760008081fd5b908801906080828b03601f190181131561344a5760008081fd5b6134526128b7565b8784015161345f816130a9565b8152604084810151848111156134755760008081fd5b85019350603f84018d136134895760008081fd5b888401516134996129648261292e565b8181528e838388010111156134ae5760008081fd5b6134bd828c8301858901612b38565b838b0152506060858101519183019190915291909301519083015250835291830191830161340f565b509695505050505050565b60006020828403121561350357600080fd5b815167ffffffffffffffff8082111561351b57600080fd5b908301906060828603121561352f57600080fd5b6135376128da565b825181526020830151602082015260408301518281111561355757600080fd5b92909201916040838703121561356c57600080fd5b61357461288e565b83518381111561358357600080fd5b61358f888287016133cb565b8252506020840151838111156135a457600080fd5b6135b0888287016133cb565b602083015250604082015295945050505050565b60008235603e19833603018112612de757600080fd5b6040815260006135ee604083018587612e38565b828103602084015261323e81856132e8565b600082825180855260208086019550808260051b84010181860160005b848110156132db57601f198684030189528151608067ffffffffffffffff825116855285820151818787015261365582870182612b5c565b6040848101519088015260609384015193909601929092525050978301979083019060010161361d565b604081526000613693604083018587612e38565b82810360208401528351604082526136ae6040830182613600565b9050602085015182820360208401526136c78282613600565b98975050505050505050565b6020815260006136e38384612fe5565b606060208501526136f8608085018284612e38565b9150506137086020850185612fe5565b848303601f1901604086015261371f838284612e38565b92505050604084013560608401528091505092915050565b6020815260006137478384612fe5565b61010080602086015261375f61012086018385612e38565b925061376e6020870187612fe5565b9250601f1980878603016040880152613788858584612e38565b94506137976040890189612fe5565b94509150808786030160608801526137b0858584612e38565b94506137bf6060890189612fe5565b94509150808786030160808801526137d8858584612e38565b94506137e76080890189613093565b9350808786030160a08801526137fd85856130bf565b945061380c60a0890189612fe5565b94509150808786030160c0880152613825858584612e38565b945061383460c0890189612fe5565b94509150808786030160e08801525061384e848483612e38565b93505060e08601358186015250508091505092915050565b6020815260006138768384612fe5565b6080602085015261388b60a085018284612e38565b91505061389b6020850185612fe5565b601f19808685030160408701526138b3848385612e38565b93506138c26040880188612fe5565b93509150808685030160608701526138db848484612e38565b93506138ea6060880188613093565b92508086850301608087015250506126a982826130bf565b601f8211156116a2576000816000526020600020601f850160051c8101602086101561392b5750805b601f850160051c820191505b8181101561122357828155600101613937565b67ffffffffffffffff83111561396257613962612878565b613976836139708354612f89565b83613902565b6000601f8411600181146139aa57600085156139925750838201355b600019600387901b1c1916600186901b178355611a3c565b600083815260209020601f19861690835b828110156139db57868501358255602094850194600190920191016139bb565b50868210156139f85760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135601e19833603018112613a1e57600080fd5b8201803567ffffffffffffffff811115613a3757600080fd5b60208136038184011315613a4a57600080fd5b613a5e82613a588654612f89565b86613902565b6000601f831160018114613a945760008415613a7c57508482018301355b600019600386901b1c1916600185901b178655613af1565b600086815260209020601f19851690835b82811015613ac6578785018601358255938501936001909101908501613aa5565b5085821015613ae55760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b60008251612de7818460208701612b3856fea264697066735822122085870283a494f4a4dfbc83aa25709e6fd7fe7df1343d0aee3c77b460eb64661664736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` +var SignedBatchesArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"SignedBatches","sourceName":"contracts/SignedBatches.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_destinationChain","type":"string"}],"name":"getConfirmedBatch","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string[]","name":"multisigSignatures","type":"string[]"},{"internalType":"string[]","name":"feePayerMultisigSignatures","type":"string[]"}],"internalType":"struct IBridgeStructs.ConfirmedBatch","name":"batch","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"lastConfirmedBatch","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"rawTransaction","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"},{"internalType":"address","name":"_claimsHelperAddress","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"destinationChainId","type":"string"},{"internalType":"string","name":"rawTransaction","type":"string"},{"internalType":"string","name":"multisigSignature","type":"string"},{"internalType":"string","name":"feePayerMultisigSignature","type":"string"},{"internalType":"uint256","name":"firstTxNonceId","type":"uint256"},{"internalType":"uint256","name":"lastTxNonceId","type":"uint256"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"usedUTXOs","type":"tuple"}],"internalType":"struct IBridgeStructs.SignedBatch","name":"_signedBatch","type":"tuple"},{"internalType":"address","name":"_caller","type":"address"}],"name":"submitSignedBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612168620000fe60003960008181610e7101528181610e9a015261101d01526121686000f3fe6080604052600436106100bc5760003560e01c80638da5cb5b11610074578063d254f6f21161004e578063d254f6f214610217578063d52c54c414610237578063f2fde38b1461026457600080fd5b80638da5cb5b1461015a578063ad3cb1cc146101a1578063b52d326c146101f757600080fd5b806352d1902d116100a557806352d1902d1461010d578063715018a6146101305780638129fc1c1461014557600080fd5b80631c8f2775146100c15780634f1ef286146100f8575b600080fd5b3480156100cd57600080fd5b506100e16100dc3660046115bc565b610284565b6040516100ef929190611649565b60405180910390f35b61010b61010636600461167e565b610334565b005b34801561011957600080fd5b50610122610353565b6040519081526020016100ef565b34801561013c57600080fd5b5061010b610382565b34801561015157600080fd5b5061010b610396565b34801561016657600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100ef565b3480156101ad57600080fd5b506101ea6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100ef91906116e0565b34801561020357600080fd5b5061010b6102123660046116f3565b6104da565b34801561022357600080fd5b5061010b610232366004611736565b61052e565b34801561024357600080fd5b5061025761025236600461178a565b610b5d565b6040516100ef9190611856565b34801561027057600080fd5b5061010b61027f3660046118b8565b610e0a565b8051602081830181018051600682529282019190930120915280546001820180549192916102b1906118d3565b80601f01602080910402602001604051908101604052809291908181526020018280546102dd906118d3565b801561032a5780601f106102ff5761010080835404028352916020019161032a565b820191906000526020600020905b81548152906001019060200180831161030d57829003601f168201915b5050505050905082565b61033c610e66565b61034582610f1d565b61034f8282610f25565b5050565b600061035d611012565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61038a61105b565b61039460006110cf565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103e15750825b905060008267ffffffffffffffff1660011480156103fe5750303b155b90508115801561040c575080155b15610443576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047757845468ff00000000000000001916680100000000000000001785555b6104803361114d565b61048861115e565b83156104d357845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6104e261105b565b600080546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600180549385169382169390931790925560028054919093169116179055565b6000546001600160a01b03163314610572576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b366000610582602085018561190d565b9150915060006006838360405161059a92919061195b565b908152604051908190036020019020546105b590600161196b565b9050843581146105c6575050505050565b60006040518060c001604052808760000135815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610626604089018961190d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060a0880135602082015260c0880135604082015260600161068160e089018961198c565b61068a90611abe565b905260405161069c9190602001611bc3565b60408051601f1981840301815291815281516020928301206000818152600584528281206001600160a01b038a16825290935291205490915060ff16156106e557505050505050565b600254604080517fd8718da000000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163d8718da09160048083019260209291908290030181865afa158015610748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076c9190611c67565b60008381526003602052604090205460ff919091169150818110610794575050505050505050565b60008381526005602090815260408083206001600160a01b038b1684528252808320805460ff19166001179055858352600390915290206107d860608a018a61190d565b825460018101845560009384526020909320909201916107f89183611cda565b50600083815260046020526040902061081460808a018a61190d565b825460018101845560009384526020909320909201916108349183611cda565b508161084182600161196b565b10610b53576040518060800160405280858152602001898060400190610867919061190d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050508581526003602090815260408083208054825181850281018501909352808352948301949193909284015b828210156109745783829060005260206000200180546108e7906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610913906118d3565b80156109605780601f1061093557610100808354040283529160200191610960565b820191906000526020600020905b81548152906001019060200180831161094357829003601f168201915b5050505050815260200190600101906108c8565b50505050815260200160046000868152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a5c5783829060005260206000200180546109cf906118d3565b80601f01602080910402602001604051908101604052809291908181526020018280546109fb906118d3565b8015610a485780601f10610a1d57610100808354040283529160200191610a48565b820191906000526020600020905b815481529060010190602001808311610a2b57829003601f168201915b5050505050815260200190600101906109b0565b5050505081525060068787604051610a7592919061195b565b9081526040516020918190038201902082518155908201516001820190610a9c9082611d9a565b5060408201518051610ab8916002840191602090910190611417565b5060608201518051610ad4916003840191602090910190611417565b50506001546040517f64d06b050000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691506364d06b0590610b20908b90600401612021565b600060405180830381600087803b158015610b3a57600080fd5b505af1158015610b4e573d6000803e3d6000fd5b505050505b5050505050505050565b610b886040518060800160405280600081526020016060815260200160608152602001606081525090565b60068383604051610b9a92919061195b565b908152602001604051809103902060405180608001604052908160008201548152602001600182018054610bcd906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf9906118d3565b8015610c465780601f10610c1b57610100808354040283529160200191610c46565b820191906000526020600020905b815481529060010190602001808311610c2957829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610d20578382906000526020600020018054610c93906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf906118d3565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081526020019060010190610c74565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610df9578382906000526020600020018054610d6c906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d98906118d3565b8015610de55780601f10610dba57610100808354040283529160200191610de5565b820191906000526020600020905b815481529060010190602001808311610dc857829003601f168201915b505050505081526020019060010190610d4d565b505050508152505090505b92915050565b610e1261105b565b6001600160a01b038116610e5a576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610e63816110cf565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610eff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ef37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156103945760405163703e46dd60e11b815260040160405180910390fd5b610e6361105b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f7f575060408051601f3d908101601f19168201909252610f7c91810190612107565b60015b610fa757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e51565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611003576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610e51565b61100d8383611166565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103945760405163703e46dd60e11b815260040160405180910390fd5b3361108d7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610394576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610e51565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6111556111bc565b610e6381611223565b6103946111bc565b61116f8261122b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156111b45761100d82826112af565b61034f611325565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610394576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e126111bc565b806001600160a01b03163b60000361126157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e51565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516112cc9190612120565b600060405180830381855af49150503d8060008114611307576040519150601f19603f3d011682016040523d82523d6000602084013e61130c565b606091505b509150915061131c85838361135d565b95945050505050565b3415610394576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826113725761136d826113d5565b6113ce565b815115801561138957506001600160a01b0384163b155b156113cb576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e51565b50805b9392505050565b8051156113e55780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82805482825590600052602060002090810192821561145d579160200282015b8281111561145d578251829061144d9082611d9a565b5091602001919060010190611437565b5061146992915061146d565b5090565b80821115611469576000611481828261148a565b5060010161146d565b508054611496906118d3565b6000825580601f106114a6575050565b601f016020900490600052602060002090810190610e6391905b8082111561146957600081556001016114c0565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561150d5761150d6114d4565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561153c5761153c6114d4565b604052919050565b600067ffffffffffffffff83111561155e5761155e6114d4565b611571601f8401601f1916602001611513565b905082815283838301111561158557600080fd5b828260208301376000602084830101529392505050565b600082601f8301126115ad57600080fd5b6113ce83833560208501611544565b6000602082840312156115ce57600080fd5b813567ffffffffffffffff8111156115e557600080fd5b6115f18482850161159c565b949350505050565b60005b838110156116145781810151838201526020016115fc565b50506000910152565b600081518084526116358160208601602086016115f9565b601f01601f19169290920160200192915050565b8281526040602082015260006115f1604083018461161d565b80356001600160a01b038116811461167957600080fd5b919050565b6000806040838503121561169157600080fd5b61169a83611662565b9150602083013567ffffffffffffffff8111156116b657600080fd5b8301601f810185136116c757600080fd5b6116d685823560208401611544565b9150509250929050565b6020815260006113ce602083018461161d565b60008060006060848603121561170857600080fd5b61171184611662565b925061171f60208501611662565b915061172d60408501611662565b90509250925092565b6000806040838503121561174957600080fd5b823567ffffffffffffffff81111561176057600080fd5b8301610100818603121561177357600080fd5b915061178160208401611662565b90509250929050565b6000806020838503121561179d57600080fd5b823567ffffffffffffffff808211156117b557600080fd5b818501915085601f8301126117c957600080fd5b8135818111156117d857600080fd5b8660208285010111156117ea57600080fd5b60209290920196919550909350505050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561184957601f1986840301895261183783835161161d565b9884019892509083019060010161181b565b5090979650505050505050565b6020815281516020820152600060208301516080604084015261187c60a084018261161d565b90506040840151601f198085840301606086015261189a83836117fc565b925060608601519150808584030160808601525061131c82826117fc565b6000602082840312156118ca57600080fd5b6113ce82611662565b600181811c908216806118e757607f821691505b60208210810361190757634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e1984360301811261192457600080fd5b83018035915067ffffffffffffffff82111561193f57600080fd5b60200191503681900382131561195457600080fd5b9250929050565b8183823760009101908152919050565b80820180821115610e0457634e487b7160e01b600052601160045260246000fd5b60008235603e198336030181126119a257600080fd5b9190910192915050565b803567ffffffffffffffff8116811461167957600080fd5b600082601f8301126119d557600080fd5b8135602067ffffffffffffffff808311156119f2576119f26114d4565b8260051b611a01838201611513565b9384528581018301938381019088861115611a1b57600080fd5b84880192505b85831015611ab257823584811115611a395760008081fd5b88016080818b03601f1901811315611a515760008081fd5b611a596114ea565b611a648884016119ac565b815260408084013588811115611a7a5760008081fd5b611a888e8b8388010161159c565b838b0152506060848101359183019190915291909201359082015282529184019190840190611a21565b98975050505050505050565b600060408236031215611ad057600080fd5b6040516040810167ffffffffffffffff8282108183111715611af457611af46114d4565b816040528435915080821115611b0957600080fd5b611b15368387016119c4565b83526020850135915080821115611b2b57600080fd5b50611b38368286016119c4565b60208301525092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561184957601f198684030189528151608067ffffffffffffffff8251168552858201518187870152611b998287018261161d565b60408481015190880152606093840151939096019290925250509783019790830190600101611b61565b60208152815160208201526000602083015160c06040840152611be960e084018261161d565b90506040840151601f1980858403016060860152611c07838361161d565b925060608601516080860152608086015160a086015260a08601519150808584030160c086015250805160408352611c426040840182611b44565b9050602082015191508281036020840152611c5d8183611b44565b9695505050505050565b600060208284031215611c7957600080fd5b815160ff811681146113ce57600080fd5b601f82111561100d576000816000526020600020601f850160051c81016020861015611cb35750805b601f850160051c820191505b81811015611cd257828155600101611cbf565b505050505050565b67ffffffffffffffff831115611cf257611cf26114d4565b611d0683611d0083546118d3565b83611c8a565b6000601f841160018114611d3a5760008515611d225750838201355b600019600387901b1c1916600186901b1783556104d3565b600083815260209020601f19861690835b82811015611d6b5786850135825560209485019460019092019101611d4b565b5086821015611d885760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b815167ffffffffffffffff811115611db457611db46114d4565b611dc881611dc284546118d3565b84611c8a565b602080601f831160018114611dfd5760008415611de55750858301515b600019600386901b1c1916600185901b178555611cd2565b600085815260208120601f198616915b82811015611e2c57888601518255948401946001909101908401611e0d565b5085821015611e4a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e19843603018112611e7157600080fd5b830160208101925035905067ffffffffffffffff811115611e9157600080fd5b80360382131561195457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008235603e19833603018112611edf57600080fd5b90910192915050565b6000808335601e19843603018112611eff57600080fd5b830160208101925035905067ffffffffffffffff811115611f1f57600080fd5b8060051b360382131561195457600080fd5b60008383855260208086019550808560051b830101846000805b88811015611fd257858403601f19018a52823536899003607e19018112611f70578283fd5b8801608067ffffffffffffffff611f86836119ac565b168652611f9587830183611e5a565b8289890152611fa78389018284611ea0565b604085810135908a015260609485013594909801939093525050509884019891840191600101611f4b565b509198975050505050505050565b6000611fec8283611ee8565b60408552611ffe604086018284611f31565b91505061200e6020840184611ee8565b8583036020870152611c5d838284611f31565b6020815281356020820152600061203b6020840184611e5a565b61010080604086015261205361012086018385611ea0565b92506120626040870187611e5a565b9250601f198087860301606088015261207c858584611ea0565b945061208b6060890189611e5a565b94509150808786030160808801526120a4858584611ea0565b94506120b36080890189611e5a565b94509150808786030160a08801526120cc858584611ea0565b945060a088013560c088015260c088013560e08801526120ef60e0890189611ec9565b935080878603018388015250505061131c8282611fe0565b60006020828403121561211957600080fd5b5051919050565b600082516119a28184602087016115f956fea2646970667358221220a33577c3c947d7dc2b3599277b25781a7a61974baef512203a3c72d7bd5a4f7064736f6c63430008180033","deployedBytecode":"0x6080604052600436106100bc5760003560e01c80638da5cb5b11610074578063d254f6f21161004e578063d254f6f214610217578063d52c54c414610237578063f2fde38b1461026457600080fd5b80638da5cb5b1461015a578063ad3cb1cc146101a1578063b52d326c146101f757600080fd5b806352d1902d116100a557806352d1902d1461010d578063715018a6146101305780638129fc1c1461014557600080fd5b80631c8f2775146100c15780634f1ef286146100f8575b600080fd5b3480156100cd57600080fd5b506100e16100dc3660046115bc565b610284565b6040516100ef929190611649565b60405180910390f35b61010b61010636600461167e565b610334565b005b34801561011957600080fd5b50610122610353565b6040519081526020016100ef565b34801561013c57600080fd5b5061010b610382565b34801561015157600080fd5b5061010b610396565b34801561016657600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100ef565b3480156101ad57600080fd5b506101ea6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100ef91906116e0565b34801561020357600080fd5b5061010b6102123660046116f3565b6104da565b34801561022357600080fd5b5061010b610232366004611736565b61052e565b34801561024357600080fd5b5061025761025236600461178a565b610b5d565b6040516100ef9190611856565b34801561027057600080fd5b5061010b61027f3660046118b8565b610e0a565b8051602081830181018051600682529282019190930120915280546001820180549192916102b1906118d3565b80601f01602080910402602001604051908101604052809291908181526020018280546102dd906118d3565b801561032a5780601f106102ff5761010080835404028352916020019161032a565b820191906000526020600020905b81548152906001019060200180831161030d57829003601f168201915b5050505050905082565b61033c610e66565b61034582610f1d565b61034f8282610f25565b5050565b600061035d611012565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61038a61105b565b61039460006110cf565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103e15750825b905060008267ffffffffffffffff1660011480156103fe5750303b155b90508115801561040c575080155b15610443576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047757845468ff00000000000000001916680100000000000000001785555b6104803361114d565b61048861115e565b83156104d357845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6104e261105b565b600080546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600180549385169382169390931790925560028054919093169116179055565b6000546001600160a01b03163314610572576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b366000610582602085018561190d565b9150915060006006838360405161059a92919061195b565b908152604051908190036020019020546105b590600161196b565b9050843581146105c6575050505050565b60006040518060c001604052808760000135815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610626604089018961190d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060a0880135602082015260c0880135604082015260600161068160e089018961198c565b61068a90611abe565b905260405161069c9190602001611bc3565b60408051601f1981840301815291815281516020928301206000818152600584528281206001600160a01b038a16825290935291205490915060ff16156106e557505050505050565b600254604080517fd8718da000000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163d8718da09160048083019260209291908290030181865afa158015610748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076c9190611c67565b60008381526003602052604090205460ff919091169150818110610794575050505050505050565b60008381526005602090815260408083206001600160a01b038b1684528252808320805460ff19166001179055858352600390915290206107d860608a018a61190d565b825460018101845560009384526020909320909201916107f89183611cda565b50600083815260046020526040902061081460808a018a61190d565b825460018101845560009384526020909320909201916108349183611cda565b508161084182600161196b565b10610b53576040518060800160405280858152602001898060400190610867919061190d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050508581526003602090815260408083208054825181850281018501909352808352948301949193909284015b828210156109745783829060005260206000200180546108e7906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610913906118d3565b80156109605780601f1061093557610100808354040283529160200191610960565b820191906000526020600020905b81548152906001019060200180831161094357829003601f168201915b5050505050815260200190600101906108c8565b50505050815260200160046000868152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a5c5783829060005260206000200180546109cf906118d3565b80601f01602080910402602001604051908101604052809291908181526020018280546109fb906118d3565b8015610a485780601f10610a1d57610100808354040283529160200191610a48565b820191906000526020600020905b815481529060010190602001808311610a2b57829003601f168201915b5050505050815260200190600101906109b0565b5050505081525060068787604051610a7592919061195b565b9081526040516020918190038201902082518155908201516001820190610a9c9082611d9a565b5060408201518051610ab8916002840191602090910190611417565b5060608201518051610ad4916003840191602090910190611417565b50506001546040517f64d06b050000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691506364d06b0590610b20908b90600401612021565b600060405180830381600087803b158015610b3a57600080fd5b505af1158015610b4e573d6000803e3d6000fd5b505050505b5050505050505050565b610b886040518060800160405280600081526020016060815260200160608152602001606081525090565b60068383604051610b9a92919061195b565b908152602001604051809103902060405180608001604052908160008201548152602001600182018054610bcd906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf9906118d3565b8015610c465780601f10610c1b57610100808354040283529160200191610c46565b820191906000526020600020905b815481529060010190602001808311610c2957829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610d20578382906000526020600020018054610c93906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf906118d3565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081526020019060010190610c74565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610df9578382906000526020600020018054610d6c906118d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d98906118d3565b8015610de55780601f10610dba57610100808354040283529160200191610de5565b820191906000526020600020905b815481529060010190602001808311610dc857829003601f168201915b505050505081526020019060010190610d4d565b505050508152505090505b92915050565b610e1261105b565b6001600160a01b038116610e5a576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610e63816110cf565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610eff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ef37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156103945760405163703e46dd60e11b815260040160405180910390fd5b610e6361105b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f7f575060408051601f3d908101601f19168201909252610f7c91810190612107565b60015b610fa757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e51565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611003576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610e51565b61100d8383611166565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103945760405163703e46dd60e11b815260040160405180910390fd5b3361108d7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610394576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610e51565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6111556111bc565b610e6381611223565b6103946111bc565b61116f8261122b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156111b45761100d82826112af565b61034f611325565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610394576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e126111bc565b806001600160a01b03163b60000361126157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e51565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516112cc9190612120565b600060405180830381855af49150503d8060008114611307576040519150601f19603f3d011682016040523d82523d6000602084013e61130c565b606091505b509150915061131c85838361135d565b95945050505050565b3415610394576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826113725761136d826113d5565b6113ce565b815115801561138957506001600160a01b0384163b155b156113cb576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e51565b50805b9392505050565b8051156113e55780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82805482825590600052602060002090810192821561145d579160200282015b8281111561145d578251829061144d9082611d9a565b5091602001919060010190611437565b5061146992915061146d565b5090565b80821115611469576000611481828261148a565b5060010161146d565b508054611496906118d3565b6000825580601f106114a6575050565b601f016020900490600052602060002090810190610e6391905b8082111561146957600081556001016114c0565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561150d5761150d6114d4565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561153c5761153c6114d4565b604052919050565b600067ffffffffffffffff83111561155e5761155e6114d4565b611571601f8401601f1916602001611513565b905082815283838301111561158557600080fd5b828260208301376000602084830101529392505050565b600082601f8301126115ad57600080fd5b6113ce83833560208501611544565b6000602082840312156115ce57600080fd5b813567ffffffffffffffff8111156115e557600080fd5b6115f18482850161159c565b949350505050565b60005b838110156116145781810151838201526020016115fc565b50506000910152565b600081518084526116358160208601602086016115f9565b601f01601f19169290920160200192915050565b8281526040602082015260006115f1604083018461161d565b80356001600160a01b038116811461167957600080fd5b919050565b6000806040838503121561169157600080fd5b61169a83611662565b9150602083013567ffffffffffffffff8111156116b657600080fd5b8301601f810185136116c757600080fd5b6116d685823560208401611544565b9150509250929050565b6020815260006113ce602083018461161d565b60008060006060848603121561170857600080fd5b61171184611662565b925061171f60208501611662565b915061172d60408501611662565b90509250925092565b6000806040838503121561174957600080fd5b823567ffffffffffffffff81111561176057600080fd5b8301610100818603121561177357600080fd5b915061178160208401611662565b90509250929050565b6000806020838503121561179d57600080fd5b823567ffffffffffffffff808211156117b557600080fd5b818501915085601f8301126117c957600080fd5b8135818111156117d857600080fd5b8660208285010111156117ea57600080fd5b60209290920196919550909350505050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561184957601f1986840301895261183783835161161d565b9884019892509083019060010161181b565b5090979650505050505050565b6020815281516020820152600060208301516080604084015261187c60a084018261161d565b90506040840151601f198085840301606086015261189a83836117fc565b925060608601519150808584030160808601525061131c82826117fc565b6000602082840312156118ca57600080fd5b6113ce82611662565b600181811c908216806118e757607f821691505b60208210810361190757634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e1984360301811261192457600080fd5b83018035915067ffffffffffffffff82111561193f57600080fd5b60200191503681900382131561195457600080fd5b9250929050565b8183823760009101908152919050565b80820180821115610e0457634e487b7160e01b600052601160045260246000fd5b60008235603e198336030181126119a257600080fd5b9190910192915050565b803567ffffffffffffffff8116811461167957600080fd5b600082601f8301126119d557600080fd5b8135602067ffffffffffffffff808311156119f2576119f26114d4565b8260051b611a01838201611513565b9384528581018301938381019088861115611a1b57600080fd5b84880192505b85831015611ab257823584811115611a395760008081fd5b88016080818b03601f1901811315611a515760008081fd5b611a596114ea565b611a648884016119ac565b815260408084013588811115611a7a5760008081fd5b611a888e8b8388010161159c565b838b0152506060848101359183019190915291909201359082015282529184019190840190611a21565b98975050505050505050565b600060408236031215611ad057600080fd5b6040516040810167ffffffffffffffff8282108183111715611af457611af46114d4565b816040528435915080821115611b0957600080fd5b611b15368387016119c4565b83526020850135915080821115611b2b57600080fd5b50611b38368286016119c4565b60208301525092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561184957601f198684030189528151608067ffffffffffffffff8251168552858201518187870152611b998287018261161d565b60408481015190880152606093840151939096019290925250509783019790830190600101611b61565b60208152815160208201526000602083015160c06040840152611be960e084018261161d565b90506040840151601f1980858403016060860152611c07838361161d565b925060608601516080860152608086015160a086015260a08601519150808584030160c086015250805160408352611c426040840182611b44565b9050602082015191508281036020840152611c5d8183611b44565b9695505050505050565b600060208284031215611c7957600080fd5b815160ff811681146113ce57600080fd5b601f82111561100d576000816000526020600020601f850160051c81016020861015611cb35750805b601f850160051c820191505b81811015611cd257828155600101611cbf565b505050505050565b67ffffffffffffffff831115611cf257611cf26114d4565b611d0683611d0083546118d3565b83611c8a565b6000601f841160018114611d3a5760008515611d225750838201355b600019600387901b1c1916600186901b1783556104d3565b600083815260209020601f19861690835b82811015611d6b5786850135825560209485019460019092019101611d4b565b5086821015611d885760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b815167ffffffffffffffff811115611db457611db46114d4565b611dc881611dc284546118d3565b84611c8a565b602080601f831160018114611dfd5760008415611de55750858301515b600019600386901b1c1916600185901b178555611cd2565b600085815260208120601f198616915b82811015611e2c57888601518255948401946001909101908401611e0d565b5085821015611e4a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e19843603018112611e7157600080fd5b830160208101925035905067ffffffffffffffff811115611e9157600080fd5b80360382131561195457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008235603e19833603018112611edf57600080fd5b90910192915050565b6000808335601e19843603018112611eff57600080fd5b830160208101925035905067ffffffffffffffff811115611f1f57600080fd5b8060051b360382131561195457600080fd5b60008383855260208086019550808560051b830101846000805b88811015611fd257858403601f19018a52823536899003607e19018112611f70578283fd5b8801608067ffffffffffffffff611f86836119ac565b168652611f9587830183611e5a565b8289890152611fa78389018284611ea0565b604085810135908a015260609485013594909801939093525050509884019891840191600101611f4b565b509198975050505050505050565b6000611fec8283611ee8565b60408552611ffe604086018284611f31565b91505061200e6020840184611ee8565b8583036020870152611c5d838284611f31565b6020815281356020820152600061203b6020840184611e5a565b61010080604086015261205361012086018385611ea0565b92506120626040870187611e5a565b9250601f198087860301606088015261207c858584611ea0565b945061208b6060890189611e5a565b94509150808786030160808801526120a4858584611ea0565b94506120b36080890189611e5a565b94509150808786030160a08801526120cc858584611ea0565b945060a088013560c088015260c088013560e08801526120ef60e0890189611ec9565b935080878603018388015250505061131c8282611fe0565b60006020828403121561211957600080fd5b5051919050565b600082516119a28184602087016115f956fea2646970667358221220a33577c3c947d7dc2b3599277b25781a7a61974baef512203a3c72d7bd5a4f7064736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` +var SlotsArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"Slots","sourceName":"contracts/Slots.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"}],"name":"getLastObservedBlock","outputs":[{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock","name":"cb","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"},{"internalType":"address","name":"_validatorsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"},{"components":[{"internalType":"string","name":"blockHash","type":"string"},{"internalType":"uint64","name":"blockSlot","type":"uint64"}],"internalType":"struct IBridgeStructs.CardanoBlock[]","name":"_blocks","type":"tuple[]"},{"internalType":"address","name":"_caller","type":"address"}],"name":"updateBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516114666100fd600039600081816108270152818161085001526109d301526114666000f3fe6080604052600436106100b15760003560e01c80638da5cb5b11610069578063e87c28a71161004e578063e87c28a7146101eb578063ecc155dd1461020b578063f2fde38b1461022b57600080fd5b80638da5cb5b1461014e578063ad3cb1cc1461019557600080fd5b806352d1902d1161009a57806352d1902d14610101578063715018a6146101245780638129fc1c1461013957600080fd5b80632175c3f7146100b65780634f1ef286146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004610e16565b61024b565b6040516100e39190610ea8565b60405180910390f35b6100ff6100fa366004610f16565b61033a565b005b34801561010d57600080fd5b50610116610359565b6040519081526020016100e3565b34801561013057600080fd5b506100ff610388565b34801561014557600080fd5b506100ff61039c565b34801561015a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100e3565b3480156101a157600080fd5b506101de6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100e39190610fd8565b3480156101f757600080fd5b506100ff610206366004610feb565b6104e0565b34801561021757600080fd5b506100ff61022636600461101e565b610523565b34801561023757600080fd5b506100ff6102463660046110cf565b6107c0565b604080518082019091526060815260006020820152600283836040516102729291906110ea565b908152602001604051809103902060405180604001604052908160008201805461029b906110fa565b80601f01602080910402602001604051908101604052809291908181526020018280546102c7906110fa565b80156103145780601f106102e957610100808354040283529160200191610314565b820191906000526020600020905b8154815290600101906020018083116102f757829003601f168201915b50505091835250506001919091015467ffffffffffffffff166020909101529392505050565b61034261081c565b61034b826108d3565b61035582826108db565b5050565b60006103636109c8565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610390610a11565b61039a6000610a85565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103e75750825b905060008267ffffffffffffffff1660011480156104045750303b155b905081158015610412575080155b15610449576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047d57845468ff00000000000000001916680100000000000000001785555b61048633610b03565b61048e610b14565b83156104d957845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6104e8610a11565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b6000546001600160a01b03163314610567576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604080517fd8718da000000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163d8718da09160048083019260209291908290030181865afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee9190611134565b60ff1690508260005b818110156107b6573686868381811061061257610612611157565b9050602002810190610624919061116d565b905060008989610634848061118d565b61064460408701602088016111ea565b604051602001610658959493929190611207565b60408051601f1981840301815291815281516020928301206000818152600484528281206001600160a01b038b16825290935291205490915060ff16156106a05750506107ae565b60008181526004602090815260408083206001600160a01b038a1684528252808320805460ff1916600117905583835260039091528120805482906106ee9067ffffffffffffffff16611253565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff169050858110158015610776575060028b8b60405161073c9291906110ea565b90815260408051602092819003830190206001015467ffffffffffffffff169161076a9186019086016111ea565b67ffffffffffffffff16115b156107aa578260028c8c60405161078e9291906110ea565b9081526040519081900360200190206107a782826112eb565b50505b5050505b6001016105f7565b5050505050505050565b6107c8610a11565b6001600160a01b038116610810576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61081981610a85565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806108b557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108a97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561039a5760405163703e46dd60e11b815260040160405180910390fd5b610819610a11565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610935575060408051601f3d908101601f1916820190925261093291810190611405565b60015b61095d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610807565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109b9576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610807565b6109c38383610b1c565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039a5760405163703e46dd60e11b815260040160405180910390fd5b33610a437f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461039a576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610807565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b610b0b610b72565b61081981610bd9565b61039a610b72565b610b2582610be1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610b6a576109c38282610c65565b610355610cdb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661039a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c8610b72565b806001600160a01b03163b600003610c1757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610807565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610c82919061141e565b600060405180830381855af49150503d8060008114610cbd576040519150601f19603f3d011682016040523d82523d6000602084013e610cc2565b606091505b5091509150610cd2858383610d13565b95945050505050565b341561039a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082610d2857610d2382610d8b565b610d84565b8151158015610d3f57506001600160a01b0384163b155b15610d81576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610807565b50805b9392505050565b805115610d9b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f840112610ddf57600080fd5b50813567ffffffffffffffff811115610df757600080fd5b602083019150836020828501011115610e0f57600080fd5b9250929050565b60008060208385031215610e2957600080fd5b823567ffffffffffffffff811115610e4057600080fd5b610e4c85828601610dcd565b90969095509350505050565b60005b83811015610e73578181015183820152602001610e5b565b50506000910152565b60008151808452610e94816020860160208601610e58565b601f01601f19169290920160200192915050565b602081526000825160406020840152610ec46060840182610e7c565b905067ffffffffffffffff60208501511660408401528091505092915050565b80356001600160a01b0381168114610efb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f2957600080fd5b610f3283610ee4565b9150602083013567ffffffffffffffff80821115610f4f57600080fd5b818501915085601f830112610f6357600080fd5b813581811115610f7557610f75610f00565b604051601f8201601f19908116603f01168101908382118183101715610f9d57610f9d610f00565b81604052828152886020848701011115610fb657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610d846020830184610e7c565b60008060408385031215610ffe57600080fd5b61100783610ee4565b915061101560208401610ee4565b90509250929050565b60008060008060006060868803121561103657600080fd5b853567ffffffffffffffff8082111561104e57600080fd5b61105a89838a01610dcd565b9097509550602088013591508082111561107357600080fd5b818801915088601f83011261108757600080fd5b81358181111561109657600080fd5b8960208260051b85010111156110ab57600080fd5b6020830195508094505050506110c360408701610ee4565b90509295509295909350565b6000602082840312156110e157600080fd5b610d8482610ee4565b8183823760009101908152919050565b600181811c9082168061110e57607f821691505b60208210810361112e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561114657600080fd5b815160ff81168114610d8457600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261118357600080fd5b9190910192915050565b6000808335601e198436030181126111a457600080fd5b83018035915067ffffffffffffffff8211156111bf57600080fd5b602001915036819003821315610e0f57600080fd5b67ffffffffffffffff8116811461081957600080fd5b6000602082840312156111fc57600080fd5b8135610d84816111d4565b848682376000858201600081528486823760c09390931b7fffffffffffffffff000000000000000000000000000000000000000000000000169290930191825250600801949350505050565b600067ffffffffffffffff80831681810361127e57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b601f8211156109c3576000816000526020600020601f850160051c810160208610156112b15750805b601f850160051c820191505b818110156112d0578281556001016112bd565b505050505050565b600081356112e5816111d4565b92915050565b8135601e198336030181126112ff57600080fd5b8201803567ffffffffffffffff81111561131857600080fd5b6020813603818401131561132b57600080fd5b61133f8261133986546110fa565b86611288565b6000601f831160018114611375576000841561135d57508482018301355b600019600386901b1c1916600185901b1786556113d2565b600086815260209020601f19851690835b828110156113a7578785018601358255938501936001909101908501611386565b50858210156113c65760001960f88760031b161c198585890101351681555b505060018460011b0186555b50506104d96113e28287016112d8565b6001860167ffffffffffffffff821667ffffffffffffffff198254161781555050565b60006020828403121561141757600080fd5b5051919050565b60008251611183818460208701610e5856fea26469706673582212203358058874f8d3d57d34276d3782ef685131820a2d9cd2773e7e49db2700444464736f6c63430008180033","deployedBytecode":"0x6080604052600436106100b15760003560e01c80638da5cb5b11610069578063e87c28a71161004e578063e87c28a7146101eb578063ecc155dd1461020b578063f2fde38b1461022b57600080fd5b80638da5cb5b1461014e578063ad3cb1cc1461019557600080fd5b806352d1902d1161009a57806352d1902d14610101578063715018a6146101245780638129fc1c1461013957600080fd5b80632175c3f7146100b65780634f1ef286146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004610e16565b61024b565b6040516100e39190610ea8565b60405180910390f35b6100ff6100fa366004610f16565b61033a565b005b34801561010d57600080fd5b50610116610359565b6040519081526020016100e3565b34801561013057600080fd5b506100ff610388565b34801561014557600080fd5b506100ff61039c565b34801561015a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016100e3565b3480156101a157600080fd5b506101de6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100e39190610fd8565b3480156101f757600080fd5b506100ff610206366004610feb565b6104e0565b34801561021757600080fd5b506100ff61022636600461101e565b610523565b34801561023757600080fd5b506100ff6102463660046110cf565b6107c0565b604080518082019091526060815260006020820152600283836040516102729291906110ea565b908152602001604051809103902060405180604001604052908160008201805461029b906110fa565b80601f01602080910402602001604051908101604052809291908181526020018280546102c7906110fa565b80156103145780601f106102e957610100808354040283529160200191610314565b820191906000526020600020905b8154815290600101906020018083116102f757829003601f168201915b50505091835250506001919091015467ffffffffffffffff166020909101529392505050565b61034261081c565b61034b826108d3565b61035582826108db565b5050565b60006103636109c8565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610390610a11565b61039a6000610a85565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103e75750825b905060008267ffffffffffffffff1660011480156104045750303b155b905081158015610412575080155b15610449576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047d57845468ff00000000000000001916680100000000000000001785555b61048633610b03565b61048e610b14565b83156104d957845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6104e8610a11565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b6000546001600160a01b03163314610567576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604080517fd8718da000000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163d8718da09160048083019260209291908290030181865afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee9190611134565b60ff1690508260005b818110156107b6573686868381811061061257610612611157565b9050602002810190610624919061116d565b905060008989610634848061118d565b61064460408701602088016111ea565b604051602001610658959493929190611207565b60408051601f1981840301815291815281516020928301206000818152600484528281206001600160a01b038b16825290935291205490915060ff16156106a05750506107ae565b60008181526004602090815260408083206001600160a01b038a1684528252808320805460ff1916600117905583835260039091528120805482906106ee9067ffffffffffffffff16611253565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff169050858110158015610776575060028b8b60405161073c9291906110ea565b90815260408051602092819003830190206001015467ffffffffffffffff169161076a9186019086016111ea565b67ffffffffffffffff16115b156107aa578260028c8c60405161078e9291906110ea565b9081526040519081900360200190206107a782826112eb565b50505b5050505b6001016105f7565b5050505050505050565b6107c8610a11565b6001600160a01b038116610810576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61081981610a85565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806108b557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108a97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561039a5760405163703e46dd60e11b815260040160405180910390fd5b610819610a11565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610935575060408051601f3d908101601f1916820190925261093291810190611405565b60015b61095d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610807565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109b9576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610807565b6109c38383610b1c565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039a5760405163703e46dd60e11b815260040160405180910390fd5b33610a437f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461039a576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610807565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b610b0b610b72565b61081981610bd9565b61039a610b72565b610b2582610be1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610b6a576109c38282610c65565b610355610cdb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661039a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c8610b72565b806001600160a01b03163b600003610c1757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610807565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610c82919061141e565b600060405180830381855af49150503d8060008114610cbd576040519150601f19603f3d011682016040523d82523d6000602084013e610cc2565b606091505b5091509150610cd2858383610d13565b95945050505050565b341561039a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082610d2857610d2382610d8b565b610d84565b8151158015610d3f57506001600160a01b0384163b155b15610d81576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610807565b50805b9392505050565b805115610d9b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f840112610ddf57600080fd5b50813567ffffffffffffffff811115610df757600080fd5b602083019150836020828501011115610e0f57600080fd5b9250929050565b60008060208385031215610e2957600080fd5b823567ffffffffffffffff811115610e4057600080fd5b610e4c85828601610dcd565b90969095509350505050565b60005b83811015610e73578181015183820152602001610e5b565b50506000910152565b60008151808452610e94816020860160208601610e58565b601f01601f19169290920160200192915050565b602081526000825160406020840152610ec46060840182610e7c565b905067ffffffffffffffff60208501511660408401528091505092915050565b80356001600160a01b0381168114610efb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f2957600080fd5b610f3283610ee4565b9150602083013567ffffffffffffffff80821115610f4f57600080fd5b818501915085601f830112610f6357600080fd5b813581811115610f7557610f75610f00565b604051601f8201601f19908116603f01168101908382118183101715610f9d57610f9d610f00565b81604052828152886020848701011115610fb657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610d846020830184610e7c565b60008060408385031215610ffe57600080fd5b61100783610ee4565b915061101560208401610ee4565b90509250929050565b60008060008060006060868803121561103657600080fd5b853567ffffffffffffffff8082111561104e57600080fd5b61105a89838a01610dcd565b9097509550602088013591508082111561107357600080fd5b818801915088601f83011261108757600080fd5b81358181111561109657600080fd5b8960208260051b85010111156110ab57600080fd5b6020830195508094505050506110c360408701610ee4565b90509295509295909350565b6000602082840312156110e157600080fd5b610d8482610ee4565b8183823760009101908152919050565b600181811c9082168061110e57607f821691505b60208210810361112e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561114657600080fd5b815160ff81168114610d8457600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261118357600080fd5b9190910192915050565b6000808335601e198436030181126111a457600080fd5b83018035915067ffffffffffffffff8211156111bf57600080fd5b602001915036819003821315610e0f57600080fd5b67ffffffffffffffff8116811461081957600080fd5b6000602082840312156111fc57600080fd5b8135610d84816111d4565b848682376000858201600081528486823760c09390931b7fffffffffffffffff000000000000000000000000000000000000000000000000169290930191825250600801949350505050565b600067ffffffffffffffff80831681810361127e57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b601f8211156109c3576000816000526020600020601f850160051c810160208610156112b15750805b601f850160051c820191505b818110156112d0578281556001016112bd565b505050505050565b600081356112e5816111d4565b92915050565b8135601e198336030181126112ff57600080fd5b8201803567ffffffffffffffff81111561131857600080fd5b6020813603818401131561132b57600080fd5b61133f8261133986546110fa565b86611288565b6000601f831160018114611375576000841561135d57508482018301355b600019600386901b1c1916600185901b1786556113d2565b600086815260209020601f19851690835b828110156113a7578785018601358255938501936001909101908501611386565b50858210156113c65760001960f88760031b161c198585890101351681555b505060018460011b0186555b50506104d96113e28287016112d8565b6001860167ffffffffffffffff821667ffffffffffffffff198254161781555050565b60006020828403121561141757600080fd5b5051919050565b60008251611183818460208701610e5856fea26469706673582212203358058874f8d3d57d34276d3782ef685131820a2d9cd2773e7e49db2700444464736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` var UTXOscArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"UTXOsc","sourceName":"contracts/UTXOsc.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"_utxo","type":"tuple"}],"name":"addNewBridgingUTXO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"_outputUTXOs","type":"tuple"}],"name":"addUTXOs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"a","type":"tuple"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO","name":"b","type":"tuple"}],"name":"equalUTXO","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"}],"name":"getChainUTXOs","outputs":[{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"_utxos","type":"tuple"}],"name":"removeUsedUTXOs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"},{"internalType":"address","name":"_claimsAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainID","type":"string"},{"components":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"multisigOwnedUTXOs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"},{"internalType":"uint256","name":"txIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IBridgeStructs.UTXO[]","name":"feePayerOwnedUTXOs","type":"tuple[]"}],"internalType":"struct IBridgeStructs.UTXOs","name":"_UTXOs","type":"tuple"}],"name":"setInitialUTxOs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612077620000fe60003960008181610f5401528181610f7d01526110fb01526120776000f3fe6080604052600436106100dd5760003560e01c80638129fc1c1161007f578063b1f08d6b11610059578063b1f08d6b14610287578063bb1da9c9146102a7578063e87c28a7146102c7578063f2fde38b146102e757600080fd5b80638129fc1c146101d55780638da5cb5b146101ea578063ad3cb1cc1461023157600080fd5b80634f1ef286116100bb5780634f1ef2861461016a57806352d1902d1461017d578063715018a6146101a05780637e31e3fd146101b557600080fd5b80631754a61f146100e257806334c39084146101045780633ce68a811461013a575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046117e3565b610307565b005b34801561011057600080fd5b5061012461011f366004611853565b610362565b6040516101319190611971565b60405180910390f35b34801561014657600080fd5b5061015a610155366004611aeb565b6105d4565b6040519015158152602001610131565b610102610178366004611b73565b610652565b34801561018957600080fd5b50610192610671565b604051908152602001610131565b3480156101ac57600080fd5b506101026106a0565b3480156101c157600080fd5b506101026101d03660046117e3565b6106b4565b3480156101e157600080fd5b50610102610703565b3480156101f657600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610131565b34801561023d57600080fd5b5061027a6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101319190611bcb565b34801561029357600080fd5b506101026102a23660046117e3565b610847565b3480156102b357600080fd5b506101026102c2366004611bde565b610872565b3480156102d357600080fd5b506101026102e2366004611c47565b61097d565b3480156102f357600080fd5b50610102610302366004611c7a565b6109c0565b6001546001600160a01b0316331461033257604051631ad2b5e160e31b815260040160405180910390fd5b61034683836103418480611c95565b610a1c565b61035d83836103586020850185611c95565b610d22565b505050565b604080518082019091526060808252602082015260028383604051610388929190611cdf565b908152604080519182900360209081018320805460609281028501830184529284018381529092849284919060009085015b828210156104a9576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff168252600181018054929391929184019161040490611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461043090611cef565b801561047d5780601f106104525761010080835404028352916020019161047d565b820191906000526020600020905b81548152906001019060200180831161046057829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906103ba565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156105c5576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff168252600181018054929391929184019161052090611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461054c90611cef565b80156105995780601f1061056e57610100808354040283529160200191610599565b820191906000526020600020905b81548152906001019060200180831161057c57829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906104d6565b50505091525090949350505050565b6000816040015183604001351480156105f4575081606001518360600135145b80156106135750602080830151519061060f90850185611d29565b9050145b801561064b57506020808301518051908201209061063390850185611d29565b604051610641929190611cdf565b6040518091039020145b9392505050565b61065a610f49565b61066382611000565b61066d8282611008565b5050565b600061067b6110f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6106a8611139565b6106b260006111ad565b565b6000546001600160a01b031633146106f8576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61035d83838361122b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561074e5750825b905060008267ffffffffffffffff16600114801561076b5750303b155b905081158015610779575080155b156107b0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156107e457845468ff00000000000000001916680100000000000000001785555b6107ed33611485565b6107f5611496565b831561084057845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001546001600160a01b031633146106f857604051631ad2b5e160e31b815260040160405180910390fd5b6001546001600160a01b0316331461089d57604051631ad2b5e160e31b815260040160405180910390fd5b600180546014906108cf9074010000000000000000000000000000000000000000900467ffffffffffffffff16611d86565b825467ffffffffffffffff9182166101009390930a838102920219161790915581526040516002906109049085908590611cdf565b908152604051602091819003820190208054600180820183556000928352918390208451600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155918301518392918201906109619082611df5565b5060408201518160020155606082015181600301555050505050565b610985611139565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b6109c8611139565b6001600160a01b038116610a10576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610a19816111ad565b50565b600060028585604051610a30929190611cdf565b90815260405190819003602001902054905060005b81811015610d1a57600083815b81811015610ba757610b91878783818110610a6f57610a6f611eb5565b9050602002810190610a819190611ecb565b60028b8b604051610a93929190611cdf565b90815260200160405180910390206000018681548110610ab557610ab5611eb5565b60009182526020918290206040805160808101909152600490920201805467ffffffffffffffff1682526001810180549293919291840191610af690611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2290611cef565b8015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b50505050508152602001600282015481526020016003820154815250506105d4565b15610b9f5760019250610ba7565b600101610a52565b508115610d055783610bb881611eeb565b94505060028888604051610bcd929190611cdf565b90815260200160405180910390206000018481548110610bef57610bef611eb5565b906000526020600020906004020160028989604051610c0f929190611cdf565b90815260200160405180910390206000018481548110610c3157610c31611eb5565b600091825260209091208254600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155600180820190610c7490840182611f02565b50600282015481600201556003820154816003015590505060028888604051610c9e929190611cdf565b908152604051908190036020019020805480610cbc57610cbc611fd5565b600082815260208120600460001990930192830201805467ffffffffffffffff1916815590610cee600183018261174c565b506000600282018190556003909101559055610d13565b82610d0f81611feb565b9350505b5050610a45565b505050505050565b600060028585604051610d36929190611cdf565b90815260405190819003602001902060010154905060005b81811015610d1a57600083815b81811015610dd457610dbe878783818110610d7857610d78611eb5565b9050602002810190610d8a9190611ecb565b60028b8b604051610d9c929190611cdf565b90815260200160405180910390206001018681548110610ab557610ab5611eb5565b15610dcc5760019250610dd4565b600101610d5b565b508115610f345783610de581611eeb565b94505060028888604051610dfa929190611cdf565b90815260200160405180910390206001018481548110610e1c57610e1c611eb5565b906000526020600020906004020160028989604051610e3c929190611cdf565b90815260200160405180910390206001018481548110610e5e57610e5e611eb5565b600091825260209091208254600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155600180820190610ea190840182611f02565b50600282015481600201556003820154816003015590505060028888604051610ecb929190611cdf565b9081526020016040518091039020600101805480610eeb57610eeb611fd5565b600082815260208120600460001990930192830201805467ffffffffffffffff1916815590610f1d600183018261174c565b506000600282018190556003909101559055610f42565b82610f3e81611feb565b9350505b5050610d4e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610fe257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fd67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106b25760405163703e46dd60e11b815260040160405180910390fd5b610a19611139565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611062575060408051601f3d908101601f1916820190925261105f91810190612004565b60015b61108a57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a07565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146110e6576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a07565b61035d838361149e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b25760405163703e46dd60e11b815260040160405180910390fd5b3361116b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146106b2576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a07565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006112378280611c95565b9050905060005b818110156113535760006112528480611c95565b8381811061126257611262611eb5565b90506020028101906112749190611ecb565b61127d9061201d565b90506001601481819054906101000a900467ffffffffffffffff166112a190611d86565b825467ffffffffffffffff9182166101009390930a838102920219161790915581526040516002906112d69088908890611cdf565b908152604051602091819003820190208054600180820183556000928352918390208451600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155918301518392918201906113339082611df5565b50604082015160028201556060909101516003909101555060010161123e565b5060006113636020840184611c95565b9050905060005b81811015610d1a5760006113816020860186611c95565b8381811061139157611391611eb5565b90506020028101906113a39190611ecb565b6113ac9061201d565b90506001601481819054906101000a900467ffffffffffffffff166113d090611d86565b825467ffffffffffffffff9182166101009390930a838102920219161790915581526040516002906114059089908990611cdf565b908152604051602091819003820190206001908101805480830182556000918252908390208451600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155918301518392918201906114659082611df5565b50604082015160028201556060909101516003909101555060010161136a565b61148d6114f4565b610a198161155b565b6106b26114f4565b6114a782611563565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156114ec5761035d82826115e7565b61066d61165d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106b2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109c86114f4565b806001600160a01b03163b60000361159957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a07565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611604919061202f565b600060405180830381855af49150503d806000811461163f576040519150601f19603f3d011682016040523d82523d6000602084013e611644565b606091505b5091509150611654858383611695565b95945050505050565b34156106b2576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826116aa576116a58261170a565b61064b565b81511580156116c157506001600160a01b0384163b155b15611703576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a07565b5092915050565b80511561171a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50805461175890611cef565b6000825580601f10611768575050565b601f016020900490600052602060002090810190610a1991905b808211156117965760008155600101611782565b5090565b60008083601f8401126117ac57600080fd5b50813567ffffffffffffffff8111156117c457600080fd5b6020830191508360208285010111156117dc57600080fd5b9250929050565b6000806000604084860312156117f857600080fd5b833567ffffffffffffffff8082111561181057600080fd5b61181c8783880161179a565b9095509350602086013591508082111561183557600080fd5b5084016040818703121561184857600080fd5b809150509250925092565b6000806020838503121561186657600080fd5b823567ffffffffffffffff81111561187d57600080fd5b6118898582860161179a565b90969095509350505050565b60005b838110156118b0578181015183820152602001611898565b50506000910152565b600081518084526118d1816020860160208601611895565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561196457601f198684030189528151608067ffffffffffffffff825116855285820151818787015261193a828701826118b9565b60408481015190880152606093840151939096019290925250509783019790830190600101611902565b5090979650505050505050565b60208152600082516040602084015261198d60608401826118e5565b90506020840151601f1984830301604085015261165482826118e5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156119e3576119e36119aa565b60405290565b600067ffffffffffffffff80841115611a0457611a046119aa565b604051601f8501601f19908116603f01168101908282118183101715611a2c57611a2c6119aa565b81604052809350858152868686011115611a4557600080fd5b858560208301376000602087830101525050509392505050565b600060808284031215611a7157600080fd5b611a796119c0565b9050813567ffffffffffffffff8082168214611a9457600080fd5b90825260208301359080821115611aaa57600080fd5b508201601f81018413611abc57600080fd5b611acb848235602084016119e9565b602083015250604082013560408201526060820135606082015292915050565b60008060408385031215611afe57600080fd5b823567ffffffffffffffff80821115611b1657600080fd5b9084019060808287031215611b2a57600080fd5b90925060208401359080821115611b4057600080fd5b50611b4d85828601611a5f565b9150509250929050565b80356001600160a01b0381168114611b6e57600080fd5b919050565b60008060408385031215611b8657600080fd5b611b8f83611b57565b9150602083013567ffffffffffffffff811115611bab57600080fd5b8301601f81018513611bbc57600080fd5b611b4d858235602084016119e9565b60208152600061064b60208301846118b9565b600080600060408486031215611bf357600080fd5b833567ffffffffffffffff80821115611c0b57600080fd5b611c178783880161179a565b90955093506020860135915080821115611c3057600080fd5b50611c3d86828701611a5f565b9150509250925092565b60008060408385031215611c5a57600080fd5b611c6383611b57565b9150611c7160208401611b57565b90509250929050565b600060208284031215611c8c57600080fd5b61064b82611b57565b6000808335601e19843603018112611cac57600080fd5b83018035915067ffffffffffffffff821115611cc757600080fd5b6020019150600581901b36038213156117dc57600080fd5b8183823760009101908152919050565b600181811c90821680611d0357607f821691505b602082108103611d2357634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112611d4057600080fd5b83018035915067ffffffffffffffff821115611d5b57600080fd5b6020019150368190038213156117dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff808316818103611da357611da3611d70565b6001019392505050565b601f82111561035d576000816000526020600020601f850160051c81016020861015611dd65750805b601f850160051c820191505b81811015610d1a57828155600101611de2565b815167ffffffffffffffff811115611e0f57611e0f6119aa565b611e2381611e1d8454611cef565b84611dad565b602080601f831160018114611e585760008415611e405750858301515b600019600386901b1c1916600185901b178555610d1a565b600085815260208120601f198616915b82811015611e8757888601518255948401946001909101908401611e68565b5085821015611ea55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112611ee157600080fd5b9190910192915050565b600081611efa57611efa611d70565b506000190190565b818103611f0d575050565b611f178254611cef565b67ffffffffffffffff811115611f2f57611f2f6119aa565b611f3d81611e1d8454611cef565b6000601f821160018114611f715760008315611f595750848201545b600019600385901b1c1916600184901b178455610840565b600085815260209020601f19841690600086815260209020845b83811015611fab5782860154825560019586019590910190602001611f8b565b5085831015611ea55793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b600060018201611ffd57611ffd611d70565b5060010190565b60006020828403121561201657600080fd5b5051919050565b60006120293683611a5f565b92915050565b60008251611ee181846020870161189556fea26469706673582212201f23d7d29f6593155cbb38ad1ff2596ec630a61337b1859b79a080fc1b4b0c5264736f6c63430008180033","deployedBytecode":"0x6080604052600436106100dd5760003560e01c80638129fc1c1161007f578063b1f08d6b11610059578063b1f08d6b14610287578063bb1da9c9146102a7578063e87c28a7146102c7578063f2fde38b146102e757600080fd5b80638129fc1c146101d55780638da5cb5b146101ea578063ad3cb1cc1461023157600080fd5b80634f1ef286116100bb5780634f1ef2861461016a57806352d1902d1461017d578063715018a6146101a05780637e31e3fd146101b557600080fd5b80631754a61f146100e257806334c39084146101045780633ce68a811461013a575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046117e3565b610307565b005b34801561011057600080fd5b5061012461011f366004611853565b610362565b6040516101319190611971565b60405180910390f35b34801561014657600080fd5b5061015a610155366004611aeb565b6105d4565b6040519015158152602001610131565b610102610178366004611b73565b610652565b34801561018957600080fd5b50610192610671565b604051908152602001610131565b3480156101ac57600080fd5b506101026106a0565b3480156101c157600080fd5b506101026101d03660046117e3565b6106b4565b3480156101e157600080fd5b50610102610703565b3480156101f657600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610131565b34801561023d57600080fd5b5061027a6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101319190611bcb565b34801561029357600080fd5b506101026102a23660046117e3565b610847565b3480156102b357600080fd5b506101026102c2366004611bde565b610872565b3480156102d357600080fd5b506101026102e2366004611c47565b61097d565b3480156102f357600080fd5b50610102610302366004611c7a565b6109c0565b6001546001600160a01b0316331461033257604051631ad2b5e160e31b815260040160405180910390fd5b61034683836103418480611c95565b610a1c565b61035d83836103586020850185611c95565b610d22565b505050565b604080518082019091526060808252602082015260028383604051610388929190611cdf565b908152604080519182900360209081018320805460609281028501830184529284018381529092849284919060009085015b828210156104a9576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff168252600181018054929391929184019161040490611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461043090611cef565b801561047d5780601f106104525761010080835404028352916020019161047d565b820191906000526020600020905b81548152906001019060200180831161046057829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906103ba565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156105c5576000848152602090819020604080516080810190915260048502909101805467ffffffffffffffff168252600181018054929391929184019161052090611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461054c90611cef565b80156105995780601f1061056e57610100808354040283529160200191610599565b820191906000526020600020905b81548152906001019060200180831161057c57829003601f168201915b5050505050815260200160028201548152602001600382015481525050815260200190600101906104d6565b50505091525090949350505050565b6000816040015183604001351480156105f4575081606001518360600135145b80156106135750602080830151519061060f90850185611d29565b9050145b801561064b57506020808301518051908201209061063390850185611d29565b604051610641929190611cdf565b6040518091039020145b9392505050565b61065a610f49565b61066382611000565b61066d8282611008565b5050565b600061067b6110f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6106a8611139565b6106b260006111ad565b565b6000546001600160a01b031633146106f8576040517f7fea9dc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61035d83838361122b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561074e5750825b905060008267ffffffffffffffff16600114801561076b5750303b155b905081158015610779575080155b156107b0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156107e457845468ff00000000000000001916680100000000000000001785555b6107ed33611485565b6107f5611496565b831561084057845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001546001600160a01b031633146106f857604051631ad2b5e160e31b815260040160405180910390fd5b6001546001600160a01b0316331461089d57604051631ad2b5e160e31b815260040160405180910390fd5b600180546014906108cf9074010000000000000000000000000000000000000000900467ffffffffffffffff16611d86565b825467ffffffffffffffff9182166101009390930a838102920219161790915581526040516002906109049085908590611cdf565b908152604051602091819003820190208054600180820183556000928352918390208451600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155918301518392918201906109619082611df5565b5060408201518160020155606082015181600301555050505050565b610985611139565b600080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054929093169116179055565b6109c8611139565b6001600160a01b038116610a10576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610a19816111ad565b50565b600060028585604051610a30929190611cdf565b90815260405190819003602001902054905060005b81811015610d1a57600083815b81811015610ba757610b91878783818110610a6f57610a6f611eb5565b9050602002810190610a819190611ecb565b60028b8b604051610a93929190611cdf565b90815260200160405180910390206000018681548110610ab557610ab5611eb5565b60009182526020918290206040805160808101909152600490920201805467ffffffffffffffff1682526001810180549293919291840191610af690611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2290611cef565b8015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b50505050508152602001600282015481526020016003820154815250506105d4565b15610b9f5760019250610ba7565b600101610a52565b508115610d055783610bb881611eeb565b94505060028888604051610bcd929190611cdf565b90815260200160405180910390206000018481548110610bef57610bef611eb5565b906000526020600020906004020160028989604051610c0f929190611cdf565b90815260200160405180910390206000018481548110610c3157610c31611eb5565b600091825260209091208254600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155600180820190610c7490840182611f02565b50600282015481600201556003820154816003015590505060028888604051610c9e929190611cdf565b908152604051908190036020019020805480610cbc57610cbc611fd5565b600082815260208120600460001990930192830201805467ffffffffffffffff1916815590610cee600183018261174c565b506000600282018190556003909101559055610d13565b82610d0f81611feb565b9350505b5050610a45565b505050505050565b600060028585604051610d36929190611cdf565b90815260405190819003602001902060010154905060005b81811015610d1a57600083815b81811015610dd457610dbe878783818110610d7857610d78611eb5565b9050602002810190610d8a9190611ecb565b60028b8b604051610d9c929190611cdf565b90815260200160405180910390206001018681548110610ab557610ab5611eb5565b15610dcc5760019250610dd4565b600101610d5b565b508115610f345783610de581611eeb565b94505060028888604051610dfa929190611cdf565b90815260200160405180910390206001018481548110610e1c57610e1c611eb5565b906000526020600020906004020160028989604051610e3c929190611cdf565b90815260200160405180910390206001018481548110610e5e57610e5e611eb5565b600091825260209091208254600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155600180820190610ea190840182611f02565b50600282015481600201556003820154816003015590505060028888604051610ecb929190611cdf565b9081526020016040518091039020600101805480610eeb57610eeb611fd5565b600082815260208120600460001990930192830201805467ffffffffffffffff1916815590610f1d600183018261174c565b506000600282018190556003909101559055610f42565b82610f3e81611feb565b9350505b5050610d4e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610fe257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fd67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106b25760405163703e46dd60e11b815260040160405180910390fd5b610a19611139565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611062575060408051601f3d908101601f1916820190925261105f91810190612004565b60015b61108a57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a07565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146110e6576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a07565b61035d838361149e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b25760405163703e46dd60e11b815260040160405180910390fd5b3361116b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146106b2576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a07565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006112378280611c95565b9050905060005b818110156113535760006112528480611c95565b8381811061126257611262611eb5565b90506020028101906112749190611ecb565b61127d9061201d565b90506001601481819054906101000a900467ffffffffffffffff166112a190611d86565b825467ffffffffffffffff9182166101009390930a838102920219161790915581526040516002906112d69088908890611cdf565b908152604051602091819003820190208054600180820183556000928352918390208451600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155918301518392918201906113339082611df5565b50604082015160028201556060909101516003909101555060010161123e565b5060006113636020840184611c95565b9050905060005b81811015610d1a5760006113816020860186611c95565b8381811061139157611391611eb5565b90506020028101906113a39190611ecb565b6113ac9061201d565b90506001601481819054906101000a900467ffffffffffffffff166113d090611d86565b825467ffffffffffffffff9182166101009390930a838102920219161790915581526040516002906114059089908990611cdf565b908152604051602091819003820190206001908101805480830182556000918252908390208451600490920201805467ffffffffffffffff191667ffffffffffffffff909216919091178155918301518392918201906114659082611df5565b50604082015160028201556060909101516003909101555060010161136a565b61148d6114f4565b610a198161155b565b6106b26114f4565b6114a782611563565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156114ec5761035d82826115e7565b61066d61165d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106b2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109c86114f4565b806001600160a01b03163b60000361159957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a07565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611604919061202f565b600060405180830381855af49150503d806000811461163f576040519150601f19603f3d011682016040523d82523d6000602084013e611644565b606091505b5091509150611654858383611695565b95945050505050565b34156106b2576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826116aa576116a58261170a565b61064b565b81511580156116c157506001600160a01b0384163b155b15611703576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a07565b5092915050565b80511561171a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50805461175890611cef565b6000825580601f10611768575050565b601f016020900490600052602060002090810190610a1991905b808211156117965760008155600101611782565b5090565b60008083601f8401126117ac57600080fd5b50813567ffffffffffffffff8111156117c457600080fd5b6020830191508360208285010111156117dc57600080fd5b9250929050565b6000806000604084860312156117f857600080fd5b833567ffffffffffffffff8082111561181057600080fd5b61181c8783880161179a565b9095509350602086013591508082111561183557600080fd5b5084016040818703121561184857600080fd5b809150509250925092565b6000806020838503121561186657600080fd5b823567ffffffffffffffff81111561187d57600080fd5b6118898582860161179a565b90969095509350505050565b60005b838110156118b0578181015183820152602001611898565b50506000910152565b600081518084526118d1816020860160208601611895565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561196457601f198684030189528151608067ffffffffffffffff825116855285820151818787015261193a828701826118b9565b60408481015190880152606093840151939096019290925250509783019790830190600101611902565b5090979650505050505050565b60208152600082516040602084015261198d60608401826118e5565b90506020840151601f1984830301604085015261165482826118e5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156119e3576119e36119aa565b60405290565b600067ffffffffffffffff80841115611a0457611a046119aa565b604051601f8501601f19908116603f01168101908282118183101715611a2c57611a2c6119aa565b81604052809350858152868686011115611a4557600080fd5b858560208301376000602087830101525050509392505050565b600060808284031215611a7157600080fd5b611a796119c0565b9050813567ffffffffffffffff8082168214611a9457600080fd5b90825260208301359080821115611aaa57600080fd5b508201601f81018413611abc57600080fd5b611acb848235602084016119e9565b602083015250604082013560408201526060820135606082015292915050565b60008060408385031215611afe57600080fd5b823567ffffffffffffffff80821115611b1657600080fd5b9084019060808287031215611b2a57600080fd5b90925060208401359080821115611b4057600080fd5b50611b4d85828601611a5f565b9150509250929050565b80356001600160a01b0381168114611b6e57600080fd5b919050565b60008060408385031215611b8657600080fd5b611b8f83611b57565b9150602083013567ffffffffffffffff811115611bab57600080fd5b8301601f81018513611bbc57600080fd5b611b4d858235602084016119e9565b60208152600061064b60208301846118b9565b600080600060408486031215611bf357600080fd5b833567ffffffffffffffff80821115611c0b57600080fd5b611c178783880161179a565b90955093506020860135915080821115611c3057600080fd5b50611c3d86828701611a5f565b9150509250925092565b60008060408385031215611c5a57600080fd5b611c6383611b57565b9150611c7160208401611b57565b90509250929050565b600060208284031215611c8c57600080fd5b61064b82611b57565b6000808335601e19843603018112611cac57600080fd5b83018035915067ffffffffffffffff821115611cc757600080fd5b6020019150600581901b36038213156117dc57600080fd5b8183823760009101908152919050565b600181811c90821680611d0357607f821691505b602082108103611d2357634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112611d4057600080fd5b83018035915067ffffffffffffffff821115611d5b57600080fd5b6020019150368190038213156117dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff808316818103611da357611da3611d70565b6001019392505050565b601f82111561035d576000816000526020600020601f850160051c81016020861015611dd65750805b601f850160051c820191505b81811015610d1a57828155600101611de2565b815167ffffffffffffffff811115611e0f57611e0f6119aa565b611e2381611e1d8454611cef565b84611dad565b602080601f831160018114611e585760008415611e405750858301515b600019600386901b1c1916600185901b178555610d1a565b600085815260208120601f198616915b82811015611e8757888601518255948401946001909101908401611e68565b5085821015611ea55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112611ee157600080fd5b9190910192915050565b600081611efa57611efa611d70565b506000190190565b818103611f0d575050565b611f178254611cef565b67ffffffffffffffff811115611f2f57611f2f6119aa565b611f3d81611e1d8454611cef565b6000601f821160018114611f715760008315611f595750848201545b600019600385901b1c1916600184901b178455610840565b600085815260209020601f19841690600086815260209020845b83811015611fab5782860154825560019586019590910190602001611f8b565b5085831015611ea55793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b600060018201611ffd57611ffd611d70565b5060010190565b60006020828403121561201657600080fd5b5051919050565b60006120293683611a5f565b92915050565b60008251611ee181846020870161189556fea26469706673582212201f23d7d29f6593155cbb38ad1ff2596ec630a61337b1859b79a080fc1b4b0c5264736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}` var ValidatorsArtifact string = `{"_format":"hh-sol-artifact-1","contractName":"Validators","sourceName":"contracts/Validators.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"AlreadyProposed","type":"error"},{"inputs":[{"internalType":"string","name":"_blockchainID","type":"string"}],"name":"CanNotCreateBatchYet","type":"error"},{"inputs":[{"internalType":"string","name":"_claimId","type":"string"}],"name":"ChainAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"ChainIsNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"name":"InvalidData","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotClaims","type":"error"},{"inputs":[{"internalType":"string","name":"_claimTransactionHash","type":"string"}],"name":"NotEnoughBridgingTokensAvailable","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSignedBatches","type":"error"},{"inputs":[],"name":"NotSignedBatchesOrBridge","type":"error"},{"inputs":[],"name":"NotValidator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"WrongBatchNonce","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"newChainProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"chainId","type":"string"}],"name":"newChainRegistered","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData","name":"data","type":"tuple"}],"name":"addValidatorCardanoData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getQuorumNumberOfValidators","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"}],"name":"getValidatorsCardanoData","outputs":[{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getValidatorsCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"internalType":"string","name":"_txRaw","type":"string"},{"internalType":"string","name":"_signature","type":"string"},{"internalType":"string","name":"_signatureFee","type":"string"},{"internalType":"address","name":"_validatorAddr","type":"address"}],"name":"isSignatureValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeAddress","type":"address"}],"name":"setDependencies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_chainId","type":"string"},{"components":[{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"string","name":"verifyingKey","type":"string"},{"internalType":"string","name":"verifyingKeyFee","type":"string"}],"internalType":"struct IBridgeStructs.ValidatorCardanoData","name":"data","type":"tuple"}],"internalType":"struct IBridgeStructs.ValidatorAddressCardanoData[]","name":"validatorAddressCardanoData","type":"tuple[]"}],"name":"setValidatorsCardanoData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"validatorsCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051611e516100fd60003960008181610d6c01528181610d950152610f180152611e516000f3fe6080604052600436106100f35760003560e01c80638389cb181161008a578063d8718da011610059578063d8718da0146102ea578063ed612f8c146102ff578063f2fde38b14610319578063facd743b1461033957600080fd5b80638389cb181461020d5780638da5cb5b1461022d578063a224cee714610274578063ad3cb1cc1461029457600080fd5b806352d1902d116100c657806352d1902d14610178578063636b8a0d1461019b578063715018a6146101c857806381b6ecf5146101dd57600080fd5b806327498240146100f857806332bae10d1461012357806334a1a095146101455780634f1ef28614610165575b600080fd5b34801561010457600080fd5b5060055460ff165b60405160ff90911681526020015b60405180910390f35b34801561012f57600080fd5b5061014361013e3660046114ef565b610372565b005b34801561015157600080fd5b50610143610160366004611577565b6104c3565b61014361017336600461160f565b61053c565b34801561018457600080fd5b5061018d61055b565b60405190815260200161011a565b3480156101a757600080fd5b506101bb6101b63660046116d1565b61058a565b60405161011a9190611763565b3480156101d457600080fd5b5061014361072f565b3480156101e957600080fd5b506101fd6101f83660046117ea565b610743565b604051901515815260200161011a565b34801561021957600080fd5b506101436102283660046118be565b6108e5565b34801561023957600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161011a565b34801561028057600080fd5b5061014361028f3660046118d9565b61091c565b3480156102a057600080fd5b506102dd6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161011a919061190f565b3480156102f657600080fd5b5061010c610b40565b34801561030b57600080fd5b5060055461010c9060ff1681565b34801561032557600080fd5b506101436103343660046118be565b610b71565b34801561034557600080fd5b506101fd6103543660046118be565b6001600160a01b031660009081526004602052604090205460ff1690565b6000546001600160a01b0316331461039d57604051637fea9dc560e01b815260040160405180910390fd5b60055460ff168114610410576040517f180a097700000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f76616c696461746f727320636f756e740000000000000000000000000000000060448201526064015b60405180910390fd5b60005b818110156104b2573683838381811061042e5761042e611922565b90506020028101906104409190611938565b905061044f6020820182611938565b60018787604051610461929190611958565b9081526020016040518091039020600083600001602081019061048491906118be565b6001600160a01b0316815260208101919091526040016000206104a78282611af9565b505050600101610413565b506104bd8484610bc8565b50505050565b6000546001600160a01b031633146104ee57604051637fea9dc560e01b815260040160405180910390fd5b8060018585604051610501929190611958565b90815260408051602092819003830190206001600160a01b03861660009081529252902061052f8282611af9565b9050506104bd8484610bc8565b610544610d61565b61054d82610e18565b6105578282610e20565b5050565b6000610565610f0d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60606002838360405161059e929190611958565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b8282101561072257838290600052602060002090600202016040518060400160405290816000820180546105ff906119af565b80601f016020809104026020016040519081016040528092919081815260200182805461062b906119af565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b50505050508152602001600182018054610691906119af565b80601f01602080910402602001604051908101604052809291908181526020018280546106bd906119af565b801561070a5780601f106106df5761010080835404028352916020019161070a565b820191906000526020600020905b8154815290600101906020018083116106ed57829003601f168201915b505050505081525050815260200190600101906105cc565b5050505090505b92915050565b610737610f56565b6107416000610fca565b565b60008060018b8b604051610758929190611958565b9081526040805191829003602090810183206001600160a01b03871660009081529152819020828201909152805482908290610793906119af565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf906119af565b801561080c5780601f106107e15761010080835404028352916020019161080c565b820191906000526020600020905b8154815290600101906020018083116107ef57829003601f168201915b50505050508152602001600182018054610825906119af565b80601f0160208091040260200160405190810160405280929190818152602001828054610851906119af565b801561089e5780601f106108735761010080835404028352916020019161089e565b820191906000526020600020905b81548152906001019060200180831161088157829003601f168201915b50505050508152505090506108bc8989898985600001516001611048565b80156108d657506108d68989878785602001516001611048565b9b9a5050505050505050505050565b6108ed610f56565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156109fd57845468ff00000000000000001916680100000000000000001785555b610a0633611101565b610a0e611112565b60005b86811015610adc576001600460008a8a85818110610a3157610a31611922565b9050602002016020810190610a4691906118be565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556003888883818110610a8257610a82611922565b9050602002016020810190610a9791906118be565b8154600180820184556000938452602090932001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905501610a11565b506005805460ff191660ff88161790558315610b3757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600554600090600390610b579060ff166002611bf2565b610b62906002611c15565b610b6c9190611c2e565b905090565b610b79610f56565b6001600160a01b038116610bbc576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610407565b610bc581610fca565b50565b600354600090815b81811015610c5c57600060018686604051610bec929190611958565b9081526020016040518091039020600060038481548110610c0f57610c0f611922565b60009182526020808320909101546001600160a01b0316835282019290925260400190208054610c3e906119af565b90501115610c545782610c5081611c5e565b9350505b600101610bd0565b50808214610c6a5750505050565b60028484604051610c7c929190611958565b90815260200160405180910390206000610c9691906113cb565b60005b81811015610d5a5760028585604051610cb3929190611958565b908152602001604051809103902060018686604051610cd3929190611958565b9081526020016040518091039020600060038481548110610cf657610cf6611922565b60009182526020808320909101546001600160a01b031683528281019390935260409091018120835460018101855593825291902090916002020180610d3c8382611c77565b50600181810190610d4f90840182611c77565b505050600101610c99565b5050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dfa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dee7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156107415760405163703e46dd60e11b815260040160405180910390fd5b610bc5610f56565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e7a575060408051601f3d908101601f19168201909252610e7791810190611d54565b60015b610ea257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610407565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610efe576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610407565b610f08838361111a565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107415760405163703e46dd60e11b815260040160405180910390fd5b33610f887f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610741576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610407565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008060006120506001600160a01b0316620249f08a8a8a8a8a8a60405160200161107896959493929190611d96565b60408051601f198184030181529082905261109291611de7565b6000604051808303818686fa925050503d80600081146110ce576040519150601f19603f3d011682016040523d82523d6000602084013e6110d3565b606091505b50915091508180156110f45750808060200190518101906110f49190611df9565b9998505050505050505050565b611109611170565b610bc5816111d7565b610741611170565b611123826111df565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561116857610f088282611263565b6105576112d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610741576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b79611170565b806001600160a01b03163b60000361121557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610407565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516112809190611de7565b600060405180830381855af49150503d80600081146112bb576040519150601f19603f3d011682016040523d82523d6000602084013e6112c0565b606091505b50915091506112d0858383611311565b95945050505050565b3415610741576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826113265761132182611389565b611382565b815115801561133d57506001600160a01b0384163b155b1561137f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610407565b50805b9392505050565b8051156113995780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5080546000825560020290600052602060002090810190610bc591905b808211156114135760006113fc8282611417565b61140a600183016000611417565b506002016113e8565b5090565b508054611423906119af565b6000825580601f10611433575050565b601f016020900490600052602060002090810190610bc591905b80821115611413576000815560010161144d565b60008083601f84011261147357600080fd5b50813567ffffffffffffffff81111561148b57600080fd5b6020830191508360208285010111156114a357600080fd5b9250929050565b60008083601f8401126114bc57600080fd5b50813567ffffffffffffffff8111156114d457600080fd5b6020830191508360208260051b85010111156114a357600080fd5b6000806000806040858703121561150557600080fd5b843567ffffffffffffffff8082111561151d57600080fd5b61152988838901611461565b9096509450602087013591508082111561154257600080fd5b5061154f878288016114aa565b95989497509550505050565b80356001600160a01b038116811461157257600080fd5b919050565b6000806000806060858703121561158d57600080fd5b843567ffffffffffffffff808211156115a557600080fd5b6115b188838901611461565b90965094508491506115c56020880161155b565b935060408701359150808211156115db57600080fd5b508501604081880312156115ee57600080fd5b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561162257600080fd5b61162b8361155b565b9150602083013567ffffffffffffffff8082111561164857600080fd5b818501915085601f83011261165c57600080fd5b81358181111561166e5761166e6115f9565b604051601f8201601f19908116603f01168101908382118183101715611696576116966115f9565b816040528281528860208487010111156116af57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080602083850312156116e457600080fd5b823567ffffffffffffffff8111156116fb57600080fd5b61170785828601611461565b90969095509350505050565b60005b8381101561172e578181015183820152602001611716565b50506000910152565b6000815180845261174f816020860160208601611713565b601f01601f19169290920160200192915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156117dc57888303603f19018552815180518785526117b088860182611737565b91890151858303868b01529190506117c88183611737565b96890196945050509086019060010161178c565b509098975050505050505050565b600080600080600080600080600060a08a8c03121561180857600080fd5b893567ffffffffffffffff8082111561182057600080fd5b61182c8d838e01611461565b909b50995060208c013591508082111561184557600080fd5b6118518d838e01611461565b909950975060408c013591508082111561186a57600080fd5b6118768d838e01611461565b909750955060608c013591508082111561188f57600080fd5b5061189c8c828d01611461565b90945092506118af905060808b0161155b565b90509295985092959850929598565b6000602082840312156118d057600080fd5b6113828261155b565b600080602083850312156118ec57600080fd5b823567ffffffffffffffff81111561190357600080fd5b611707858286016114aa565b6020815260006113826020830184611737565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261194e57600080fd5b9190910192915050565b8183823760009101908152919050565b6000808335601e1984360301811261197f57600080fd5b83018035915067ffffffffffffffff82111561199a57600080fd5b6020019150368190038213156114a357600080fd5b600181811c908216806119c357607f821691505b6020821081036119e357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f08576000816000526020600020601f850160051c81016020861015611a125750805b601f850160051c820191505b81811015611a3157828155600101611a1e565b505050505050565b67ffffffffffffffff831115611a5157611a516115f9565b611a6583611a5f83546119af565b836119e9565b6000601f841160018114611a995760008515611a815750838201355b600019600387901b1c1916600186901b178355610d5a565b600083815260209020601f19861690835b82811015611aca5786850135825560209485019460019092019101611aaa565b5086821015611ae75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b611b038283611968565b67ffffffffffffffff811115611b1b57611b1b6115f9565b611b2f81611b2985546119af565b856119e9565b6000601f821160018114611b635760008315611b4b5750838201355b600019600385901b1c1916600184901b178555611bbd565b600085815260209020601f19841690835b82811015611b945786850135825560209485019460019092019101611b74565b5084821015611bb15760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050611bce6020830183611968565b6104bd818360018601611a39565b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160290811690818114611c0e57611c0e611bdc565b5092915050565b60ff818116838216019081111561072957610729611bdc565b600060ff831680611c4f57634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b600060018201611c7057611c70611bdc565b5060010190565b818103611c82575050565b611c8c82546119af565b67ffffffffffffffff811115611ca457611ca46115f9565b611cb881611cb284546119af565b846119e9565b6000601f821160018114611cec5760008315611cd45750848201545b600019600385901b1c1916600184901b178455610d5a565b600085815260209020601f19841690600086815260209020845b83811015611d265782860154825560019586019590910190602001611d06565b5085831015611d445781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611d6657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611daa60808301888a611d6d565b8281036020840152611dbd818789611d6d565b90508281036040840152611dd18186611737565b9150508215156060830152979650505050505050565b6000825161194e818460208701611713565b600060208284031215611e0b57600080fd5b8151801515811461138257600080fdfea26469706673582212204b59cf7190e72f63948a092c4303e27cfd7a877e290379d3209eaf93494926fa64736f6c63430008180033","deployedBytecode":"0x6080604052600436106100f35760003560e01c80638389cb181161008a578063d8718da011610059578063d8718da0146102ea578063ed612f8c146102ff578063f2fde38b14610319578063facd743b1461033957600080fd5b80638389cb181461020d5780638da5cb5b1461022d578063a224cee714610274578063ad3cb1cc1461029457600080fd5b806352d1902d116100c657806352d1902d14610178578063636b8a0d1461019b578063715018a6146101c857806381b6ecf5146101dd57600080fd5b806327498240146100f857806332bae10d1461012357806334a1a095146101455780634f1ef28614610165575b600080fd5b34801561010457600080fd5b5060055460ff165b60405160ff90911681526020015b60405180910390f35b34801561012f57600080fd5b5061014361013e3660046114ef565b610372565b005b34801561015157600080fd5b50610143610160366004611577565b6104c3565b61014361017336600461160f565b61053c565b34801561018457600080fd5b5061018d61055b565b60405190815260200161011a565b3480156101a757600080fd5b506101bb6101b63660046116d1565b61058a565b60405161011a9190611763565b3480156101d457600080fd5b5061014361072f565b3480156101e957600080fd5b506101fd6101f83660046117ea565b610743565b604051901515815260200161011a565b34801561021957600080fd5b506101436102283660046118be565b6108e5565b34801561023957600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161011a565b34801561028057600080fd5b5061014361028f3660046118d9565b61091c565b3480156102a057600080fd5b506102dd6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161011a919061190f565b3480156102f657600080fd5b5061010c610b40565b34801561030b57600080fd5b5060055461010c9060ff1681565b34801561032557600080fd5b506101436103343660046118be565b610b71565b34801561034557600080fd5b506101fd6103543660046118be565b6001600160a01b031660009081526004602052604090205460ff1690565b6000546001600160a01b0316331461039d57604051637fea9dc560e01b815260040160405180910390fd5b60055460ff168114610410576040517f180a097700000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f76616c696461746f727320636f756e740000000000000000000000000000000060448201526064015b60405180910390fd5b60005b818110156104b2573683838381811061042e5761042e611922565b90506020028101906104409190611938565b905061044f6020820182611938565b60018787604051610461929190611958565b9081526020016040518091039020600083600001602081019061048491906118be565b6001600160a01b0316815260208101919091526040016000206104a78282611af9565b505050600101610413565b506104bd8484610bc8565b50505050565b6000546001600160a01b031633146104ee57604051637fea9dc560e01b815260040160405180910390fd5b8060018585604051610501929190611958565b90815260408051602092819003830190206001600160a01b03861660009081529252902061052f8282611af9565b9050506104bd8484610bc8565b610544610d61565b61054d82610e18565b6105578282610e20565b5050565b6000610565610f0d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60606002838360405161059e929190611958565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b8282101561072257838290600052602060002090600202016040518060400160405290816000820180546105ff906119af565b80601f016020809104026020016040519081016040528092919081815260200182805461062b906119af565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b50505050508152602001600182018054610691906119af565b80601f01602080910402602001604051908101604052809291908181526020018280546106bd906119af565b801561070a5780601f106106df5761010080835404028352916020019161070a565b820191906000526020600020905b8154815290600101906020018083116106ed57829003601f168201915b505050505081525050815260200190600101906105cc565b5050505090505b92915050565b610737610f56565b6107416000610fca565b565b60008060018b8b604051610758929190611958565b9081526040805191829003602090810183206001600160a01b03871660009081529152819020828201909152805482908290610793906119af565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf906119af565b801561080c5780601f106107e15761010080835404028352916020019161080c565b820191906000526020600020905b8154815290600101906020018083116107ef57829003601f168201915b50505050508152602001600182018054610825906119af565b80601f0160208091040260200160405190810160405280929190818152602001828054610851906119af565b801561089e5780601f106108735761010080835404028352916020019161089e565b820191906000526020600020905b81548152906001019060200180831161088157829003601f168201915b50505050508152505090506108bc8989898985600001516001611048565b80156108d657506108d68989878785602001516001611048565b9b9a5050505050505050505050565b6108ed610f56565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156109fd57845468ff00000000000000001916680100000000000000001785555b610a0633611101565b610a0e611112565b60005b86811015610adc576001600460008a8a85818110610a3157610a31611922565b9050602002016020810190610a4691906118be565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556003888883818110610a8257610a82611922565b9050602002016020810190610a9791906118be565b8154600180820184556000938452602090932001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905501610a11565b506005805460ff191660ff88161790558315610b3757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600554600090600390610b579060ff166002611bf2565b610b62906002611c15565b610b6c9190611c2e565b905090565b610b79610f56565b6001600160a01b038116610bbc576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610407565b610bc581610fca565b50565b600354600090815b81811015610c5c57600060018686604051610bec929190611958565b9081526020016040518091039020600060038481548110610c0f57610c0f611922565b60009182526020808320909101546001600160a01b0316835282019290925260400190208054610c3e906119af565b90501115610c545782610c5081611c5e565b9350505b600101610bd0565b50808214610c6a5750505050565b60028484604051610c7c929190611958565b90815260200160405180910390206000610c9691906113cb565b60005b81811015610d5a5760028585604051610cb3929190611958565b908152602001604051809103902060018686604051610cd3929190611958565b9081526020016040518091039020600060038481548110610cf657610cf6611922565b60009182526020808320909101546001600160a01b031683528281019390935260409091018120835460018101855593825291902090916002020180610d3c8382611c77565b50600181810190610d4f90840182611c77565b505050600101610c99565b5050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dfa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dee7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156107415760405163703e46dd60e11b815260040160405180910390fd5b610bc5610f56565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e7a575060408051601f3d908101601f19168201909252610e7791810190611d54565b60015b610ea257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610407565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610efe576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610407565b610f08838361111a565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107415760405163703e46dd60e11b815260040160405180910390fd5b33610f887f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610741576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610407565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008060006120506001600160a01b0316620249f08a8a8a8a8a8a60405160200161107896959493929190611d96565b60408051601f198184030181529082905261109291611de7565b6000604051808303818686fa925050503d80600081146110ce576040519150601f19603f3d011682016040523d82523d6000602084013e6110d3565b606091505b50915091508180156110f45750808060200190518101906110f49190611df9565b9998505050505050505050565b611109611170565b610bc5816111d7565b610741611170565b611123826111df565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561116857610f088282611263565b6105576112d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610741576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b79611170565b806001600160a01b03163b60000361121557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610407565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516112809190611de7565b600060405180830381855af49150503d80600081146112bb576040519150601f19603f3d011682016040523d82523d6000602084013e6112c0565b606091505b50915091506112d0858383611311565b95945050505050565b3415610741576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826113265761132182611389565b611382565b815115801561133d57506001600160a01b0384163b155b1561137f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610407565b50805b9392505050565b8051156113995780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5080546000825560020290600052602060002090810190610bc591905b808211156114135760006113fc8282611417565b61140a600183016000611417565b506002016113e8565b5090565b508054611423906119af565b6000825580601f10611433575050565b601f016020900490600052602060002090810190610bc591905b80821115611413576000815560010161144d565b60008083601f84011261147357600080fd5b50813567ffffffffffffffff81111561148b57600080fd5b6020830191508360208285010111156114a357600080fd5b9250929050565b60008083601f8401126114bc57600080fd5b50813567ffffffffffffffff8111156114d457600080fd5b6020830191508360208260051b85010111156114a357600080fd5b6000806000806040858703121561150557600080fd5b843567ffffffffffffffff8082111561151d57600080fd5b61152988838901611461565b9096509450602087013591508082111561154257600080fd5b5061154f878288016114aa565b95989497509550505050565b80356001600160a01b038116811461157257600080fd5b919050565b6000806000806060858703121561158d57600080fd5b843567ffffffffffffffff808211156115a557600080fd5b6115b188838901611461565b90965094508491506115c56020880161155b565b935060408701359150808211156115db57600080fd5b508501604081880312156115ee57600080fd5b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561162257600080fd5b61162b8361155b565b9150602083013567ffffffffffffffff8082111561164857600080fd5b818501915085601f83011261165c57600080fd5b81358181111561166e5761166e6115f9565b604051601f8201601f19908116603f01168101908382118183101715611696576116966115f9565b816040528281528860208487010111156116af57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080602083850312156116e457600080fd5b823567ffffffffffffffff8111156116fb57600080fd5b61170785828601611461565b90969095509350505050565b60005b8381101561172e578181015183820152602001611716565b50506000910152565b6000815180845261174f816020860160208601611713565b601f01601f19169290920160200192915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156117dc57888303603f19018552815180518785526117b088860182611737565b91890151858303868b01529190506117c88183611737565b96890196945050509086019060010161178c565b509098975050505050505050565b600080600080600080600080600060a08a8c03121561180857600080fd5b893567ffffffffffffffff8082111561182057600080fd5b61182c8d838e01611461565b909b50995060208c013591508082111561184557600080fd5b6118518d838e01611461565b909950975060408c013591508082111561186a57600080fd5b6118768d838e01611461565b909750955060608c013591508082111561188f57600080fd5b5061189c8c828d01611461565b90945092506118af905060808b0161155b565b90509295985092959850929598565b6000602082840312156118d057600080fd5b6113828261155b565b600080602083850312156118ec57600080fd5b823567ffffffffffffffff81111561190357600080fd5b611707858286016114aa565b6020815260006113826020830184611737565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261194e57600080fd5b9190910192915050565b8183823760009101908152919050565b6000808335601e1984360301811261197f57600080fd5b83018035915067ffffffffffffffff82111561199a57600080fd5b6020019150368190038213156114a357600080fd5b600181811c908216806119c357607f821691505b6020821081036119e357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f08576000816000526020600020601f850160051c81016020861015611a125750805b601f850160051c820191505b81811015611a3157828155600101611a1e565b505050505050565b67ffffffffffffffff831115611a5157611a516115f9565b611a6583611a5f83546119af565b836119e9565b6000601f841160018114611a995760008515611a815750838201355b600019600387901b1c1916600186901b178355610d5a565b600083815260209020601f19861690835b82811015611aca5786850135825560209485019460019092019101611aaa565b5086821015611ae75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b611b038283611968565b67ffffffffffffffff811115611b1b57611b1b6115f9565b611b2f81611b2985546119af565b856119e9565b6000601f821160018114611b635760008315611b4b5750838201355b600019600385901b1c1916600184901b178555611bbd565b600085815260209020601f19841690835b82811015611b945786850135825560209485019460019092019101611b74565b5084821015611bb15760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050611bce6020830183611968565b6104bd818360018601611a39565b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160290811690818114611c0e57611c0e611bdc565b5092915050565b60ff818116838216019081111561072957610729611bdc565b600060ff831680611c4f57634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b600060018201611c7057611c70611bdc565b5060010190565b818103611c82575050565b611c8c82546119af565b67ffffffffffffffff811115611ca457611ca46115f9565b611cb881611cb284546119af565b846119e9565b6000601f821160018114611cec5760008315611cd45750848201545b600019600385901b1c1916600184901b178455610d5a565b600085815260209020601f19841690600086815260209020845b83811015611d265782860154825560019586019590910190602001611d06565b5085831015611d445781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611d6657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611daa60808301888a611d6d565b8281036020840152611dbd818789611d6d565b90508281036040840152611dd18186611737565b9150508215156060830152979650505050505050565b6000825161194e818460208701611713565b600060208284031215611e0b57600080fd5b8151801515811461138257600080fdfea26469706673582212204b59cf7190e72f63948a092c4303e27cfd7a877e290379d3209eaf93494926fa64736f6c63430008180033","linkReferences":{},"deployedLinkReferences":{}}`