diff --git a/packages/contracts/deployments/sepolia/Colosseum.json b/packages/contracts/deployments/sepolia/Colosseum.json index dc99104d8..30210585f 100644 --- a/packages/contracts/deployments/sepolia/Colosseum.json +++ b/packages/contracts/deployments/sepolia/Colosseum.json @@ -1,5 +1,5 @@ { - "address": "0x7F7F3A5b06c1676b85df85afc5463C32f3A0Edf1", + "address": "0x3282fb22de03B0CB39eA40C4F57DC051Aa00EA79", "abi": [ { "inputs": [ @@ -984,32 +984,32 @@ "type": "function" } ], - "transactionHash": "0x8855cf76e455456ba133ededdf76c35e54714338b0c7272a28ebb6c8ae8d3b3d", + "transactionHash": "0xe060ce640b8edc44bd96f6554354cbd41de95fb3658605af3653554c12783339", "receipt": { "to": null, - "from": "0x4935E310f69695c9A6e96d3992028CAbF082f686", - "contractAddress": "0x7F7F3A5b06c1676b85df85afc5463C32f3A0Edf1", - "transactionIndex": 16, - "gasUsed": "5105773", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000800000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x45533c60113441bf227d533d64215cbab3bdb8b9e79d600f812e28fe73eb1a67", - "transactionHash": "0x8855cf76e455456ba133ededdf76c35e54714338b0c7272a28ebb6c8ae8d3b3d", + "from": "0x2A819b780B80B9C476A78738F6BC0Db8A1C1A2f5", + "contractAddress": "0x3282fb22de03B0CB39eA40C4F57DC051Aa00EA79", + "transactionIndex": 25, + "gasUsed": "5018341", + "logsBloom": "0x00000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000008000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xec8bc1509ab5cc00a12826c00ae5dddea481f8f3f6ab1123efb4a5cb9dfdca69", + "transactionHash": "0xe060ce640b8edc44bd96f6554354cbd41de95fb3658605af3653554c12783339", "logs": [ { - "transactionIndex": 16, - "blockNumber": 4605976, - "transactionHash": "0x8855cf76e455456ba133ededdf76c35e54714338b0c7272a28ebb6c8ae8d3b3d", - "address": "0x7F7F3A5b06c1676b85df85afc5463C32f3A0Edf1", + "transactionIndex": 25, + "blockNumber": 5605135, + "transactionHash": "0xe060ce640b8edc44bd96f6554354cbd41de95fb3658605af3653554c12783339", + "address": "0x3282fb22de03B0CB39eA40C4F57DC051Aa00EA79", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 38, - "blockHash": "0x45533c60113441bf227d533d64215cbab3bdb8b9e79d600f812e28fe73eb1a67" + "logIndex": 35, + "blockHash": "0xec8bc1509ab5cc00a12826c00ae5dddea481f8f3f6ab1123efb4a5cb9dfdca69" } ], - "blockNumber": 4605976, - "cumulativeGasUsed": "9346734", + "blockNumber": 5605135, + "cumulativeGasUsed": "9545268", "status": 1, "byzantium": true }, @@ -1031,11 +1031,11 @@ "0x7F0DECbef4FdD0193b7d5c8Cc918C1A69d3eF78C", "0x3ca61fb8b86E5B69058ae1C2c2623276D2B99C21" ], - "numDeployments": 1, - "solcInputHash": "941e3f3da3dcaeff7ae5c56594848e85", - "metadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"contract ZKVerifier\",\"name\":\"_zkVerifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_submissionInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_creationPeriodSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bisectionTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provingTimeout\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_dummyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxTxs\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_securityCouncil\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zkMerkleTrie\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"turn\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Bisected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengeDismissed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengerTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Proven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"}],\"name\":\"ReadyToProve\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BISECTION_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CREATION_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DUMMY_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE_SUBMISSION_INTERVAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TXS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROVING_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECURITY_COUNCIL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZK_MERKLE_TRIE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZK_VERIFIER\",\"outputs\":[{\"internalType\":\"contract ZKVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pos\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_segments\",\"type\":\"bytes32[]\"}],\"name\":\"bisect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"cancelChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"challengerTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"challenges\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"turn\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"timeoutAt\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"segSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segStart\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l1BlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_segments\",\"type\":\"bytes32[]\"}],\"name\":\"createChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asserter\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_publicInputHash\",\"type\":\"bytes32\"}],\"name\":\"dismissChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"forceDeleteOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"getChallenge\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"turn\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"timeoutAt\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"segments\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"segSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segStart\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Challenge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_turn\",\"type\":\"uint8\"}],\"name\":\"getSegmentsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"getStatus\",\"outputs\":[{\"internalType\":\"enum Colosseum.ChallengeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"isAbleToBisect\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"isInCreationPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_pos\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nextBlockHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.OutputRootProof\",\"name\":\"srcOutputRootProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nextBlockHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.OutputRootProof\",\"name\":\"dstOutputRootProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"number\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"baseFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"transactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"withdrawalsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"txHashes\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct Types.PublicInput\",\"name\":\"publicInput\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"uncleHash\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"coinbase\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"receiptsRoot\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"logsBloom\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"difficulty\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"gasUsed\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"mixHash\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"nonce\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.BlockHeaderRLP\",\"name\":\"rlps\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"l2ToL1MessagePasserBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l2ToL1MessagePasserCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"merkleProof\",\"type\":\"bytes[]\"}],\"internalType\":\"struct Types.PublicInputProof\",\"name\":\"_proof\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"_zkproof\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_pair\",\"type\":\"uint256[]\"}],\"name\":\"proveFault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"verifiedPublicInputs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Bisected(uint256,address,uint8,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when bisected.\",\"turn\":\"The current turn.\"}},\"ChallengeCanceled(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when canceled.\"}},\"ChallengeCreated(uint256,address,address,uint256)\":{\"params\":{\"asserter\":\"Address of the asserter.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when created.\"}},\"ChallengeDismissed(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when dismissed.\"}},\"ChallengerTimedOut(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when deleted.\"}},\"Proven(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when proven.\"}},\"ReadyToProve(uint256,address)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\"}}},\"kind\":\"dev\",\"methods\":{\"bisect(uint256,address,uint256,bytes32[])\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_pos\":\"Position of the last valid segment.\",\"_segments\":\"Array of the segment. A segment is the first output root of a specific range.\"}},\"cancelChallenge(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"challengerTimeout(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"constructor\":{\"custom:semver\":\"1.0.0\",\"params\":{\"_bisectionTimeout\":\"Timeout seconds for the bisection.\",\"_creationPeriodSeconds\":\"Seconds The period seconds for which challenges can be created per each output.\",\"_dummyHash\":\"Dummy hash.\",\"_l2Oracle\":\"Address of the L2OutputOracle contract.\",\"_maxTxs\":\"Number of max transactions per block.\",\"_provingTimeout\":\"Timeout seconds for the proving.\",\"_securityCouncil\":\"Address of security council.\",\"_segmentsLengths\":\"Lengths of segments.\",\"_submissionInterval\":\"Interval in blocks at which checkpoints must be submitted.\",\"_zkMerkleTrie\":\"Address of zk merkle trie.\",\"_zkVerifier\":\"Address of the ZKVerifier contract.\"}},\"createChallenge(uint256,bytes32,uint256,bytes32[])\":{\"params\":{\"_l1BlockHash\":\"The block hash of L1 at the time the output L2 block was created.\",\"_l1BlockNumber\":\"The block number of L1 with the specified L1 block hash.\",\"_outputIndex\":\"Index of the invalid L2 checkpoint output.\",\"_segments\":\"Array of the segment. A segment is the first output root of a specific range.\"}},\"dismissChallenge(uint256,address,address,bytes32,bytes32)\":{\"params\":{\"_asserter\":\"Address of the asserter.\",\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_outputRoot\":\"The L2 output root to rollback.\",\"_publicInputHash\":\"Hash of public input.\"}},\"forceDeleteOutput(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"getChallenge(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"The challenge data.\"}},\"getSegmentsLength(uint8)\":{\"params\":{\"_turn\":\"The challenge turn.\"},\"returns\":{\"_0\":\"The segments length.\"}},\"getStatus(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"The status of the challenge.\"}},\"isAbleToBisect(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"Whether bisection is possible.\"}},\"isInCreationPeriod(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"Whether current timestamp is in challenge creation period.\"}},\"proveFault(uint256,uint256,((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[]),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[])\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_pair\":\"Aggregated multi-opening proofs and public inputs. (Currently only 2 public inputs)\",\"_pos\":\"Position of the last valid segment.\",\"_proof\":\"Proof for public input validation.\",\"_zkproof\":\"Halo2 proofs composed of points and scalars. See https://zcash.github.io/halo2/design/implementation/proofs.html.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Bisected(uint256,address,uint8,uint256)\":{\"notice\":\"Emitted when segments are bisected.\"},\"ChallengeCanceled(uint256,address,uint256)\":{\"notice\":\"Emitted when challenge is canceled.\"},\"ChallengeCreated(uint256,address,address,uint256)\":{\"notice\":\"Emitted when the challenge is created.\"},\"ChallengeDismissed(uint256,address,uint256)\":{\"notice\":\"Emitted when challenge is dismissed.\"},\"ChallengerTimedOut(uint256,address,uint256)\":{\"notice\":\"Emitted when challenger timed out.\"},\"Proven(uint256,address,uint256)\":{\"notice\":\"Emitted when proven fault.\"},\"ReadyToProve(uint256,address)\":{\"notice\":\"Emitted when it is ready to be proved.\"}},\"kind\":\"user\",\"methods\":{\"BISECTION_TIMEOUT()\":{\"notice\":\"Timeout seconds for the bisection.\"},\"CREATION_PERIOD_SECONDS()\":{\"notice\":\"The period seconds for which challenges can be created per each output.\"},\"DUMMY_HASH()\":{\"notice\":\"The dummy transaction hash. This is used to pad if the number of transactions is less than MAX_TXS. This is same as: unsignedTx = { nonce: 0, gasLimit: 0, gasPrice: 0, to: address(0), value: 0, data: '0x', chainId: CHAIN_ID, } signature = sign(unsignedTx, 0x1) dummyHash = keccak256(rlp({ ...unsignedTx, signature, }))\"},\"L2_ORACLE()\":{\"notice\":\"Address of the L2OutputOracle.\"},\"L2_ORACLE_SUBMISSION_INTERVAL()\":{\"notice\":\"The interval in L2 blocks at which checkpoints must be submitted on L2OutputOracle contract.\"},\"MAX_TXS()\":{\"notice\":\"The maximum number of transactions\"},\"PROVING_TIMEOUT()\":{\"notice\":\"Timeout seconds for the proving.\"},\"SECURITY_COUNCIL()\":{\"notice\":\"Address that has the ability to approve the challenge.\"},\"ZK_MERKLE_TRIE()\":{\"notice\":\"Address that has the ability to verify the merkle proof.\"},\"ZK_VERIFIER()\":{\"notice\":\"Address of the ZKVerifier.\"},\"bisect(uint256,address,uint256,bytes32[])\":{\"notice\":\"Selects an invalid section and submit segments of that section.\"},\"cancelChallenge(uint256)\":{\"notice\":\"Cancels the challenge. Reverts if is not possible to cancel the sender's challenge for the given output index.\"},\"challengerTimeout(uint256,address)\":{\"notice\":\"Calls a private function that deletes the challenge because the challenger has timed out. Reverts if the challenger hasn't timed out.\"},\"challenges(uint256,address)\":{\"notice\":\"A mapping of the challenge.\"},\"createChallenge(uint256,bytes32,uint256,bytes32[])\":{\"notice\":\"Creates a challenge against an invalid output.\"},\"dismissChallenge(uint256,address,address,bytes32,bytes32)\":{\"notice\":\"Dismisses the challenge and rollback l2 output. This function can only be called by Security Council contract.\"},\"forceDeleteOutput(uint256)\":{\"notice\":\"Deletes the L2 output root forcefully by the Security Council when zk-proving is not possible due to an undeniable bug.\"},\"getChallenge(uint256,address)\":{\"notice\":\"Returns the challenge corresponding to the given L2 output index.\"},\"getSegmentsLength(uint8)\":{\"notice\":\"Returns the segment length required for that turn.\"},\"getStatus(uint256,address)\":{\"notice\":\"Returns the challenge status corresponding to the given L2 output index.\"},\"initialize(uint256[])\":{\"notice\":\"Initializer.\"},\"isAbleToBisect(uint256,address)\":{\"notice\":\"Determines whether bisection is possible in the challenge corresponding to the given L2 output index.\"},\"isInCreationPeriod(uint256)\":{\"notice\":\"Determines whether current timestamp is in challenge creation period corresponding to the given L2 output index.\"},\"proveFault(uint256,uint256,((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[]),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[])\":{\"notice\":\"Proves that a specific output is invalid using ZKP. This function can only be called in the READY_TO_PROVE and ASSERTER_TIMEOUT states.\"},\"verifiedPublicInputs(bytes32)\":{\"notice\":\"A mapping indicating whether a public input is verified or not.\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L1/Colosseum.sol\":\"Colosseum\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":@rari-capital/=node_modules/@rari-capital/\",\":@rari-capital/solmate/=node_modules/@rari-capital/solmate/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"contracts/L1/Colosseum.sol\":{\"keccak256\":\"0x193ff79e6327019fe070c22b40c9f08ae84fe8954a2017e54b9e4db48c94c5a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ac5a738ecc96c41757caf032f6b84aa54eee07ae0ba00e61c89d9e5240a60c5\",\"dweb:/ipfs/Qme8aud1gNf52cFV2VjZ52uJ9sWsnthTn8BTANyV41Sppp\"]},\"contracts/L1/IZKMerkleTrie.sol\":{\"keccak256\":\"0xc0db9a82935f3ae1e0137e8752be690244fdf939f6adc262b82a9daa76ef3c91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26b5651a98c1a679ba8c945ba595c94a9b8ed758a2e8bb2baaeb571967f0820f\",\"dweb:/ipfs/Qmc42qGNY69oMmSdT6CxCtYsjmHHUmBnnuqgZfh9QmYMAv\"]},\"contracts/L1/KromaPortal.sol\":{\"keccak256\":\"0x8fab0c5e78b2a4ab14c60adb81d91514b9ccfde2a03a97e811b6eb1080159dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e0ec326772604fcd2368e545303d953d6ca8424abc039cbdd76b7d01df1a803\",\"dweb:/ipfs/QmRip4Fy2XAb1Vj5qbvHQchnm1fcreFw3W7qUYxetavbbi\"]},\"contracts/L1/L2OutputOracle.sol\":{\"keccak256\":\"0xec67136475ca92153c017b8578930baea30554f4d712e6c985b053b0ba1e83e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227aa644f048042bc780a02002766ef086fc6ccd0c6c5e7f2d526e3c8cf64fe2\",\"dweb:/ipfs/QmS9DjRu46TuaeL6DFG3mekkGPn2PzjnNQ8JDj88SbtrXt\"]},\"contracts/L1/ResourceMetering.sol\":{\"keccak256\":\"0xbc18cbf0e4fa8c9a17e04be6bf8e59bf5db5e71622f15fc15eb359db598abc59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29aa63d99de92760ebf0adfed473d2c6d6a52e4727e29f6fbfedd35c6c2e7100\",\"dweb:/ipfs/QmSVRRqcfhgbMvPztPdNvEhc7nakz5qBdKLddpXNvMRWjL\"]},\"contracts/L1/SecurityCouncil.sol\":{\"keccak256\":\"0xca76cb4afb1a372df55a2d46f0c0aeb2cbe84c952d5b232788597c28ee5b5b81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce7533c7c9f72b85f251406415b1823d225bf168c916a00ff0abbc7605577660\",\"dweb:/ipfs/QmXeNuk7jXpCfDSGZK4KTdQxEdBxS9DuGJiaMroFHsYJyE\"]},\"contracts/L1/SystemConfig.sol\":{\"keccak256\":\"0xda300bf45b16cc3de950e6474499994ad4a257b5d9374ad6ea9dc715945c5d2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94825dd9982ad502b2b7de48f57ce99c7be73758a42378666e8784464daae8d2\",\"dweb:/ipfs/QmPQuQwkiS9YhRHpzzunfahh6edgDsZmBUMYAuQe5SSqnp\"]},\"contracts/L1/ValidatorPool.sol\":{\"keccak256\":\"0xbc5abef04aee93f3b7901ed9847b3627793d72eb6110d6c3f9ee5780c8451143\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830cf5f34388b344c976614917961ab7455b258e861d85c82c9ec32e45c0aab5\",\"dweb:/ipfs/QmZP9QKA9uq4mVvmHeTWVzKtrEDBNJRRoXzr6f3YQfi7VK\"]},\"contracts/L1/ZKMerkleTrie.sol\":{\"keccak256\":\"0xdd53226500d7559f83c145e345d640fb3ebdc4790c1d19a0770966eb98b771b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d70f18e6a7eaf07923611903477922bd59415945bfffad062ac60792262c6b74\",\"dweb:/ipfs/QmUDxyM24Sx3zAZJaU7HqhiWdAYCW7QLaALGS6nv3xvCXE\"]},\"contracts/L1/ZKTrieHasher.sol\":{\"keccak256\":\"0x8376cd6c3222d753cc9df6b412e7d0eeb2704cc3a47c3d55886bb4eca18893a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3900f900582bcb5ff17d65887a38776412e27838b62ade1389d727f859cbaf0\",\"dweb:/ipfs/QmYL7V3Ta6cJiQTcziMYwdurcUKhwbqK7Az21H19Vs6W41\"]},\"contracts/L1/ZKVerifier.sol\":{\"keccak256\":\"0x451e397ddd46c9736509bc1e5fee544f84ed1006e5aea161f6de850ac90231c6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3686968c3fa2f65d9e27983e685e9a7220076d5b54a2455301c2c24559a48e4b\",\"dweb:/ipfs/QmdF7Yiwfe9fhL4FM8MrYrK3fN5dRt73WhWfCbWWnaxGTu\"]},\"contracts/L2/L2StandardBridge.sol\":{\"keccak256\":\"0xea1a2f638c816a77c315f3609f5a42109131136aee6690cef64321734e894924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c875dae37c72422554e3f67700ed99fd7bad4a562c45ae524defa19e0bbc975\",\"dweb:/ipfs/QmYmLNGr5KvAfCF3pr2cM7pffKuaVJbMgQFpN1Hw2DfHUL\"]},\"contracts/L2/ValidatorRewardVault.sol\":{\"keccak256\":\"0x8c85869604d07c0ff3af14bf331a92e42f4706fae8df6269ceb7c1db7807509a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7503d14f1becc6829a4c41bdbe3c4cf18a669f180782e4f2945ff8fe53bc62c\",\"dweb:/ipfs/QmSNo8kVzCr46jptrkZUwAZKuvVy1q1sAmNbhih5xdvXoS\"]},\"contracts/governance/UpgradeGovernor.sol\":{\"keccak256\":\"0x41d6052548790b494eb9a8a4f87a2d4106d175bd97efbaec9b72ce55fe7fc7d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d68f5a07fd2fd16a8ecddca75a7526f005de7ef92de8f189850327d948f32ec9\",\"dweb:/ipfs/QmTUfB3YadZBCnn24hYqnvJGbpiUa9FVBKu3RJDzPt746G\"]},\"contracts/libraries/Arithmetic.sol\":{\"keccak256\":\"0x268a178c83f88adac015bb02ea58e40d63187830bcdd7063a945804607b55570\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb3fd08e062e074ba49f596a82417997ef46c29e7dd9cb53ddb3192ac4ce4e0d\",\"dweb:/ipfs/QmZMRCQocGuLEkZeKLXWbp6zran3kYXzJQr6fPZF2xRcbx\"]},\"contracts/libraries/Burn.sol\":{\"keccak256\":\"0x9af535d46ec803e48cf7978cf9af29f259b39f56f929574ca4fcb292e0397ed7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8aca0112f1d20d62d154fa3304d511d51a2a4b86c5a28c69c932263f6a90a11\",\"dweb:/ipfs/QmPhZDd9sLqcoauJ8DA7R5V2gD8qFXsn1gmg63skBV9ZVn\"]},\"contracts/libraries/Bytes.sol\":{\"keccak256\":\"0x6c1cfe3d09a093f5946a87a9a60e469d4510e0749e218c4247b214fc09900b33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1fe4dd501f443a4a253b3940f0931732fc5074b57c8c9a5ca33a76e09de74\",\"dweb:/ipfs/QmQca2QpGggadP85yJyWC1teJxPxmKiKwdnA75Rrr7jygz\"]},\"contracts/libraries/Bytes32.sol\":{\"keccak256\":\"0x049480281697fdb3e7cd108523813a5d5d3b25fdfbad5a5007d9b9590e64d956\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89eebd28a45c4987226a10f023ddf2413e58c7593fe6fcc71cebbf18cc915a2f\",\"dweb:/ipfs/QmX9FEyvhXsxnxc1wdPGjA4kNGQvM4MN99krqEF7o5JGqc\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x992c2b37ecaf845c4e068e8de2bd5124712ed9dda77ee561d05c94ce4d4914fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd6846a4c6615c997546ec8260c77cf2ba3bf0a30fd92d8f76ed1c4940eea90c\",\"dweb:/ipfs/QmR86PTdT25HTj78Ja58UUmgLvMYrNX71zauNz46DArwxz\"]},\"contracts/libraries/Encoding.sol\":{\"keccak256\":\"0xe16e48eabffd0396f87f236e464ba07db03a958692e0c9155ed5bff02729fa79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada78ee0fa9b1d0d8842882039b4c02f0eb74969542c9dce8d9bff6ef62bf8ab\",\"dweb:/ipfs/QmQYbW8Ut15iQDMr31VbZsCzWYWCmY2fGCBjMUoo7JTmzE\"]},\"contracts/libraries/Hashing.sol\":{\"keccak256\":\"0xac83ce19afd76ad298b2ae3dc44d49af8d5a21a8c1740ede65dec08849f0cb45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://27f1da66d4c8dfc13cc905e892423c8b7ccb8baae64f209e2de8ba5a2b2a6302\",\"dweb:/ipfs/QmXrtQFQUok97PSDRx7g8SPfZYyctaL66DYe7WuCAh5doc\"]},\"contracts/libraries/NodeReader.sol\":{\"keccak256\":\"0x3f2345546b715479dd41ea0f999c801c8aefc057b14f8c57ee35cce78e139b44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d15781b5c038b153f42237eddf2cd0d9e67536b8cd3a14e56297893b711e6af\",\"dweb:/ipfs/QmRroSVS6fRmk3bxkWuvNrEB8JqH2MCgmZQxJkhTFE3eds\"]},\"contracts/libraries/Predeploys.sol\":{\"keccak256\":\"0xfeeafa253dba978cab979afc2d7506eeb5aaf89f0256b048c972a84902b139ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96e108a95cb5b043f02f4d6bc50f5ac98bd75da4292c615784ba78fba25718a2\",\"dweb:/ipfs/QmXXNWwdyaNx9MXbQRHViAMmzN8mrd2Y3Xd3DBPE23Wz3J\"]},\"contracts/libraries/SafeCall.sol\":{\"keccak256\":\"0x9c9e20b64d509725e222e6973a9ce26ff68756098070a770e5e0c43d0f899a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9e198e00b17ac6bf2ad41f5a16242f458649eea089e591d88dbaba2a5d133b3\",\"dweb:/ipfs/QmeHvHgAGWjRseSQUrj5BrvHKHFjEg3buvkGkCLDd5aQMm\"]},\"contracts/libraries/Types.sol\":{\"keccak256\":\"0xe3440fb48334bd6ec8478c2dac2b583c6c425fc1457d5c3380e44a6fc7d477d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acec800b64f6213d500c22eb86560c40a7c9fff3f66ad397de17d9e85de209b\",\"dweb:/ipfs/Qmczy9W55zohWoTgg4dv8rCN3zxhw5i2MGbN8UkLmNbSDQ\"]},\"contracts/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"contracts/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0xa50cdacf266549170d36cc35000c075f177e426f4e1c26b4338b9b75d5656ef3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://073c44a92c7b6ddda3144412dbeee0e86435866fec2a05f6493c95d94dd09c35\",\"dweb:/ipfs/QmcM7hTxmdyUxHFYBCXvd9WFZdmNwpNemAvmspaEJu2DqM\"]},\"contracts/universal/FeeVault.sol\":{\"keccak256\":\"0xe2a556e32e16b1851029a67b8d3b07e93e4e7aba7b48783e7354708f818b404c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33eadadd3d2d2914506d3d8265c58d4cc15edf2b8ea722a102ff26b5a7bb72e3\",\"dweb:/ipfs/QmR2noab4xpBEDoFG1aqtXqZRVVYxfRrjbwbfQpyYTn3cX\"]},\"contracts/universal/IKromaMintableERC20.sol\":{\"keccak256\":\"0x1a95268117456ddb1e0a16eb2ba773b9540c7b8b9520e66d4d167ddc6ace6fcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f93d2e6f5121a3dfe272e399d6774e0584d59a20c4f63db78e5a0b644d92fa59\",\"dweb:/ipfs/QmbwM7kCpmwZs348jCeNwF86H8SDBURsGCGCUCyoSS1ffy\"]},\"contracts/universal/ITokenMultiSigWallet.sol\":{\"keccak256\":\"0x39783c3525cd113910d260377c120ba478dd5fde742adc3868b1788eafa37877\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://822f4e1674b030dc6cd2d165700388fe590260001dfe31bb31551d02debf9711\",\"dweb:/ipfs/QmU25xMh3f6QKty77UuG5fji3AsQDxemETRXAV9iovofeA\"]},\"contracts/universal/KromaMintableERC20.sol\":{\"keccak256\":\"0xb1b9bc1d6b081ee59abf7e9b91ea651a0aaf24606058b8c97eda55868572bd56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2133d9724ea4a3678b36ece210982b25999581952e13015f58753e7f2f865a2a\",\"dweb:/ipfs/QmVzbJ8zEfmTTjQ8LJLZUY7LiXAXjL8E98tEvyHmq6YWu9\"]},\"contracts/universal/Semver.sol\":{\"keccak256\":\"0xa816a3d96caaabc0260067ea24ea9effa940bd8ce44c8662444c5a992229d983\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ce8c2a6ca1eaa4d900d8398032399cdae8a03809aba47076dc8078111b31f16\",\"dweb:/ipfs/QmPTA6L8yyN7FJuBopeqHWdHdMmnoPwzSmyYF8FbP4ehcC\"]},\"contracts/universal/StandardBridge.sol\":{\"keccak256\":\"0x97b07e61f135b77d6b5a7f27174cee21bb6a958408a773929eeee18501387d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e75747e512e56f85205822d3d9972e9a9a8e7213eae18f3e958409bf72f60e28\",\"dweb:/ipfs/QmSeF6sWzS8pQCWPiTuDLUXSWFELpohbdtrcbjCLnF5hEG\"]},\"contracts/universal/TokenMultiSigWallet.sol\":{\"keccak256\":\"0xd96e904fa44cc6df5cab93f983d36b79b95d2bf53049aa2240516f8a39ff2ae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a9bce2fbff643acc88c42ab7d073591e701386e3a8a78fa2f7e36a4695336b2\",\"dweb:/ipfs/Qmd2bpVB1DxAYBU7X9DuAs9QDfpz7QyWCAPZnmBuFdF82P\"]},\"contracts/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xfeefb24d068524440e1ba885efdf105d91f83504af3c2d745ffacc4595396831\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df5f6a75f86411cb20df54362ed4ec9b4c270720be20da7095f169932fa2709\",\"dweb:/ipfs/QmTThfuAwFYAvtHgZbmp6ZAbN2MVGSabAnhAbsB6JQxJCF\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol\":{\"keccak256\":\"0xfc12f25adffbe2a2d13ec1ef53a029611e9ac7398097967c76f6d7391f0887b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fad6dc429bd3aa67a615b6ed7824b9d106957e9500814b94733fa90f772e90d7\",\"dweb:/ipfs/QmYGhunsWpwdFDEGi2dA3VuKLQSpMqAX8Ptk7PunkKxNQQ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/IGovernorUpgradeable.sol\":{\"keccak256\":\"0x529df1b018f3e4a9c833b880f47bb51391981144102292486c374f411f7451c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c1b269f62d0b2ea13332ca340175512b2392d913c59f3582166f2966e621e1c\",\"dweb:/ipfs/QmcxsCxssEFpgZhkyQzCT8zu8ovkD1HUHJ42NSUnxipCJT\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol\":{\"keccak256\":\"0x82c0e3fcb6ab5e0bf9b5bcb65f13ba57afdbfa366de4c761c0b8f696386fb29d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b16a49886483f774c62f54ef4c6cf7cba522bc5d2604b3b462193fc51c4168e\",\"dweb:/ipfs/Qmb2mpqrajfqqhFW1FT4eb9nZbWo7pobvwr221UmERie7E\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorCountingSimpleUpgradeable.sol\":{\"keccak256\":\"0x71bbe61c162dfc35636fdf1a9f399adb14de6914d0d59af38bd7fd3fd9af7aaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://243d54f8ede34dec64dd49d32e84490dfd9bdc47f37693dd3adcd5e0ad986ab1\",\"dweb:/ipfs/QmPFDDjGtnqgoiEEyvsckMEx2rXLJiH8Wg6AHYDHaaNHFU\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol\":{\"keccak256\":\"0x92a4ee90de53cdfca915947e8c267c3b0df8041085e6413390fcd0620ad905d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53f084b37d45249d104ef28c4451ca560925ea354d7dc7259643af73199e8cab\",\"dweb:/ipfs/QmXL7wTkiwZyXVsCR22iuDfMSFpqoUUx8Mq5XYfWpM1VQo\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol\":{\"keccak256\":\"0xa3c328d7e594b0b439c8368871e63a8a9c3d760de0fb4a8fb817bd9403b3f9ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f729d862219a71a302b07f92e320313a8ea3392c93d1914ccd75a4a298882245\",\"dweb:/ipfs/QmbxfhNF7VnSTKa1pVmXQny16geow65DQ9KBPrHrdZSPhn\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol\":{\"keccak256\":\"0xf6ee965c883c5dc02dc029b0fd66ea635db79b04ca5f989041295d67fa003765\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dca3e51b6de8bcea875785258eb3412a8fc56ee31ddd04f4d2d05b0d37cf2b0\",\"dweb:/ipfs/QmQuvjk1FAVw6ZG1tYTsnHfJNrjENTJ1oW7MJTZkuBe1in\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol\":{\"keccak256\":\"0x124858fc3f8bedfef96bc099a788993dd40f4728d891122e61f1b940900c324b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05752d50a41672044052d43eb5131babaee6066c7735112bd6e948c5261537c2\",\"dweb:/ipfs/QmWvzbbBB5KaEZfoFoy2eeAfCYij8Bp83Gq5ZbZ6JneQ5c\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/IGovernorTimelockUpgradeable.sol\":{\"keccak256\":\"0xf490b5670f6ceca5a628d3d77854cd5c4c93ea3b5530b7fc5800ec45d441cb78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3823a9538227654f8ab88e902f9ce01161b67002f8ccdf728fd9de2bce3dd822\",\"dweb:/ipfs/QmSrvhMhBsjMRPYLG4tHBHfBwGmYBpjwZhvKtAgvYUb28R\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"keccak256\":\"0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a\",\"dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC165Upgradeable.sol\":{\"keccak256\":\"0x121966b3220d263a6669dcf59c1254bd48ed237adf4d8a595add70a7927eada1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://440dc242517ca29e9802f32dd237a185b4f7aaab67ceb2c1d6307c57636e0904\",\"dweb:/ipfs/QmeQZeMCMmxca8hA4oUFXEwLAzspiwMTQ9CaqFQutYk9ag\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol\":{\"keccak256\":\"0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9\",\"dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol\":{\"keccak256\":\"0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412\",\"dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol\":{\"keccak256\":\"0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c\",\"dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1be66618a68c62dfb767443bccba219ea240ebac287a7a23a32af4d2cbe2d9b9\",\"dweb:/ipfs/QmegRfPREH1UTq56ucSgGByYZqepGoRjKc51Jd3guvqpBJ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c\",\"dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0xeb8d6be406a373771724922eb41b5d593bc8e2dc705daa22cd1145cfc8f5a3a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dcf8f1b2f1869895bffaa1d83ea0e3ab5b42275c97248eda76441e64b343b66\",\"dweb:/ipfs/QmRqs6vX3dnVkRtdXmrxP7a677eaNnTUjY48DT96q6dMcZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c\",\"dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/structs/DoubleEndedQueueUpgradeable.sol\":{\"keccak256\":\"0xb16c656232224dd93cc310e7f4e14061e32a1a019633d7c0111d3f2e208f252c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e0e2c0b633b982dcb30f643446c172f65768092ac5ff3e6d8cc4965eadfa646\",\"dweb:/ipfs/Qmeo885GcTfRAtfQMSNQnybia1eFLEjWZrFyX1vF2pffYZ\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed\",\"dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]}},\"version\":1}", - "bytecode": "0x6102206040523480156200001257600080fd5b50604051620060a3380380620060a3833981016040819052620000359162000439565b6001608052600060a081905260c0526001600160a01b03808c1660e0528a8116610100526101208990526101408890526101608790526101808a90526101a08690526101c08590528281166101e0528116610200526200009583620000a6565b505050505050505050505062000592565b600054610100900460ff1615808015620000c75750600054600160ff909116105b80620000f75750620000e430620001da60201b62002a6f1760201c565b158015620000f7575060005460ff166001145b620001605760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000184576000805461ff0019166101001790555b6200018f82620001e9565b8015620001d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b60028151620001f9919062000507565b156200026e5760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d626572000000000000606482015260840162000157565b600160005b8251811015620002f3578281815181106200029257620002926200052a565b602002602001015160016000838152602001908152602001600020819055506001838281518110620002c857620002c86200052a565b6020026020010151620002dc919062000556565b620002e8908362000570565b915060010162000273565b50610180518114620001d65760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201526274687360e81b606482015260840162000157565b6001600160a01b03811681146200036a57600080fd5b50565b80516200037a8162000354565b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620003a757600080fd5b815160206001600160401b0380831115620003c657620003c66200037f565b8260051b604051601f19603f83011681018181108482111715620003ee57620003ee6200037f565b6040529384528581018301938381019250878511156200040d57600080fd5b83870191505b848210156200042e5781518352918301919083019062000413565b979650505050505050565b60008060008060008060008060008060006101608c8e0312156200045c57600080fd5b8b51620004698162000354565b60208d0151909b506200047c8162000354565b809a505060408c0151985060608c0151975060808c0151965060a08c0151955060c08c0151945060e08c015193506101008c015160018060401b03811115620004c457600080fd5b620004d28e828f0162000395565b935050620004e46101208d016200036d565b9150620004f56101408d016200036d565b90509295989b509295989b9093969950565b6000826200052557634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156200056b576200056b62000540565b500390565b60008160001904831182151516156200058d576200058d62000540565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161596a62000739600039600081816103a101526139190152600081816102f6015281816107de0152818161130d01528181611c280152611f5501526000818161036501528181613a370152613aa50152600081816104e90152613a7101526000818161049b0152818161294c0152818161298501526130f10152600081816104c201528181612adf0152613d0601526000818161031d0152613d6d015260008181610414015281816106e7015261246101526000818161043b01526110620152600081816101b7015281816106770152818161091601528181610a7a01528181610ccc0152818161119d015281816114a1015281816114ff015281816117ad01528181611cec01528181611e2a01528181611f7d01528181612148015281816123e9015281816126c80152818161280f01528181612c6001528181612d0a01528181612d8101528181612e5b015281816131c00152613408015260006107890152600061076001526000610737015261596a6000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c8063887c560f116100ee578063cfb4474d11610097578063e39a219c11610071578063e39a219c1461050b578063e58932b31461051e578063e9371a2c1461053e578063fc9d84df1461055e57600080fd5b8063cfb4474d14610496578063d2ee3075146104bd578063d5145ebc146104e457600080fd5b8063a41483e3116100c8578063a41483e31461045d578063a6ade11f14610470578063b8b1a27c1461048357600080fd5b8063887c560f146103fc5780638f3a6c881461040f5780639ded39521461043657600080fd5b8063461569b81161015b5780635865b607116101355780635865b6071461039c57806362fc00db146103c35780636fe0e559146103d657806379c2575a146103e957600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102196102043660046148da565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c610237366004614908565b610571565b005b6102aa61024c366004614908565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ed565b61021961035b3660046148da565b61063b565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61038f610730565b6040516101ed9190614990565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c6103d13660046149a3565b6107d3565b61023c6103e4366004614ac7565b610b21565b61023c6103f7366004614ba9565b610c9b565b61021961040a366004614908565b61160a565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c61046b3660046148da565b61163f565b61023c61047e366004614c5a565b61177c565b61033f610491366004614cc4565b611ba0565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6105193660046148da565b611c1d565b61053161052c366004614908565b611fdf565b6040516101ed9190614ce7565b61055161054c366004614908565b6120ec565b6040516101ed9190614dc6565b61023c61056c366004614e07565b612117565b60008281526002602090815260408083206001600160a01b038516845290915281209061059d82612a7e565b905060038160058111156105b3576105b3614d97565b1461062b5760405162461bcd60e51b815260206004820152603c60248201527f436f6c6f737365756d3a2063616e206f6e6c792062652063616c6c656420696660448201527f20746865206368616c6c656e67657220697320696e2074696d6f75740000000060648201526084015b60405180910390fd5b6106358484612b5b565b50505050565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e29190614e6b565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166107279190614f12565b10159392505050565b606061075b7f0000000000000000000000000000000000000000000000000000000000000000612f54565b6107847f0000000000000000000000000000000000000000000000000000000000000000612f54565b6107ad7f0000000000000000000000000000000000000000000000000000000000000000612f54565b6040516020016107bf93929190614f2a565b604051602081830303815290604052905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108715760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610622565b816108e45760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a2063616e6e6f7420726f6c6c6261636b206f7574707560448201527f7420746f207a65726f20686173680000000000000000000000000000000000006064820152608401610622565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190614e6b565b6020015114610a005760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a206f6e6c792063616e20726f6c6c6261636b2069662060448201527f746865206f757470757420686173206265656e2064656c6574656400000000006064820152608401610622565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fe664672300000000000000000000000000000000000000000000000000000000815260048101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610abe57600080fd5b505af1158015610ad2573d6000803e3d6000fd5b50505050836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610b1291815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610b415750600054600160ff909116105b80610b5b5750303b158015610b5b575060005460ff166001145b610bcd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610622565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610c2b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610c3482612ff4565b8015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810188905287907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190614fa0565b15610dd85760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b6000888152600260209081526040808320338452909152812090610dfb82612a7e565b6001830154909150610e18908b906001600160a01b031683613184565b15610e24575050611600565b6005816005811115610e3857610e38614d97565b1480610e5557506004816005811115610e5357610e53614d97565b145b610ec75760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a20696d706f737369626c6520746f2070726f7665207460448201527f6865206661756c7420696e2063757272656e74207374617475730000000000006064820152608401610622565b6000610ee0610edb368b90038b018b614fc2565b613515565b90506000610ef9610edb368c90038c0160a08d01614fc2565b9050610f0c8b8584848e60a081016135ea565b610f358a60a08101610f22610140830183615032565b610f306101608f018f615070565b6137a6565b610f67610f466101c08c018c6150a4565b8c61018001358d6101a001358e60a001604001358f60a001602001356138c1565b6000610f8460208c0135610f7f6101408e018e615032565b613a31565b60008181526003602052604090205490915060ff16156110325760405162461bcd60e51b815260206004820152604c60248201527f436f6c6f737365756d3a207075626c696320696e70757420746861742068617360448201527f20616c7265616479206265656e2076616c6964617465642063616e6e6f74206260648201527f65207573656420616761696e0000000000000000000000000000000000000000608482015260a401610622565b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634292dc3e9061109f908d908d908d908d90889060040161515b565b602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190614fa0565b61112c5760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a20696e76616c69642070726f6f6600000000000000006044820152606401610622565b60405142815233908e907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018e90526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190614e6b565b905060006362fc00db60e01b8f338960000160099054906101000a90046001600160a01b03168560200151876040516024016112729594939291909485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926113449291908690600401615195565b600060405180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b50505050505060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008e81526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b03021916905560028201600061144e919061485c565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018f905260248201523360448201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b1580156114e557600080fd5b505af11580156114f9573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157f91906151cf565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018f90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b1580156115e257600080fd5b505af11580156115f6573d6000803e3d6000fd5b5050505050505050505b5050505050505050565b60008281526002602090815260408083206001600160a01b0385168452909152812061163581613ae4565b9150505b92915050565b600081815260026020908152604080832033845290915281209061166282612a7e565b9050600081600581111561167857611678614d97565b036116eb5760405162461bcd60e51b815260206004820152602760248201527f436f6c6f737365756d3a20746865206368616c6c656e676520646f6573206e6f60448201527f74206578697374000000000000000000000000000000000000000000000000006064820152608401610622565b60018201546117059084906001600160a01b031683613184565b6117775760405162461bcd60e51b815260206004820152602860248201527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c65640000000000000000000000000000000000000000000000006064820152608401610622565b505050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190614fa0565b156118b95760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b60008681526002602090815260408083206001600160a01b03891684529091528120906118e582612a7e565b60018301549091506119029089906001600160a01b031683613184565b1561190e575050611b98565b6000600182600581111561192457611924614d97565b0361193d575060018201546001600160a01b0316611970565b600282600581111561195157611951614d97565b0361197057508154690100000000000000000090046001600160a01b03165b336001600160a01b038216146119c85760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a206e6f7420796f7572207475726e00000000000000006044820152606401610622565b82546000906119db9060ff1660016151ec565b9050611a6681856002018a815481106119f6576119f6615211565b9060005260206000200154866002018b6001611a129190614f12565b81548110611a2257611a22615211565b90600052602060002001548a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613af892505050565b6000611a7185613c9e565b90506000611a7f828b615240565b8660040154611a8e9190614f12565b9050611ad1868a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250879150613cca9050565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416178655611b0586613cf4565b6040805160ff851681524260208201526001600160a01b038d16918e917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611b5686613ae4565b611b91576040516001600160a01b038c16908d907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b5050505050505b505050505050565b6000600160ff83161015611bf65760405162461bcd60e51b815260206004820152601760248201527f436f6c6f737365756d3a20696e76616c6964207475726e0000000000000000006044820152606401610622565b60016000611c04828561525f565b60ff168152602001908152602001600020549050919050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611cbb5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610622565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810182905281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5f9190614fa0565b15611df85760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9d9190614e6b565b6020810151909150611f175760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a20746865206f75747075742068617320616c7265616460448201527f79206265656e2064656c657465640000000000000000000000000000000000006064820152608401610622565b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e6646723906064015b600060405180830381600087803b158015611fc257600080fd5b505af1158015611fd6573d6000803e3d6000fd5b50505050505050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c081019190915260008381526002602081815260408084206001600160a01b03808816865290835293819020815160e081018352815460ff8116825267ffffffffffffffff610100820416828601526901000000000000000000900486168184015260018201549095166060860152928301805482518185028101850190935280835260808601938301828280156120c757602002820191906000526020600020905b8154815260200190600101908083116120b3575b5050505050815260200160038201548152602001600482015481525050905092915050565b60008281526002602090815260408083206001600160a01b0385168452909152812061163581612a7e565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bb9190614fa0565b156122545760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b600086116122ca5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722067656e6573697360448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610622565b600086815260026020908152604080832033845290915290208054600160ff909116106123b75760006122fc82612a7e565b9050600381600581111561231257612312614d97565b146123ab5760405162461bcd60e51b815260206004820152604660248201527f436f6c6f737365756d3a20746865206368616c6c656e676520666f722067697660448201527f656e206f757470757420696e64657820697320616c726561647920696e20707260648201527f6f67726573730000000000000000000000000000000000000000000000000000608482015260a401610622565b6123b58833612b5b565b505b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190614e6b565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166124a19190614f12565b10156125155760405162461bcd60e51b815260206004820152603e60248201527f436f6c6f737365756d3a2063616e6e6f74206372656174652061206368616c6c60448201527f656e676520616674657220746865206372656174696f6e20706572696f6400006064820152608401610622565b602081015161258c5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722064656c6574656460448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610622565b80516001600160a01b0316330361260b5760405162461bcd60e51b815260206004820152603860248201527f436f6c6f737365756d3a2074686520617373657274657220616e64206368616c60448201527f6c656e676572206d75737420626520646966666572656e7400000000000000006064820152608401610622565b861580159061261a5750854015155b156126bc57868640146126bc5760405162461bcd60e51b8152602060048201526044602482018190527f436f6c6f737365756d3a20626c6f636b206861736820646f6573206e6f74206d908201527f617463682074686520686173682061742074686520657870656374656420686560648201527f6967687400000000000000000000000000000000000000000000000000000000608482015260a401610622565b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576126f860018c615282565b6040518263ffffffff1660e01b815260040161271691815260200190565b608060405180830381865afa158015612733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127579190614e6b565b60208101519091506127c5576127c060018787600081811061277b5761277b615211565b905060200201358460200151898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613af892505050565b61280d565b61280d600182602001518460200151898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613af892505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561286b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288f91906151cf565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018b90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b1580156128f257600080fd5b505af1158015612906573d6000803e3d6000fd5b505050506129a9838787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050606086015161298391507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff16615282565b7f0000000000000000000000000000000000000000000000000000000000000000613cca565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055612a2183613cf4565b815160405142815233916001600160a01b0316908b907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a4505050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612a9857506000919050565b8154600090612aa99060ff16613d95565b8354909150610100900467ffffffffffffffff16421115612b2f578015612ad35750600392915050565b8254612b1890612b13907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16614f12565b421190565b15612b265750600392915050565b50600492915050565b612b3883613ae4565b612b455750600592915050565b80612b51576002612b54565b60015b9392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612bdb9083018261485c565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612c2991815260200190565b60405180910390a36040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd39190614fa0565b15612e59576040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7d9190614e6b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0191906151cf565b81516040517f36b83469000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03858116602483015291821660448201529116906336b8346990606401611fa8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edb91906151cf565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401600060405180830381600087803b158015612f4057600080fd5b505af1158015611b98573d6000803e3d6000fd5b60606000612f6183613dac565b600101905060008167ffffffffffffffff811115612f8157612f816149f5565b6040519080825280601f01601f191660200182016040528015612fab576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084612fb557509392505050565b6002815161300291906152c8565b156130755760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d6265720000000000006064820152608401610622565b600160005b82518110156130ee5782818151811061309557613095615211565b6020026020010151600160008381526020019081526020016000208190555060018382815181106130c8576130c8615211565b60200260200101516130da9190615282565b6130e49083615240565b915060010161307a565b507f00000000000000000000000000000000000000000000000000000000000000008114610c975760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74687300000000000000000000000000000000000000000000000000000000006064820152608401610622565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa158015613207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322b9190614e6b565b6020015190508015613241576000915050612b54565b336001600160a01b038516146132bf5760405162461bcd60e51b815260206004820152602560248201527f436f6c6f737365756d3a2073656e646572206973206e6f742061206368616c6c60448201527f656e6765720000000000000000000000000000000000000000000000000000006064820152608401610622565b60038360058111156132d3576132d3614d97565b03613348576040805162461bcd60e51b81526020600482015260248101919091527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c6564206966206368616c6c656e6765722074696d6564206f75746064820152608401610622565b6000858152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591906133bf9083018261485c565b50600060038201819055600490910155604051428152339086907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613464573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348891906151cf565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101879052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b1580156134f257600080fd5b505af1158015613506573d6000803e3d6000fd5b50600198975050505050505050565b80516000906135775781516020808401516040808601516060808801516080808a0151855180890199909952888601969096529187019290925285015260a0808501929092528051808503909201825260c09093019092528151910120611639565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e000000000000000000000000000000000000000000006064820152608401610622565b919050565b8385600201878154811061360057613600615211565b90600052602060002001541461367e5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2074686520736f75726365207365676d656e74206d7560448201527f7374206265206d617463686564000000000000000000000000000000000000006064820152608401610622565b61368785613ae4565b61372957826002860161369b886001614f12565b815481106136ab576136ab615211565b9060005260206000200154036137295760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a207468652064657374696e6174696f6e207365676d6560448201527f6e74206d757374206e6f74206265206d617463686564000000000000000000006064820152608401610622565b8060600135826080013514611b985760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610622565b82602001358260e00135146138235760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520737461746520726f6f74206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610622565b600061383f6138318461535a565b61383a84615486565b613e8e565b9050808560800135146138ba5760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610622565b5050505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312e64a729061397e907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615627565b602060405180830381865afa15801561399b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139bf9190614fa0565b611fd65760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a20696e76616c6964204c32546f4c314d65737361676560448201527f50617373657220696e636c7573696f6e2070726f6f66000000000000000000006064820152608401610622565b600060607f0000000000000000000000000000000000000000000000000000000000000000613a646101208501856150a4565b90501015613ad157613ace7f0000000000000000000000000000000000000000000000000000000000000000613a9e6101208601866150a4565b613ac991507f0000000000000000000000000000000000000000000000000000000000000000615282565b613ee5565b90505b61163584613ade8561535a565b83613f71565b60006001613af183613c9e565b1192915050565b805180613b0486611ba0565b14613b775760405162461bcd60e51b815260206004820152602260248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74680000000000000000000000000000000000000000000000000000000000006064820152608401610622565b81600081518110613b8a57613b8a615211565b60200260200101518414613c065760405162461bcd60e51b815260206004820152602c60248201527f436f6c6f737365756d3a20746865206669727374207365676d656e74206d757360448201527f74206265206d61746368656400000000000000000000000000000000000000006064820152608401610622565b81613c12600183615282565b81518110613c2257613c22615211565b602002602001015183036138ba5760405162461bcd60e51b815260206004820152602f60248201527f436f6c6f737365756d3a20746865206c617374207365676d656e74206d75737460448201527f206e6f74206265206d61746368656400000000000000000000000000000000006064820152608401610622565b805460009060ff166001613cb182611ba0565b613cbb9190615282565b8360030154612b549190615702565b8251613cdf906002860190602086019061487a565b50600484019190915560039092019190915550565b613cfd81613ae4565b613d6857613d2b7f000000000000000000000000000000000000000000000000000000000000000042614f12565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613d2b7f000000000000000000000000000000000000000000000000000000000000000042614f12565b50565b6000613da2600283615716565b60ff161592915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613df5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613e21576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613e3f57662386f26fc10000830492506010015b6305f5e1008310613e57576305f5e100830492506008015b6127108310613e6b57612710830492506004015b60648310613e7d576064830492506002015b600a83106116395760010192915050565b6040805160108082526102208201909252600091829190816020015b6060815260200190600190039081613eaa579050509050613ecc848483613fe5565b613ed5816142ac565b8051906020012091505092915050565b606060008267ffffffffffffffff811115613f0257613f026149f5565b604051908082528060200260200182016040528015613f2b578160200160208202803683370190505b50905060005b83811015613f695784828281518110613f4c57613f4c615211565b602090810291909101015280613f6181615738565b915050613f31565b509392505050565b6000838360e0015184610100015185600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001613fc69c9b9a99989796959493929190615785565b6040516020818303038152906040528051906020012090509392505050565b6140138360200151604051602001613fff91815260200190565b6040516020818303038152906040526142f0565b8160008151811061402657614026615211565b602002602001018190525081600001518160018151811061404957614049615211565b602002602001018190525081602001518160028151811061406c5761406c615211565b60200260200101819052506140918360e00151604051602001613fff91815260200190565b816003815181106140a4576140a4615211565b60200260200101819052506140c98360c00151604051602001613fff91815260200190565b816004815181106140dc576140dc615211565b60200260200101819052508160400151816005815181106140ff576140ff615211565b602002602001018190525081606001518160068151811061412257614122615211565b602002602001018190525081608001518160078151811061414557614145615211565b6020026020010181905250614167836060015167ffffffffffffffff1661435f565b8160088151811061417a5761417a615211565b602002602001018190525061419c836080015167ffffffffffffffff1661435f565b816009815181106141af576141af615211565b60200260200101819052508160a0015181600a815181106141d2576141d2615211565b60200260200101819052506141f4836040015167ffffffffffffffff1661435f565b81600b8151811061420757614207615211565b60200260200101819052508160c0015181600c8151811061422a5761422a615211565b60200260200101819052508160e0015181600d8151811061424d5761424d615211565b602002602001018190525081610100015181600e8151811061427157614271615211565b60200260200101819052506142898360a0015161435f565b81600f8151811061429c5761429c615211565b6020026020010181905250505050565b606060006142b983614372565b90506142c7815160c06144aa565b816040516020016142d992919061583e565b604051602081830303815290604052915050919050565b6060808251600114801561431e575060808360008151811061431457614314615211565b016020015160f81c105b1561432a575081611639565b614336835160806144aa565b8360405160200161434892919061583e565b604051602081830303815290604052905092915050565b606061163961436d836146a0565b6142f0565b6060815160000361439157505060408051600081526020810190915290565b6000805b83518110156143d8578381815181106143b0576143b0615211565b602002602001015151826143c49190614f12565b9150806143d081615738565b915050614395565b60008267ffffffffffffffff8111156143f3576143f36149f5565b6040519080825280601f01601f19166020018201604052801561441d576020820181803683370190505b50600092509050602081015b85518310156144a157600086848151811061444657614446615211565b602002602001015190506000602082019050614464838284516147ff565b87858151811061447657614476615211565b6020026020010151518361448a9190614f12565b92505050828061449990615738565b935050614429565b50949350505050565b606080603884101561452957604080516001808252818301909252906020820181803683370190505090506144df83856151ec565b60f81b816000815181106144f5576144f5615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612b54565b600060015b6145388187615702565b1561455e578161454781615738565b9250614557905061010082615240565b905061452e565b614569826001614f12565b67ffffffffffffffff811115614581576145816149f5565b6040519080825280601f01601f1916602001820160405280156145ab576020820181803683370190505b5092506145b885836151ec565b6145c39060376151ec565b60f81b836000815181106145d9576145d9615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111614697576101006146218284615282565b61462d90610100615951565b6146379088615702565b61464191906152c8565b60f81b83828151811061465657614656615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061468f81615738565b91505061460d565b50509392505050565b60606000826040516020016146b791815260200190565b604051602081830303815290604052905060005b6020811015614726578181815181106146e6576146e6615211565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003614726578061471e81615738565b9150506146cb565b6000614733826020615282565b67ffffffffffffffff81111561474b5761474b6149f5565b6040519080825280601f01601f191660200182016040528015614775576020820181803683370190505b50905060005b81518110156144a157838361478f81615738565b9450815181106147a1576147a1615211565b602001015160f81c60f81b8282815181106147be576147be615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806147f781615738565b91505061477b565b8282825b6020811061483b578151835261481a602084614f12565b9250614827602083614f12565b9150614834602082615282565b9050614803565b905182516020929092036101000a6000190180199091169116179052505050565b5080546000825590600052602060002090810190613d9291906148c5565b8280548282559060005260206000209081019282156148b5579160200282015b828111156148b557825182559160200191906001019061489a565b506148c19291506148c5565b5090565b5b808211156148c157600081556001016148c6565b6000602082840312156148ec57600080fd5b5035919050565b6001600160a01b0381168114613d9257600080fd5b6000806040838503121561491b57600080fd5b82359150602083013561492d816148f3565b809150509250929050565b60005b8381101561495357818101518382015260200161493b565b838111156106355750506000910152565b6000815180845261497c816020860160208601614938565b601f01601f19169290920160200192915050565b602081526000612b546020830184614964565b600080600080600060a086880312156149bb57600080fd5b8535945060208601356149cd816148f3565b935060408601356149dd816148f3565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715614a4857614a486149f5565b60405290565b604051610120810167ffffffffffffffff81118282101715614a4857614a486149f5565b604051601f8201601f1916810167ffffffffffffffff81118282101715614a9b57614a9b6149f5565b604052919050565b600067ffffffffffffffff821115614abd57614abd6149f5565b5060051b60200190565b60006020808385031215614ada57600080fd5b823567ffffffffffffffff811115614af157600080fd5b8301601f81018513614b0257600080fd5b8035614b15614b1082614aa3565b614a72565b81815260059190911b82018301908381019087831115614b3457600080fd5b928401925b82841015614b5257833582529284019290840190614b39565b979650505050505050565b60008083601f840112614b6f57600080fd5b50813567ffffffffffffffff811115614b8757600080fd5b6020830191508360208260051b8501011115614ba257600080fd5b9250929050565b600080600080600080600060a0888a031215614bc457600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115614bea57600080fd5b908901906101e0828c031215614bff57600080fd5b90955060608901359080821115614c1557600080fd5b614c218b838c01614b5d565b909650945060808a0135915080821115614c3a57600080fd5b50614c478a828b01614b5d565b989b979a50959850939692959293505050565b600080600080600060808688031215614c7257600080fd5b853594506020860135614c84816148f3565b935060408601359250606086013567ffffffffffffffff811115614ca757600080fd5b614cb388828901614b5d565b969995985093965092949392505050565b600060208284031215614cd657600080fd5b813560ff81168114612b5457600080fd5b60006020808352610100830160ff8551168285015267ffffffffffffffff8286015116604085015260408501516001600160a01b0380821660608701528060608801511660808701525050608085015160e060a0860152818151808452610120870191508483019350600092505b80831015614d755783518252928401926001929092019190840190614d55565b5060a087015160c087015260c087015160e08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614e01577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600060808688031215614e1f57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614ca757600080fd5b80516fffffffffffffffffffffffffffffffff811681146135e557600080fd5b600060808284031215614e7d57600080fd5b6040516080810181811067ffffffffffffffff82111715614ea057614ea06149f5565b6040528251614eae816148f3565b815260208381015190820152614ec660408401614e4b565b6040820152614ed760608401614e4b565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614f2557614f25614ee3565b500190565b60008451614f3c818460208901614938565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551614f78816001850160208a01614938565b60019201918201528351614f93816002840160208801614938565b0160020195945050505050565b600060208284031215614fb257600080fd5b81518015158114612b5457600080fd5b600060a08284031215614fd457600080fd5b60405160a0810181811067ffffffffffffffff82111715614ff757614ff76149f5565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261506657600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261506657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150d957600080fd5b83018035915067ffffffffffffffff8211156150f457600080fd5b6020019150600581901b3603821315614ba257600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561513e57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60608152600061516f60608301878961510c565b828103602084015261518281868861510c565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006151c66060830184614964565b95945050505050565b6000602082840312156151e157600080fd5b8151612b54816148f3565b600060ff821660ff84168060ff0382111561520957615209614ee3565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081600019048311821515161561525a5761525a614ee3565b500290565b600060ff821660ff84168082101561527957615279614ee3565b90039392505050565b60008282101561529457615294614ee3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826152d7576152d7615299565b500690565b803567ffffffffffffffff811681146135e557600080fd5b600082601f83011261530557600080fd5b81356020615315614b1083614aa3565b82815260059290921b8401810191818101908684111561533457600080fd5b8286015b8481101561534f5780358352918301918301615338565b509695505050505050565b6000610140823603121561536d57600080fd5b615375614a24565b823581526020830135602082015261538f604084016152dc565b60408201526153a0606084016152dc565b60608201526153b1608084016152dc565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff8111156153fc57600080fd5b615408368287016152f4565b918301919091525092915050565b600082601f83011261542757600080fd5b813567ffffffffffffffff811115615441576154416149f5565b6154546020601f19601f84011601614a72565b81815284602083860101111561546957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120823603121561549957600080fd5b6154a1614a4e565b823567ffffffffffffffff808211156154b957600080fd5b6154c536838701615416565b835260208501359150808211156154db57600080fd5b6154e736838701615416565b6020840152604085013591508082111561550057600080fd5b61550c36838701615416565b6040840152606085013591508082111561552557600080fd5b61553136838701615416565b6060840152608085013591508082111561554a57600080fd5b61555636838701615416565b608084015260a085013591508082111561556f57600080fd5b61557b36838701615416565b60a084015260c085013591508082111561559457600080fd5b6155a036838701615416565b60c084015260e08501359150808211156155b957600080fd5b6155c536838701615416565b60e0840152610100915081850135818111156155e057600080fd5b6155ec36828801615416565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b858152600060206080818401526156416080840188614964565b8381036040850152858152818101600587901b820183018860005b898110156156e957601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c360301811261569f57600080fd5b8b01868101903567ffffffffffffffff8111156156bb57600080fd5b8036038213156156ca57600080fd5b6156d58582846155fc565b95880195945050509085019060010161565c565b5050809450505050508260608301529695505050505050565b60008261571157615711615299565b500490565b600060ff83168061572957615729615299565b8060ff84160691505092915050565b6000600019820361574b5761574b614ee3565b5060010190565b60008151602080840160005b8381101561577a5781518752958201959082019060010161575e565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d883015261582c61582660da840186615752565b84615752565b9e9d5050505050505050505050505050565b60008351615850818460208801614938565b835190830190615864818360208801614938565b01949350505050565b600181815b808511156158a857816000190482111561588e5761588e614ee3565b8085161561589b57918102915b93841c9390800290615872565b509250929050565b6000826158bf57506001611639565b816158cc57506000611639565b81600181146158e257600281146158ec57615908565b6001915050611639565b60ff8411156158fd576158fd614ee3565b50506001821b611639565b5060208310610133831016604e8410600b841016171561592b575081810a611639565b615935838361586d565b806000190482111561594957615949614ee3565b029392505050565b6000612b5483836158b056fea164736f6c634300080f000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c8063887c560f116100ee578063cfb4474d11610097578063e39a219c11610071578063e39a219c1461050b578063e58932b31461051e578063e9371a2c1461053e578063fc9d84df1461055e57600080fd5b8063cfb4474d14610496578063d2ee3075146104bd578063d5145ebc146104e457600080fd5b8063a41483e3116100c8578063a41483e31461045d578063a6ade11f14610470578063b8b1a27c1461048357600080fd5b8063887c560f146103fc5780638f3a6c881461040f5780639ded39521461043657600080fd5b8063461569b81161015b5780635865b607116101355780635865b6071461039c57806362fc00db146103c35780636fe0e559146103d657806379c2575a146103e957600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102196102043660046148da565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c610237366004614908565b610571565b005b6102aa61024c366004614908565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ed565b61021961035b3660046148da565b61063b565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61038f610730565b6040516101ed9190614990565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c6103d13660046149a3565b6107d3565b61023c6103e4366004614ac7565b610b21565b61023c6103f7366004614ba9565b610c9b565b61021961040a366004614908565b61160a565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c61046b3660046148da565b61163f565b61023c61047e366004614c5a565b61177c565b61033f610491366004614cc4565b611ba0565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6105193660046148da565b611c1d565b61053161052c366004614908565b611fdf565b6040516101ed9190614ce7565b61055161054c366004614908565b6120ec565b6040516101ed9190614dc6565b61023c61056c366004614e07565b612117565b60008281526002602090815260408083206001600160a01b038516845290915281209061059d82612a7e565b905060038160058111156105b3576105b3614d97565b1461062b5760405162461bcd60e51b815260206004820152603c60248201527f436f6c6f737365756d3a2063616e206f6e6c792062652063616c6c656420696660448201527f20746865206368616c6c656e67657220697320696e2074696d6f75740000000060648201526084015b60405180910390fd5b6106358484612b5b565b50505050565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e29190614e6b565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166107279190614f12565b10159392505050565b606061075b7f0000000000000000000000000000000000000000000000000000000000000000612f54565b6107847f0000000000000000000000000000000000000000000000000000000000000000612f54565b6107ad7f0000000000000000000000000000000000000000000000000000000000000000612f54565b6040516020016107bf93929190614f2a565b604051602081830303815290604052905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108715760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610622565b816108e45760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a2063616e6e6f7420726f6c6c6261636b206f7574707560448201527f7420746f207a65726f20686173680000000000000000000000000000000000006064820152608401610622565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190614e6b565b6020015114610a005760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a206f6e6c792063616e20726f6c6c6261636b2069662060448201527f746865206f757470757420686173206265656e2064656c6574656400000000006064820152608401610622565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fe664672300000000000000000000000000000000000000000000000000000000815260048101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610abe57600080fd5b505af1158015610ad2573d6000803e3d6000fd5b50505050836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610b1291815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610b415750600054600160ff909116105b80610b5b5750303b158015610b5b575060005460ff166001145b610bcd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610622565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610c2b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610c3482612ff4565b8015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810188905287907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190614fa0565b15610dd85760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b6000888152600260209081526040808320338452909152812090610dfb82612a7e565b6001830154909150610e18908b906001600160a01b031683613184565b15610e24575050611600565b6005816005811115610e3857610e38614d97565b1480610e5557506004816005811115610e5357610e53614d97565b145b610ec75760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a20696d706f737369626c6520746f2070726f7665207460448201527f6865206661756c7420696e2063757272656e74207374617475730000000000006064820152608401610622565b6000610ee0610edb368b90038b018b614fc2565b613515565b90506000610ef9610edb368c90038c0160a08d01614fc2565b9050610f0c8b8584848e60a081016135ea565b610f358a60a08101610f22610140830183615032565b610f306101608f018f615070565b6137a6565b610f67610f466101c08c018c6150a4565b8c61018001358d6101a001358e60a001604001358f60a001602001356138c1565b6000610f8460208c0135610f7f6101408e018e615032565b613a31565b60008181526003602052604090205490915060ff16156110325760405162461bcd60e51b815260206004820152604c60248201527f436f6c6f737365756d3a207075626c696320696e70757420746861742068617360448201527f20616c7265616479206265656e2076616c6964617465642063616e6e6f74206260648201527f65207573656420616761696e0000000000000000000000000000000000000000608482015260a401610622565b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634292dc3e9061109f908d908d908d908d90889060040161515b565b602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190614fa0565b61112c5760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a20696e76616c69642070726f6f6600000000000000006044820152606401610622565b60405142815233908e907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018e90526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190614e6b565b905060006362fc00db60e01b8f338960000160099054906101000a90046001600160a01b03168560200151876040516024016112729594939291909485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926113449291908690600401615195565b600060405180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b50505050505060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008e81526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b03021916905560028201600061144e919061485c565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018f905260248201523360448201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b1580156114e557600080fd5b505af11580156114f9573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157f91906151cf565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018f90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b1580156115e257600080fd5b505af11580156115f6573d6000803e3d6000fd5b5050505050505050505b5050505050505050565b60008281526002602090815260408083206001600160a01b0385168452909152812061163581613ae4565b9150505b92915050565b600081815260026020908152604080832033845290915281209061166282612a7e565b9050600081600581111561167857611678614d97565b036116eb5760405162461bcd60e51b815260206004820152602760248201527f436f6c6f737365756d3a20746865206368616c6c656e676520646f6573206e6f60448201527f74206578697374000000000000000000000000000000000000000000000000006064820152608401610622565b60018201546117059084906001600160a01b031683613184565b6117775760405162461bcd60e51b815260206004820152602860248201527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c65640000000000000000000000000000000000000000000000006064820152608401610622565b505050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190614fa0565b156118b95760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b60008681526002602090815260408083206001600160a01b03891684529091528120906118e582612a7e565b60018301549091506119029089906001600160a01b031683613184565b1561190e575050611b98565b6000600182600581111561192457611924614d97565b0361193d575060018201546001600160a01b0316611970565b600282600581111561195157611951614d97565b0361197057508154690100000000000000000090046001600160a01b03165b336001600160a01b038216146119c85760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a206e6f7420796f7572207475726e00000000000000006044820152606401610622565b82546000906119db9060ff1660016151ec565b9050611a6681856002018a815481106119f6576119f6615211565b9060005260206000200154866002018b6001611a129190614f12565b81548110611a2257611a22615211565b90600052602060002001548a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613af892505050565b6000611a7185613c9e565b90506000611a7f828b615240565b8660040154611a8e9190614f12565b9050611ad1868a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250879150613cca9050565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416178655611b0586613cf4565b6040805160ff851681524260208201526001600160a01b038d16918e917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611b5686613ae4565b611b91576040516001600160a01b038c16908d907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b5050505050505b505050505050565b6000600160ff83161015611bf65760405162461bcd60e51b815260206004820152601760248201527f436f6c6f737365756d3a20696e76616c6964207475726e0000000000000000006044820152606401610622565b60016000611c04828561525f565b60ff168152602001908152602001600020549050919050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611cbb5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610622565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810182905281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5f9190614fa0565b15611df85760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9d9190614e6b565b6020810151909150611f175760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a20746865206f75747075742068617320616c7265616460448201527f79206265656e2064656c657465640000000000000000000000000000000000006064820152608401610622565b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e6646723906064015b600060405180830381600087803b158015611fc257600080fd5b505af1158015611fd6573d6000803e3d6000fd5b50505050505050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c081019190915260008381526002602081815260408084206001600160a01b03808816865290835293819020815160e081018352815460ff8116825267ffffffffffffffff610100820416828601526901000000000000000000900486168184015260018201549095166060860152928301805482518185028101850190935280835260808601938301828280156120c757602002820191906000526020600020905b8154815260200190600101908083116120b3575b5050505050815260200160038201548152602001600482015481525050905092915050565b60008281526002602090815260408083206001600160a01b0385168452909152812061163581612a7e565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bb9190614fa0565b156122545760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610622565b600086116122ca5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722067656e6573697360448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610622565b600086815260026020908152604080832033845290915290208054600160ff909116106123b75760006122fc82612a7e565b9050600381600581111561231257612312614d97565b146123ab5760405162461bcd60e51b815260206004820152604660248201527f436f6c6f737365756d3a20746865206368616c6c656e676520666f722067697660448201527f656e206f757470757420696e64657820697320616c726561647920696e20707260648201527f6f67726573730000000000000000000000000000000000000000000000000000608482015260a401610622565b6123b58833612b5b565b505b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190614e6b565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166124a19190614f12565b10156125155760405162461bcd60e51b815260206004820152603e60248201527f436f6c6f737365756d3a2063616e6e6f74206372656174652061206368616c6c60448201527f656e676520616674657220746865206372656174696f6e20706572696f6400006064820152608401610622565b602081015161258c5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722064656c6574656460448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610622565b80516001600160a01b0316330361260b5760405162461bcd60e51b815260206004820152603860248201527f436f6c6f737365756d3a2074686520617373657274657220616e64206368616c60448201527f6c656e676572206d75737420626520646966666572656e7400000000000000006064820152608401610622565b861580159061261a5750854015155b156126bc57868640146126bc5760405162461bcd60e51b8152602060048201526044602482018190527f436f6c6f737365756d3a20626c6f636b206861736820646f6573206e6f74206d908201527f617463682074686520686173682061742074686520657870656374656420686560648201527f6967687400000000000000000000000000000000000000000000000000000000608482015260a401610622565b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576126f860018c615282565b6040518263ffffffff1660e01b815260040161271691815260200190565b608060405180830381865afa158015612733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127579190614e6b565b60208101519091506127c5576127c060018787600081811061277b5761277b615211565b905060200201358460200151898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613af892505050565b61280d565b61280d600182602001518460200151898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613af892505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561286b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288f91906151cf565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018b90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b1580156128f257600080fd5b505af1158015612906573d6000803e3d6000fd5b505050506129a9838787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050606086015161298391507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff16615282565b7f0000000000000000000000000000000000000000000000000000000000000000613cca565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055612a2183613cf4565b815160405142815233916001600160a01b0316908b907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a4505050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612a9857506000919050565b8154600090612aa99060ff16613d95565b8354909150610100900467ffffffffffffffff16421115612b2f578015612ad35750600392915050565b8254612b1890612b13907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16614f12565b421190565b15612b265750600392915050565b50600492915050565b612b3883613ae4565b612b455750600592915050565b80612b51576002612b54565b60015b9392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612bdb9083018261485c565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612c2991815260200190565b60405180910390a36040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd39190614fa0565b15612e59576040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7d9190614e6b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0191906151cf565b81516040517f36b83469000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03858116602483015291821660448201529116906336b8346990606401611fa8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edb91906151cf565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401600060405180830381600087803b158015612f4057600080fd5b505af1158015611b98573d6000803e3d6000fd5b60606000612f6183613dac565b600101905060008167ffffffffffffffff811115612f8157612f816149f5565b6040519080825280601f01601f191660200182016040528015612fab576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084612fb557509392505050565b6002815161300291906152c8565b156130755760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d6265720000000000006064820152608401610622565b600160005b82518110156130ee5782818151811061309557613095615211565b6020026020010151600160008381526020019081526020016000208190555060018382815181106130c8576130c8615211565b60200260200101516130da9190615282565b6130e49083615240565b915060010161307a565b507f00000000000000000000000000000000000000000000000000000000000000008114610c975760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74687300000000000000000000000000000000000000000000000000000000006064820152608401610622565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa158015613207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322b9190614e6b565b6020015190508015613241576000915050612b54565b336001600160a01b038516146132bf5760405162461bcd60e51b815260206004820152602560248201527f436f6c6f737365756d3a2073656e646572206973206e6f742061206368616c6c60448201527f656e6765720000000000000000000000000000000000000000000000000000006064820152608401610622565b60038360058111156132d3576132d3614d97565b03613348576040805162461bcd60e51b81526020600482015260248101919091527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c6564206966206368616c6c656e6765722074696d6564206f75746064820152608401610622565b6000858152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591906133bf9083018261485c565b50600060038201819055600490910155604051428152339086907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613464573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348891906151cf565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101879052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b1580156134f257600080fd5b505af1158015613506573d6000803e3d6000fd5b50600198975050505050505050565b80516000906135775781516020808401516040808601516060808801516080808a0151855180890199909952888601969096529187019290925285015260a0808501929092528051808503909201825260c09093019092528151910120611639565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e000000000000000000000000000000000000000000006064820152608401610622565b919050565b8385600201878154811061360057613600615211565b90600052602060002001541461367e5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2074686520736f75726365207365676d656e74206d7560448201527f7374206265206d617463686564000000000000000000000000000000000000006064820152608401610622565b61368785613ae4565b61372957826002860161369b886001614f12565b815481106136ab576136ab615211565b9060005260206000200154036137295760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a207468652064657374696e6174696f6e207365676d6560448201527f6e74206d757374206e6f74206265206d617463686564000000000000000000006064820152608401610622565b8060600135826080013514611b985760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610622565b82602001358260e00135146138235760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520737461746520726f6f74206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610622565b600061383f6138318461535a565b61383a84615486565b613e8e565b9050808560800135146138ba5760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610622565b5050505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312e64a729061397e907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615627565b602060405180830381865afa15801561399b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139bf9190614fa0565b611fd65760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a20696e76616c6964204c32546f4c314d65737361676560448201527f50617373657220696e636c7573696f6e2070726f6f66000000000000000000006064820152608401610622565b600060607f0000000000000000000000000000000000000000000000000000000000000000613a646101208501856150a4565b90501015613ad157613ace7f0000000000000000000000000000000000000000000000000000000000000000613a9e6101208601866150a4565b613ac991507f0000000000000000000000000000000000000000000000000000000000000000615282565b613ee5565b90505b61163584613ade8561535a565b83613f71565b60006001613af183613c9e565b1192915050565b805180613b0486611ba0565b14613b775760405162461bcd60e51b815260206004820152602260248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74680000000000000000000000000000000000000000000000000000000000006064820152608401610622565b81600081518110613b8a57613b8a615211565b60200260200101518414613c065760405162461bcd60e51b815260206004820152602c60248201527f436f6c6f737365756d3a20746865206669727374207365676d656e74206d757360448201527f74206265206d61746368656400000000000000000000000000000000000000006064820152608401610622565b81613c12600183615282565b81518110613c2257613c22615211565b602002602001015183036138ba5760405162461bcd60e51b815260206004820152602f60248201527f436f6c6f737365756d3a20746865206c617374207365676d656e74206d75737460448201527f206e6f74206265206d61746368656400000000000000000000000000000000006064820152608401610622565b805460009060ff166001613cb182611ba0565b613cbb9190615282565b8360030154612b549190615702565b8251613cdf906002860190602086019061487a565b50600484019190915560039092019190915550565b613cfd81613ae4565b613d6857613d2b7f000000000000000000000000000000000000000000000000000000000000000042614f12565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613d2b7f000000000000000000000000000000000000000000000000000000000000000042614f12565b50565b6000613da2600283615716565b60ff161592915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613df5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613e21576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613e3f57662386f26fc10000830492506010015b6305f5e1008310613e57576305f5e100830492506008015b6127108310613e6b57612710830492506004015b60648310613e7d576064830492506002015b600a83106116395760010192915050565b6040805160108082526102208201909252600091829190816020015b6060815260200190600190039081613eaa579050509050613ecc848483613fe5565b613ed5816142ac565b8051906020012091505092915050565b606060008267ffffffffffffffff811115613f0257613f026149f5565b604051908082528060200260200182016040528015613f2b578160200160208202803683370190505b50905060005b83811015613f695784828281518110613f4c57613f4c615211565b602090810291909101015280613f6181615738565b915050613f31565b509392505050565b6000838360e0015184610100015185600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001613fc69c9b9a99989796959493929190615785565b6040516020818303038152906040528051906020012090509392505050565b6140138360200151604051602001613fff91815260200190565b6040516020818303038152906040526142f0565b8160008151811061402657614026615211565b602002602001018190525081600001518160018151811061404957614049615211565b602002602001018190525081602001518160028151811061406c5761406c615211565b60200260200101819052506140918360e00151604051602001613fff91815260200190565b816003815181106140a4576140a4615211565b60200260200101819052506140c98360c00151604051602001613fff91815260200190565b816004815181106140dc576140dc615211565b60200260200101819052508160400151816005815181106140ff576140ff615211565b602002602001018190525081606001518160068151811061412257614122615211565b602002602001018190525081608001518160078151811061414557614145615211565b6020026020010181905250614167836060015167ffffffffffffffff1661435f565b8160088151811061417a5761417a615211565b602002602001018190525061419c836080015167ffffffffffffffff1661435f565b816009815181106141af576141af615211565b60200260200101819052508160a0015181600a815181106141d2576141d2615211565b60200260200101819052506141f4836040015167ffffffffffffffff1661435f565b81600b8151811061420757614207615211565b60200260200101819052508160c0015181600c8151811061422a5761422a615211565b60200260200101819052508160e0015181600d8151811061424d5761424d615211565b602002602001018190525081610100015181600e8151811061427157614271615211565b60200260200101819052506142898360a0015161435f565b81600f8151811061429c5761429c615211565b6020026020010181905250505050565b606060006142b983614372565b90506142c7815160c06144aa565b816040516020016142d992919061583e565b604051602081830303815290604052915050919050565b6060808251600114801561431e575060808360008151811061431457614314615211565b016020015160f81c105b1561432a575081611639565b614336835160806144aa565b8360405160200161434892919061583e565b604051602081830303815290604052905092915050565b606061163961436d836146a0565b6142f0565b6060815160000361439157505060408051600081526020810190915290565b6000805b83518110156143d8578381815181106143b0576143b0615211565b602002602001015151826143c49190614f12565b9150806143d081615738565b915050614395565b60008267ffffffffffffffff8111156143f3576143f36149f5565b6040519080825280601f01601f19166020018201604052801561441d576020820181803683370190505b50600092509050602081015b85518310156144a157600086848151811061444657614446615211565b602002602001015190506000602082019050614464838284516147ff565b87858151811061447657614476615211565b6020026020010151518361448a9190614f12565b92505050828061449990615738565b935050614429565b50949350505050565b606080603884101561452957604080516001808252818301909252906020820181803683370190505090506144df83856151ec565b60f81b816000815181106144f5576144f5615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612b54565b600060015b6145388187615702565b1561455e578161454781615738565b9250614557905061010082615240565b905061452e565b614569826001614f12565b67ffffffffffffffff811115614581576145816149f5565b6040519080825280601f01601f1916602001820160405280156145ab576020820181803683370190505b5092506145b885836151ec565b6145c39060376151ec565b60f81b836000815181106145d9576145d9615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111614697576101006146218284615282565b61462d90610100615951565b6146379088615702565b61464191906152c8565b60f81b83828151811061465657614656615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061468f81615738565b91505061460d565b50509392505050565b60606000826040516020016146b791815260200190565b604051602081830303815290604052905060005b6020811015614726578181815181106146e6576146e6615211565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003614726578061471e81615738565b9150506146cb565b6000614733826020615282565b67ffffffffffffffff81111561474b5761474b6149f5565b6040519080825280601f01601f191660200182016040528015614775576020820181803683370190505b50905060005b81518110156144a157838361478f81615738565b9450815181106147a1576147a1615211565b602001015160f81c60f81b8282815181106147be576147be615211565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806147f781615738565b91505061477b565b8282825b6020811061483b578151835261481a602084614f12565b9250614827602083614f12565b9150614834602082615282565b9050614803565b905182516020929092036101000a6000190180199091169116179052505050565b5080546000825590600052602060002090810190613d9291906148c5565b8280548282559060005260206000209081019282156148b5579160200282015b828111156148b557825182559160200191906001019061489a565b506148c19291506148c5565b5090565b5b808211156148c157600081556001016148c6565b6000602082840312156148ec57600080fd5b5035919050565b6001600160a01b0381168114613d9257600080fd5b6000806040838503121561491b57600080fd5b82359150602083013561492d816148f3565b809150509250929050565b60005b8381101561495357818101518382015260200161493b565b838111156106355750506000910152565b6000815180845261497c816020860160208601614938565b601f01601f19169290920160200192915050565b602081526000612b546020830184614964565b600080600080600060a086880312156149bb57600080fd5b8535945060208601356149cd816148f3565b935060408601356149dd816148f3565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715614a4857614a486149f5565b60405290565b604051610120810167ffffffffffffffff81118282101715614a4857614a486149f5565b604051601f8201601f1916810167ffffffffffffffff81118282101715614a9b57614a9b6149f5565b604052919050565b600067ffffffffffffffff821115614abd57614abd6149f5565b5060051b60200190565b60006020808385031215614ada57600080fd5b823567ffffffffffffffff811115614af157600080fd5b8301601f81018513614b0257600080fd5b8035614b15614b1082614aa3565b614a72565b81815260059190911b82018301908381019087831115614b3457600080fd5b928401925b82841015614b5257833582529284019290840190614b39565b979650505050505050565b60008083601f840112614b6f57600080fd5b50813567ffffffffffffffff811115614b8757600080fd5b6020830191508360208260051b8501011115614ba257600080fd5b9250929050565b600080600080600080600060a0888a031215614bc457600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115614bea57600080fd5b908901906101e0828c031215614bff57600080fd5b90955060608901359080821115614c1557600080fd5b614c218b838c01614b5d565b909650945060808a0135915080821115614c3a57600080fd5b50614c478a828b01614b5d565b989b979a50959850939692959293505050565b600080600080600060808688031215614c7257600080fd5b853594506020860135614c84816148f3565b935060408601359250606086013567ffffffffffffffff811115614ca757600080fd5b614cb388828901614b5d565b969995985093965092949392505050565b600060208284031215614cd657600080fd5b813560ff81168114612b5457600080fd5b60006020808352610100830160ff8551168285015267ffffffffffffffff8286015116604085015260408501516001600160a01b0380821660608701528060608801511660808701525050608085015160e060a0860152818151808452610120870191508483019350600092505b80831015614d755783518252928401926001929092019190840190614d55565b5060a087015160c087015260c087015160e08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614e01577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600060808688031215614e1f57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614ca757600080fd5b80516fffffffffffffffffffffffffffffffff811681146135e557600080fd5b600060808284031215614e7d57600080fd5b6040516080810181811067ffffffffffffffff82111715614ea057614ea06149f5565b6040528251614eae816148f3565b815260208381015190820152614ec660408401614e4b565b6040820152614ed760608401614e4b565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614f2557614f25614ee3565b500190565b60008451614f3c818460208901614938565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551614f78816001850160208a01614938565b60019201918201528351614f93816002840160208801614938565b0160020195945050505050565b600060208284031215614fb257600080fd5b81518015158114612b5457600080fd5b600060a08284031215614fd457600080fd5b60405160a0810181811067ffffffffffffffff82111715614ff757614ff76149f5565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261506657600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261506657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150d957600080fd5b83018035915067ffffffffffffffff8211156150f457600080fd5b6020019150600581901b3603821315614ba257600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561513e57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60608152600061516f60608301878961510c565b828103602084015261518281868861510c565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006151c66060830184614964565b95945050505050565b6000602082840312156151e157600080fd5b8151612b54816148f3565b600060ff821660ff84168060ff0382111561520957615209614ee3565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081600019048311821515161561525a5761525a614ee3565b500290565b600060ff821660ff84168082101561527957615279614ee3565b90039392505050565b60008282101561529457615294614ee3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826152d7576152d7615299565b500690565b803567ffffffffffffffff811681146135e557600080fd5b600082601f83011261530557600080fd5b81356020615315614b1083614aa3565b82815260059290921b8401810191818101908684111561533457600080fd5b8286015b8481101561534f5780358352918301918301615338565b509695505050505050565b6000610140823603121561536d57600080fd5b615375614a24565b823581526020830135602082015261538f604084016152dc565b60408201526153a0606084016152dc565b60608201526153b1608084016152dc565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff8111156153fc57600080fd5b615408368287016152f4565b918301919091525092915050565b600082601f83011261542757600080fd5b813567ffffffffffffffff811115615441576154416149f5565b6154546020601f19601f84011601614a72565b81815284602083860101111561546957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120823603121561549957600080fd5b6154a1614a4e565b823567ffffffffffffffff808211156154b957600080fd5b6154c536838701615416565b835260208501359150808211156154db57600080fd5b6154e736838701615416565b6020840152604085013591508082111561550057600080fd5b61550c36838701615416565b6040840152606085013591508082111561552557600080fd5b61553136838701615416565b6060840152608085013591508082111561554a57600080fd5b61555636838701615416565b608084015260a085013591508082111561556f57600080fd5b61557b36838701615416565b60a084015260c085013591508082111561559457600080fd5b6155a036838701615416565b60c084015260e08501359150808211156155b957600080fd5b6155c536838701615416565b60e0840152610100915081850135818111156155e057600080fd5b6155ec36828801615416565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b858152600060206080818401526156416080840188614964565b8381036040850152858152818101600587901b820183018860005b898110156156e957601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c360301811261569f57600080fd5b8b01868101903567ffffffffffffffff8111156156bb57600080fd5b8036038213156156ca57600080fd5b6156d58582846155fc565b95880195945050509085019060010161565c565b5050809450505050508260608301529695505050505050565b60008261571157615711615299565b500490565b600060ff83168061572957615729615299565b8060ff84160691505092915050565b6000600019820361574b5761574b614ee3565b5060010190565b60008151602080840160005b8381101561577a5781518752958201959082019060010161575e565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d883015261582c61582660da840186615752565b84615752565b9e9d5050505050505050505050505050565b60008351615850818460208801614938565b835190830190615864818360208801614938565b01949350505050565b600181815b808511156158a857816000190482111561588e5761588e614ee3565b8085161561589b57918102915b93841c9390800290615872565b509250929050565b6000826158bf57506001611639565b816158cc57506000611639565b81600181146158e257600281146158ec57615908565b6001915050611639565b60ff8411156158fd576158fd614ee3565b50506001821b611639565b5060208310610133831016604e8410600b841016171561592b575081810a611639565b615935838361586d565b806000190482111561594957615949614ee3565b029392505050565b6000612b5483836158b056fea164736f6c634300080f000a", + "numDeployments": 2, + "solcInputHash": "2bfb5c7b0997e32e15308fc369203bdc", + "metadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"contract ZKVerifier\",\"name\":\"_zkVerifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_submissionInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_creationPeriodSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bisectionTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provingTimeout\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_dummyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxTxs\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_securityCouncil\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zkMerkleTrie\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"turn\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Bisected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengeDismissed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ChallengerTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Proven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"}],\"name\":\"ReadyToProve\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BISECTION_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CREATION_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DUMMY_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE_SUBMISSION_INTERVAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TXS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROVING_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECURITY_COUNCIL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZK_MERKLE_TRIE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZK_VERIFIER\",\"outputs\":[{\"internalType\":\"contract ZKVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pos\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_segments\",\"type\":\"bytes32[]\"}],\"name\":\"bisect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"cancelChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"challengerTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"challenges\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"turn\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"timeoutAt\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"segSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segStart\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l1BlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_segments\",\"type\":\"bytes32[]\"}],\"name\":\"createChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asserter\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_publicInputHash\",\"type\":\"bytes32\"}],\"name\":\"dismissChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"forceDeleteOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"getChallenge\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"turn\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"timeoutAt\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"segments\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"segSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segStart\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Challenge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_turn\",\"type\":\"uint8\"}],\"name\":\"getSegmentsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"getStatus\",\"outputs\":[{\"internalType\":\"enum Colosseum.ChallengeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"isAbleToBisect\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"isInCreationPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_pos\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nextBlockHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.OutputRootProof\",\"name\":\"srcOutputRootProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nextBlockHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.OutputRootProof\",\"name\":\"dstOutputRootProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"number\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"baseFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"transactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"withdrawalsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"txHashes\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct Types.PublicInput\",\"name\":\"publicInput\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"uncleHash\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"coinbase\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"receiptsRoot\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"logsBloom\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"difficulty\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"gasUsed\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"mixHash\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"nonce\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.BlockHeaderRLP\",\"name\":\"rlps\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"l2ToL1MessagePasserBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l2ToL1MessagePasserCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"merkleProof\",\"type\":\"bytes[]\"}],\"internalType\":\"struct Types.PublicInputProof\",\"name\":\"_proof\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"_zkproof\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_pair\",\"type\":\"uint256[]\"}],\"name\":\"proveFault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"verifiedPublicInputs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Bisected(uint256,address,uint8,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when bisected.\",\"turn\":\"The current turn.\"}},\"ChallengeCanceled(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when canceled.\"}},\"ChallengeCreated(uint256,address,address,uint256)\":{\"params\":{\"asserter\":\"Address of the asserter.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when created.\"}},\"ChallengeDismissed(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when dismissed.\"}},\"ChallengerTimedOut(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when deleted.\"}},\"Proven(uint256,address,uint256)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"timestamp\":\"The timestamp when proven.\"}},\"ReadyToProve(uint256,address)\":{\"params\":{\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\"}}},\"kind\":\"dev\",\"methods\":{\"bisect(uint256,address,uint256,bytes32[])\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_pos\":\"Position of the last valid segment.\",\"_segments\":\"Array of the segment. A segment is the first output root of a specific range.\"}},\"cancelChallenge(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"challengerTimeout(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"constructor\":{\"params\":{\"_bisectionTimeout\":\"Timeout seconds for the bisection.\",\"_creationPeriodSeconds\":\"Seconds The period seconds for which challenges can be created per each output.\",\"_dummyHash\":\"Dummy hash.\",\"_l2Oracle\":\"Address of the L2OutputOracle contract.\",\"_maxTxs\":\"Number of max transactions per block.\",\"_provingTimeout\":\"Timeout seconds for the proving.\",\"_securityCouncil\":\"Address of security council.\",\"_segmentsLengths\":\"Lengths of segments.\",\"_submissionInterval\":\"Interval in blocks at which checkpoints must be submitted.\",\"_zkMerkleTrie\":\"Address of zk merkle trie.\",\"_zkVerifier\":\"Address of the ZKVerifier contract.\"}},\"createChallenge(uint256,bytes32,uint256,bytes32[])\":{\"params\":{\"_l1BlockHash\":\"The block hash of L1 at the time the output L2 block was created.\",\"_l1BlockNumber\":\"The block number of L1 with the specified L1 block hash.\",\"_outputIndex\":\"Index of the invalid L2 checkpoint output.\",\"_segments\":\"Array of the segment. A segment is the first output root of a specific range.\"}},\"dismissChallenge(uint256,address,address,bytes32,bytes32)\":{\"params\":{\"_asserter\":\"Address of the asserter.\",\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_outputRoot\":\"The L2 output root to rollback.\",\"_publicInputHash\":\"Hash of public input.\"}},\"forceDeleteOutput(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"getChallenge(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"The challenge data.\"}},\"getSegmentsLength(uint8)\":{\"params\":{\"_turn\":\"The challenge turn.\"},\"returns\":{\"_0\":\"The segments length.\"}},\"getStatus(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"The status of the challenge.\"}},\"isAbleToBisect(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"Whether bisection is possible.\"}},\"isInCreationPeriod(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"Whether current timestamp is in challenge creation period.\"}},\"proveFault(uint256,uint256,((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[]),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[])\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_pair\":\"Aggregated multi-opening proofs and public inputs. (Currently only 2 public inputs)\",\"_pos\":\"Position of the last valid segment.\",\"_proof\":\"Proof for public input validation.\",\"_zkproof\":\"Halo2 proofs composed of points and scalars. See https://zcash.github.io/halo2/design/implementation/proofs.html.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"1.0.0\"}},\"version\":1},\"userdoc\":{\"events\":{\"Bisected(uint256,address,uint8,uint256)\":{\"notice\":\"Emitted when segments are bisected.\"},\"ChallengeCanceled(uint256,address,uint256)\":{\"notice\":\"Emitted when challenge is canceled.\"},\"ChallengeCreated(uint256,address,address,uint256)\":{\"notice\":\"Emitted when the challenge is created.\"},\"ChallengeDismissed(uint256,address,uint256)\":{\"notice\":\"Emitted when challenge is dismissed.\"},\"ChallengerTimedOut(uint256,address,uint256)\":{\"notice\":\"Emitted when challenger timed out.\"},\"Proven(uint256,address,uint256)\":{\"notice\":\"Emitted when proven fault.\"},\"ReadyToProve(uint256,address)\":{\"notice\":\"Emitted when it is ready to be proved.\"}},\"kind\":\"user\",\"methods\":{\"BISECTION_TIMEOUT()\":{\"notice\":\"Timeout seconds for the bisection.\"},\"CREATION_PERIOD_SECONDS()\":{\"notice\":\"The period seconds for which challenges can be created per each output.\"},\"DUMMY_HASH()\":{\"notice\":\"The dummy transaction hash. This is used to pad if the number of transactions is less than MAX_TXS. This is same as: unsignedTx = { nonce: 0, gasLimit: 0, gasPrice: 0, to: address(0), value: 0, data: '0x', chainId: CHAIN_ID, } signature = sign(unsignedTx, 0x1) dummyHash = keccak256(rlp({ ...unsignedTx, signature, }))\"},\"L2_ORACLE()\":{\"notice\":\"Address of the L2OutputOracle.\"},\"L2_ORACLE_SUBMISSION_INTERVAL()\":{\"notice\":\"The interval in L2 blocks at which checkpoints must be submitted on L2OutputOracle contract.\"},\"MAX_TXS()\":{\"notice\":\"The maximum number of transactions\"},\"PROVING_TIMEOUT()\":{\"notice\":\"Timeout seconds for the proving.\"},\"SECURITY_COUNCIL()\":{\"notice\":\"Address that has the ability to approve the challenge.\"},\"ZK_MERKLE_TRIE()\":{\"notice\":\"Address that has the ability to verify the merkle proof.\"},\"ZK_VERIFIER()\":{\"notice\":\"Address of the ZKVerifier.\"},\"bisect(uint256,address,uint256,bytes32[])\":{\"notice\":\"Selects an invalid section and submit segments of that section.\"},\"cancelChallenge(uint256)\":{\"notice\":\"Cancels the challenge. Reverts if is not possible to cancel the sender's challenge for the given output index.\"},\"challengerTimeout(uint256,address)\":{\"notice\":\"Calls a private function that deletes the challenge because the challenger has timed out. Reverts if the challenger hasn't timed out.\"},\"challenges(uint256,address)\":{\"notice\":\"A mapping of the challenge.\"},\"constructor\":{\"notice\":\"Constructs the Colosseum contract.\"},\"createChallenge(uint256,bytes32,uint256,bytes32[])\":{\"notice\":\"Creates a challenge against an invalid output.\"},\"dismissChallenge(uint256,address,address,bytes32,bytes32)\":{\"notice\":\"Dismisses the challenge and rollback l2 output. This function can only be called by Security Council contract.\"},\"forceDeleteOutput(uint256)\":{\"notice\":\"Deletes the L2 output root forcefully by the Security Council when zk-proving is not possible due to an undeniable bug.\"},\"getChallenge(uint256,address)\":{\"notice\":\"Returns the challenge corresponding to the given L2 output index.\"},\"getSegmentsLength(uint8)\":{\"notice\":\"Returns the segment length required for that turn.\"},\"getStatus(uint256,address)\":{\"notice\":\"Returns the challenge status corresponding to the given L2 output index.\"},\"initialize(uint256[])\":{\"notice\":\"Initializer.\"},\"isAbleToBisect(uint256,address)\":{\"notice\":\"Determines whether bisection is possible in the challenge corresponding to the given L2 output index.\"},\"isInCreationPeriod(uint256)\":{\"notice\":\"Determines whether current timestamp is in challenge creation period corresponding to the given L2 output index.\"},\"proveFault(uint256,uint256,((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[]),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[])\":{\"notice\":\"Proves that a specific output is invalid using ZKP. This function can only be called in the READY_TO_PROVE and ASSERTER_TIMEOUT states.\"},\"verifiedPublicInputs(bytes32)\":{\"notice\":\"A mapping indicating whether a public input is verified or not.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L1/Colosseum.sol\":\"Colosseum\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":@rari-capital/solmate/=node_modules/@rari-capital/solmate/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/L1/Colosseum.sol\":{\"keccak256\":\"0x8df2af73ce3a8b0b1bcdf061566c9ae06a7aa9ce48f2737a2cfb0d56be96b3b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34a2c052e9010aac339c1e63d2cadc671bdca9e7a0bbb7fb66b4434d8d4d3939\",\"dweb:/ipfs/QmZZSVrv5Gt3vmfyr9FGBiob9TSDQken768zDMho9iFntR\"]},\"contracts/L1/IZKMerkleTrie.sol\":{\"keccak256\":\"0xc0db9a82935f3ae1e0137e8752be690244fdf939f6adc262b82a9daa76ef3c91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26b5651a98c1a679ba8c945ba595c94a9b8ed758a2e8bb2baaeb571967f0820f\",\"dweb:/ipfs/Qmc42qGNY69oMmSdT6CxCtYsjmHHUmBnnuqgZfh9QmYMAv\"]},\"contracts/L1/KromaPortal.sol\":{\"keccak256\":\"0x83129322b378176f0135b825b471363c214961990ab1b6ef9e0140f800ee2d4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ce79f809b7334293fae5b17cc8fea4ddd027d95ceb2010648ff19faa02ff2e6\",\"dweb:/ipfs/QmZUBW5E4dpuSCBDZRBAaU7UJLPhhz64oZBppFA9YBTXRE\"]},\"contracts/L1/L2OutputOracle.sol\":{\"keccak256\":\"0xd554f906cf8b9e009a783d57e1f800b166a73991bda164731d3972ad06a2eb59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4abb17261b44a0aa2304daf8fdc93b9d23e2a54b06f0de4d4e6bfa3d6b8ad2b2\",\"dweb:/ipfs/QmZUXgTSrcNfu23V7G3Zq4jVFHQUi762zw5GXnFDZFHDxY\"]},\"contracts/L1/ResourceMetering.sol\":{\"keccak256\":\"0xbc18cbf0e4fa8c9a17e04be6bf8e59bf5db5e71622f15fc15eb359db598abc59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29aa63d99de92760ebf0adfed473d2c6d6a52e4727e29f6fbfedd35c6c2e7100\",\"dweb:/ipfs/QmSVRRqcfhgbMvPztPdNvEhc7nakz5qBdKLddpXNvMRWjL\"]},\"contracts/L1/SecurityCouncil.sol\":{\"keccak256\":\"0x40beffcf5307b1732cc7b9fc340a18b0f7383c2772472f185114c37d522b692b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dee3f4d0756a8f12109a2061646e095a63bd0129c1e5df68603ef02660470b9\",\"dweb:/ipfs/QmP4peXCH5siwh3iYQDyXaKYVkyERNgUo2wJiFBHkrrRPw\"]},\"contracts/L1/SystemConfig.sol\":{\"keccak256\":\"0xbc8487f1e9b96364a01bad8c5eb0e0d89cfe258e7b895ea73202bc8accc987cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf50a6c5b2baa5057d6a620c8c8bf12b2319903435eb98a0933ea4a3b04b2bed\",\"dweb:/ipfs/QmTPSHVNEazbNC1apc2faqFELDzRFdfefYPNAuWtX4FrZj\"]},\"contracts/L1/ValidatorPool.sol\":{\"keccak256\":\"0x9e014d2da1c64d16b379d8c3e5d4977484536b954d960ab8b89f377b5b44da79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cda04cf05ea44da5c7e9e94aae905ea5a4c1fb391bcd18e789546225529b70ff\",\"dweb:/ipfs/QmbggkN6YFZAEaBpvoQgEdVtsy1uFM1jJPHSwr1MF5jJAF\"]},\"contracts/L1/ZKMerkleTrie.sol\":{\"keccak256\":\"0xdd53226500d7559f83c145e345d640fb3ebdc4790c1d19a0770966eb98b771b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d70f18e6a7eaf07923611903477922bd59415945bfffad062ac60792262c6b74\",\"dweb:/ipfs/QmUDxyM24Sx3zAZJaU7HqhiWdAYCW7QLaALGS6nv3xvCXE\"]},\"contracts/L1/ZKTrieHasher.sol\":{\"keccak256\":\"0x8376cd6c3222d753cc9df6b412e7d0eeb2704cc3a47c3d55886bb4eca18893a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3900f900582bcb5ff17d65887a38776412e27838b62ade1389d727f859cbaf0\",\"dweb:/ipfs/QmYL7V3Ta6cJiQTcziMYwdurcUKhwbqK7Az21H19Vs6W41\"]},\"contracts/L1/ZKVerifier.sol\":{\"keccak256\":\"0x3cef4679e35f7cc19cfa120cb36917a3491ca502dda646746e11968c9cdc3711\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1df0ef89c6c55613361975465fa216e35762456094b5432484c1d8fc214cc951\",\"dweb:/ipfs/QmWMEi9tJvh1BvMqT8Kqs6yfsSYnxr2J35rPvADANVu24A\"]},\"contracts/L2/L2StandardBridge.sol\":{\"keccak256\":\"0xe3ddda01f4ac1361aa47034ddf4a5b1edf18dd7fc620e850be0c52d438fd98e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a968bb7673855ac0c6fb7982e13e6a9c803f4cad3bf603daaf76f368d82d1c5\",\"dweb:/ipfs/QmTW3SK6D9pwj1QR8jKhWQawYto448pme5PP8u8Z2EW6qq\"]},\"contracts/L2/ValidatorRewardVault.sol\":{\"keccak256\":\"0x31cdaec7c22f4a7ca697b6b854f76832a2b71e5dfdad5fadb64942ce25355fca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c15c50493b0a9aa3f471aa56bc376e2882be135a7fc4cf3058f6ac1fe871f2\",\"dweb:/ipfs/QmcR1NoZSaj4GAUfbycy2MsSkCjaVjZbPL9QayvN5mA2o8\"]},\"contracts/governance/UpgradeGovernor.sol\":{\"keccak256\":\"0xacfbba42ec2146347ed0221ce4bacbe9ab3195fe681b265b56f0537107967d71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752517eb60e4c22838ab02e111dd67702fb6a944eeaeb298f84507cb337c5373\",\"dweb:/ipfs/QmSwjeiyychXN5WkRAj7RQ5VF6wEJEv7pGm16j8ETEULWw\"]},\"contracts/libraries/Arithmetic.sol\":{\"keccak256\":\"0x268a178c83f88adac015bb02ea58e40d63187830bcdd7063a945804607b55570\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb3fd08e062e074ba49f596a82417997ef46c29e7dd9cb53ddb3192ac4ce4e0d\",\"dweb:/ipfs/QmZMRCQocGuLEkZeKLXWbp6zran3kYXzJQr6fPZF2xRcbx\"]},\"contracts/libraries/Burn.sol\":{\"keccak256\":\"0x9af535d46ec803e48cf7978cf9af29f259b39f56f929574ca4fcb292e0397ed7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8aca0112f1d20d62d154fa3304d511d51a2a4b86c5a28c69c932263f6a90a11\",\"dweb:/ipfs/QmPhZDd9sLqcoauJ8DA7R5V2gD8qFXsn1gmg63skBV9ZVn\"]},\"contracts/libraries/Bytes.sol\":{\"keccak256\":\"0x6c1cfe3d09a093f5946a87a9a60e469d4510e0749e218c4247b214fc09900b33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1fe4dd501f443a4a253b3940f0931732fc5074b57c8c9a5ca33a76e09de74\",\"dweb:/ipfs/QmQca2QpGggadP85yJyWC1teJxPxmKiKwdnA75Rrr7jygz\"]},\"contracts/libraries/Bytes32.sol\":{\"keccak256\":\"0x049480281697fdb3e7cd108523813a5d5d3b25fdfbad5a5007d9b9590e64d956\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89eebd28a45c4987226a10f023ddf2413e58c7593fe6fcc71cebbf18cc915a2f\",\"dweb:/ipfs/QmX9FEyvhXsxnxc1wdPGjA4kNGQvM4MN99krqEF7o5JGqc\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x992c2b37ecaf845c4e068e8de2bd5124712ed9dda77ee561d05c94ce4d4914fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd6846a4c6615c997546ec8260c77cf2ba3bf0a30fd92d8f76ed1c4940eea90c\",\"dweb:/ipfs/QmR86PTdT25HTj78Ja58UUmgLvMYrNX71zauNz46DArwxz\"]},\"contracts/libraries/Encoding.sol\":{\"keccak256\":\"0xe16e48eabffd0396f87f236e464ba07db03a958692e0c9155ed5bff02729fa79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada78ee0fa9b1d0d8842882039b4c02f0eb74969542c9dce8d9bff6ef62bf8ab\",\"dweb:/ipfs/QmQYbW8Ut15iQDMr31VbZsCzWYWCmY2fGCBjMUoo7JTmzE\"]},\"contracts/libraries/Hashing.sol\":{\"keccak256\":\"0x546a95ba970b8220268b74a310e659fbead98e13dacdc553f23e11ac9a1dc94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ba62679040a3a3af68ad3683765d1b31eac5929bbfd28ad462ac00f2fd6f1c3\",\"dweb:/ipfs/QmbibaWwK6E2EMZzcuvKEXm46W5rs9J2H6kfbiBCPYuo6o\"]},\"contracts/libraries/NodeReader.sol\":{\"keccak256\":\"0x3f2345546b715479dd41ea0f999c801c8aefc057b14f8c57ee35cce78e139b44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d15781b5c038b153f42237eddf2cd0d9e67536b8cd3a14e56297893b711e6af\",\"dweb:/ipfs/QmRroSVS6fRmk3bxkWuvNrEB8JqH2MCgmZQxJkhTFE3eds\"]},\"contracts/libraries/Predeploys.sol\":{\"keccak256\":\"0xfeeafa253dba978cab979afc2d7506eeb5aaf89f0256b048c972a84902b139ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96e108a95cb5b043f02f4d6bc50f5ac98bd75da4292c615784ba78fba25718a2\",\"dweb:/ipfs/QmXXNWwdyaNx9MXbQRHViAMmzN8mrd2Y3Xd3DBPE23Wz3J\"]},\"contracts/libraries/SafeCall.sol\":{\"keccak256\":\"0x9c9e20b64d509725e222e6973a9ce26ff68756098070a770e5e0c43d0f899a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9e198e00b17ac6bf2ad41f5a16242f458649eea089e591d88dbaba2a5d133b3\",\"dweb:/ipfs/QmeHvHgAGWjRseSQUrj5BrvHKHFjEg3buvkGkCLDd5aQMm\"]},\"contracts/libraries/Types.sol\":{\"keccak256\":\"0xe3440fb48334bd6ec8478c2dac2b583c6c425fc1457d5c3380e44a6fc7d477d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acec800b64f6213d500c22eb86560c40a7c9fff3f66ad397de17d9e85de209b\",\"dweb:/ipfs/Qmczy9W55zohWoTgg4dv8rCN3zxhw5i2MGbN8UkLmNbSDQ\"]},\"contracts/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"contracts/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0xa50cdacf266549170d36cc35000c075f177e426f4e1c26b4338b9b75d5656ef3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://073c44a92c7b6ddda3144412dbeee0e86435866fec2a05f6493c95d94dd09c35\",\"dweb:/ipfs/QmcM7hTxmdyUxHFYBCXvd9WFZdmNwpNemAvmspaEJu2DqM\"]},\"contracts/universal/FeeVault.sol\":{\"keccak256\":\"0x7fba013982f8380fd8ca97f54a63cbccf6f166a9503892e10a48f1eb1cfb01b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9add1aa8c613f73c1564e40d3d40196e1eca381ca28696ecf1712ba888da6fa\",\"dweb:/ipfs/Qmebc6v7ff4sWxTR1i93WXQRcXwsmDzH8S4wxv1bqVZEiW\"]},\"contracts/universal/IKromaMintableERC20.sol\":{\"keccak256\":\"0x1a95268117456ddb1e0a16eb2ba773b9540c7b8b9520e66d4d167ddc6ace6fcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f93d2e6f5121a3dfe272e399d6774e0584d59a20c4f63db78e5a0b644d92fa59\",\"dweb:/ipfs/QmbwM7kCpmwZs348jCeNwF86H8SDBURsGCGCUCyoSS1ffy\"]},\"contracts/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"contracts/universal/ITokenMultiSigWallet.sol\":{\"keccak256\":\"0x39783c3525cd113910d260377c120ba478dd5fde742adc3868b1788eafa37877\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://822f4e1674b030dc6cd2d165700388fe590260001dfe31bb31551d02debf9711\",\"dweb:/ipfs/QmU25xMh3f6QKty77UuG5fji3AsQDxemETRXAV9iovofeA\"]},\"contracts/universal/KromaMintableERC20.sol\":{\"keccak256\":\"0x30dccac5fe2d7c75bbe1411004ad03c40afe6dce8c7d22a89abb783f74bd2674\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de3f8062e170498d71069529cb83681b0acaeb41643892c092111b07df2895f6\",\"dweb:/ipfs/QmNsZa5vHYQ8eG3dQ7PjkfweXzxKc6nbDj9P455Mp1Waxx\"]},\"contracts/universal/StandardBridge.sol\":{\"keccak256\":\"0x97b07e61f135b77d6b5a7f27174cee21bb6a958408a773929eeee18501387d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e75747e512e56f85205822d3d9972e9a9a8e7213eae18f3e958409bf72f60e28\",\"dweb:/ipfs/QmSeF6sWzS8pQCWPiTuDLUXSWFELpohbdtrcbjCLnF5hEG\"]},\"contracts/universal/TokenMultiSigWallet.sol\":{\"keccak256\":\"0xd96e904fa44cc6df5cab93f983d36b79b95d2bf53049aa2240516f8a39ff2ae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a9bce2fbff643acc88c42ab7d073591e701386e3a8a78fa2f7e36a4695336b2\",\"dweb:/ipfs/Qmd2bpVB1DxAYBU7X9DuAs9QDfpz7QyWCAPZnmBuFdF82P\"]},\"contracts/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xfeefb24d068524440e1ba885efdf105d91f83504af3c2d745ffacc4595396831\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df5f6a75f86411cb20df54362ed4ec9b4c270720be20da7095f169932fa2709\",\"dweb:/ipfs/QmTThfuAwFYAvtHgZbmp6ZAbN2MVGSabAnhAbsB6JQxJCF\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol\":{\"keccak256\":\"0xfc12f25adffbe2a2d13ec1ef53a029611e9ac7398097967c76f6d7391f0887b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fad6dc429bd3aa67a615b6ed7824b9d106957e9500814b94733fa90f772e90d7\",\"dweb:/ipfs/QmYGhunsWpwdFDEGi2dA3VuKLQSpMqAX8Ptk7PunkKxNQQ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/IGovernorUpgradeable.sol\":{\"keccak256\":\"0x529df1b018f3e4a9c833b880f47bb51391981144102292486c374f411f7451c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c1b269f62d0b2ea13332ca340175512b2392d913c59f3582166f2966e621e1c\",\"dweb:/ipfs/QmcxsCxssEFpgZhkyQzCT8zu8ovkD1HUHJ42NSUnxipCJT\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol\":{\"keccak256\":\"0x82c0e3fcb6ab5e0bf9b5bcb65f13ba57afdbfa366de4c761c0b8f696386fb29d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b16a49886483f774c62f54ef4c6cf7cba522bc5d2604b3b462193fc51c4168e\",\"dweb:/ipfs/Qmb2mpqrajfqqhFW1FT4eb9nZbWo7pobvwr221UmERie7E\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorCountingSimpleUpgradeable.sol\":{\"keccak256\":\"0x71bbe61c162dfc35636fdf1a9f399adb14de6914d0d59af38bd7fd3fd9af7aaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://243d54f8ede34dec64dd49d32e84490dfd9bdc47f37693dd3adcd5e0ad986ab1\",\"dweb:/ipfs/QmPFDDjGtnqgoiEEyvsckMEx2rXLJiH8Wg6AHYDHaaNHFU\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol\":{\"keccak256\":\"0x92a4ee90de53cdfca915947e8c267c3b0df8041085e6413390fcd0620ad905d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53f084b37d45249d104ef28c4451ca560925ea354d7dc7259643af73199e8cab\",\"dweb:/ipfs/QmXL7wTkiwZyXVsCR22iuDfMSFpqoUUx8Mq5XYfWpM1VQo\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol\":{\"keccak256\":\"0xa3c328d7e594b0b439c8368871e63a8a9c3d760de0fb4a8fb817bd9403b3f9ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f729d862219a71a302b07f92e320313a8ea3392c93d1914ccd75a4a298882245\",\"dweb:/ipfs/QmbxfhNF7VnSTKa1pVmXQny16geow65DQ9KBPrHrdZSPhn\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol\":{\"keccak256\":\"0xf6ee965c883c5dc02dc029b0fd66ea635db79b04ca5f989041295d67fa003765\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dca3e51b6de8bcea875785258eb3412a8fc56ee31ddd04f4d2d05b0d37cf2b0\",\"dweb:/ipfs/QmQuvjk1FAVw6ZG1tYTsnHfJNrjENTJ1oW7MJTZkuBe1in\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol\":{\"keccak256\":\"0x124858fc3f8bedfef96bc099a788993dd40f4728d891122e61f1b940900c324b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05752d50a41672044052d43eb5131babaee6066c7735112bd6e948c5261537c2\",\"dweb:/ipfs/QmWvzbbBB5KaEZfoFoy2eeAfCYij8Bp83Gq5ZbZ6JneQ5c\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/IGovernorTimelockUpgradeable.sol\":{\"keccak256\":\"0xf490b5670f6ceca5a628d3d77854cd5c4c93ea3b5530b7fc5800ec45d441cb78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3823a9538227654f8ab88e902f9ce01161b67002f8ccdf728fd9de2bce3dd822\",\"dweb:/ipfs/QmSrvhMhBsjMRPYLG4tHBHfBwGmYBpjwZhvKtAgvYUb28R\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"keccak256\":\"0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a\",\"dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC165Upgradeable.sol\":{\"keccak256\":\"0x121966b3220d263a6669dcf59c1254bd48ed237adf4d8a595add70a7927eada1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://440dc242517ca29e9802f32dd237a185b4f7aaab67ceb2c1d6307c57636e0904\",\"dweb:/ipfs/QmeQZeMCMmxca8hA4oUFXEwLAzspiwMTQ9CaqFQutYk9ag\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol\":{\"keccak256\":\"0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9\",\"dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol\":{\"keccak256\":\"0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412\",\"dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol\":{\"keccak256\":\"0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c\",\"dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1be66618a68c62dfb767443bccba219ea240ebac287a7a23a32af4d2cbe2d9b9\",\"dweb:/ipfs/QmegRfPREH1UTq56ucSgGByYZqepGoRjKc51Jd3guvqpBJ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c\",\"dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0xeb8d6be406a373771724922eb41b5d593bc8e2dc705daa22cd1145cfc8f5a3a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dcf8f1b2f1869895bffaa1d83ea0e3ab5b42275c97248eda76441e64b343b66\",\"dweb:/ipfs/QmRqs6vX3dnVkRtdXmrxP7a677eaNnTUjY48DT96q6dMcZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c\",\"dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/structs/DoubleEndedQueueUpgradeable.sol\":{\"keccak256\":\"0xb16c656232224dd93cc310e7f4e14061e32a1a019633d7c0111d3f2e208f252c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e0e2c0b633b982dcb30f643446c172f65768092ac5ff3e6d8cc4965eadfa646\",\"dweb:/ipfs/Qmeo885GcTfRAtfQMSNQnybia1eFLEjWZrFyX1vF2pffYZ\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed\",\"dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]}},\"version\":1}", + "bytecode": "0x6101c06040523480156200001257600080fd5b5060405162005ed638038062005ed6833981016040819052620000359162000427565b6001600160a01b03808c166080528a811660a05260c089905260e08890526101008790526101208a90526101408690526101608590528281166101805281166101a052620000838362000094565b505050505050505050505062000580565b600054610100900460ff1615808015620000b55750600054600160ff909116105b80620000e55750620000d230620001c860201b62002a001760201c565b158015620000e5575060005460ff166001145b6200014e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000172576000805461ff0019166101001790555b6200017d82620001d7565b8015620001c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b60028151620001e79190620004f5565b156200025c5760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d626572000000000000606482015260840162000145565b600160005b8251811015620002e15782818151811062000280576200028062000518565b602002602001015160016000838152602001908152602001600020819055506001838281518110620002b657620002b662000518565b6020026020010151620002ca919062000544565b620002d690836200055e565b915060010162000261565b50610120518114620001c45760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201526274687360e81b606482015260840162000145565b6001600160a01b03811681146200035857600080fd5b50565b8051620003688162000342565b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200039557600080fd5b815160206001600160401b0380831115620003b457620003b46200036d565b8260051b604051601f19603f83011681018181108482111715620003dc57620003dc6200036d565b604052938452858101830193838101925087851115620003fb57600080fd5b83870191505b848210156200041c5781518352918301919083019062000401565b979650505050505050565b60008060008060008060008060008060006101608c8e0312156200044a57600080fd5b8b51620004578162000342565b60208d0151909b506200046a8162000342565b809a505060408c0151985060608c0151975060808c0151965060a08c0151955060c08c0151945060e08c015193506101008c015160018060401b03811115620004b257600080fd5b620004c08e828f0162000383565b935050620004d26101208d016200035b565b9150620004e36101408d016200035b565b90509295989b509295989b9093969950565b6000826200051357634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156200055957620005596200052e565b500390565b60008160001904831182151516156200057b576200057b6200052e565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516157d062000706600039600081816103d5015261380a0152600081816102f60152818161076f0152818161129e01528181611bb90152611ee601526000818161036501528181613928015261399601526000818161051d01526139620152600081816104cf015281816128dd015281816129160152612fe20152600081816104f601528181612a700152613bf701526000818161031d0152613c5e0152600081816104480152818161071b01526123f201526000818161046f0152610ff30152600081816101b7015281816106ab015281816108a701528181610a0b01528181610c5d0152818161112e01528181611432015281816114900152818161173e01528181611c7d01528181611dbb01528181611f0e015281816120d90152818161237a01528181612659015281816127a001528181612bf101528181612c9b01528181612d1201528181612dec015281816130b101526132f901526157d06000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c8063887c560f116100ee578063cfb4474d11610097578063e39a219c11610071578063e39a219c1461053f578063e58932b314610552578063e9371a2c14610572578063fc9d84df1461059257600080fd5b8063cfb4474d146104ca578063d2ee3075146104f1578063d5145ebc1461051857600080fd5b8063a41483e3116100c8578063a41483e314610491578063a6ade11f146104a4578063b8b1a27c146104b757600080fd5b8063887c560f146104305780638f3a6c88146104435780639ded39521461046a57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d057806362fc00db146103f75780636fe0e5591461040a57806379c2575a1461041d57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61021961020436600461473e565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c61023736600461476c565b6105a5565b005b6102aa61024c36600461476c565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ed565b61021961035b36600461473e565b61066f565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6103c36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed91906147f4565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c610405366004614807565b610764565b61023c61041836600461492b565b610ab2565b61023c61042b366004614a0d565b610c2c565b61021961043e36600461476c565b61159b565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c61049f36600461473e565b6115d0565b61023c6104b2366004614abe565b61170d565b61033f6104c5366004614b28565b611b31565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61023c61054d36600461473e565b611bae565b61056561056036600461476c565b611f70565b6040516101ed9190614b4b565b61058561058036600461476c565b61207d565b6040516101ed9190614c2a565b61023c6105a0366004614c6b565b6120a8565b60008281526002602090815260408083206001600160a01b03851684529091528120906105d182612a0f565b905060038160058111156105e7576105e7614bfb565b1461065f5760405162461bcd60e51b815260206004820152603c60248201527f436f6c6f737365756d3a2063616e206f6e6c792062652063616c6c656420696660448201527f20746865206368616c6c656e67657220697320696e2074696d6f75740000000060648201526084015b60405180910390fd5b6106698484612aec565b50505050565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190614ccf565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff1661075b9190614d76565b10159392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108025760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b816108755760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a2063616e6e6f7420726f6c6c6261636b206f7574707560448201527f7420746f207a65726f20686173680000000000000000000000000000000000006064820152608401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156108f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190614ccf565b60200151146109915760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a206f6e6c792063616e20726f6c6c6261636b2069662060448201527f746865206f757470757420686173206265656e2064656c6574656400000000006064820152608401610656565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fe664672300000000000000000000000000000000000000000000000000000000815260048101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b50505050836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610aa391815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610ad25750600054600160ff909116105b80610aec5750303b158015610aec575060005460ff166001145b610b5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610656565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bbc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bc582612ee5565b8015610c2857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810188905287907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd09190614d8e565b15610d695760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000888152600260209081526040808320338452909152812090610d8c82612a0f565b6001830154909150610da9908b906001600160a01b031683613075565b15610db5575050611591565b6005816005811115610dc957610dc9614bfb565b1480610de657506004816005811115610de457610de4614bfb565b145b610e585760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a20696d706f737369626c6520746f2070726f7665207460448201527f6865206661756c7420696e2063757272656e74207374617475730000000000006064820152608401610656565b6000610e71610e6c368b90038b018b614db0565b613406565b90506000610e8a610e6c368c90038c0160a08d01614db0565b9050610e9d8b8584848e60a081016134db565b610ec68a60a08101610eb3610140830183614e20565b610ec16101608f018f614e5e565b613697565b610ef8610ed76101c08c018c614e92565b8c61018001358d6101a001358e60a001604001358f60a001602001356137b2565b6000610f1560208c0135610f106101408e018e614e20565b613922565b60008181526003602052604090205490915060ff1615610fc35760405162461bcd60e51b815260206004820152604c60248201527f436f6c6f737365756d3a207075626c696320696e70757420746861742068617360448201527f20616c7265616479206265656e2076616c6964617465642063616e6e6f74206260648201527f65207573656420616761696e0000000000000000000000000000000000000000608482015260a401610656565b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634292dc3e90611030908d908d908d908d908890600401614f49565b602060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190614d8e565b6110bd5760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a20696e76616c69642070726f6f6600000000000000006044820152606401610656565b60405142815233908e907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018e90526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190614ccf565b905060006362fc00db60e01b8f338960000160099054906101000a90046001600160a01b03168560200151876040516024016112039594939291909485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926112d59291908690600401614f83565b600060405180830381600087803b1580156112ef57600080fd5b505af1158015611303573d6000803e3d6000fd5b50505050505060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008e81526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b0302191690556002820160006113df91906146c0565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018f905260248201523360448201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190614fbd565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018f90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b15801561157357600080fd5b505af1158015611587573d6000803e3d6000fd5b5050505050505050505b5050505050505050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c6816139d5565b9150505b92915050565b60008181526002602090815260408083203384529091528120906115f382612a0f565b9050600081600581111561160957611609614bfb565b0361167c5760405162461bcd60e51b815260206004820152602760248201527f436f6c6f737365756d3a20746865206368616c6c656e676520646f6573206e6f60448201527f74206578697374000000000000000000000000000000000000000000000000006064820152608401610656565b60018201546116969084906001600160a01b031683613075565b6117085760405162461bcd60e51b815260206004820152602860248201527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c65640000000000000000000000000000000000000000000000006064820152608401610656565b505050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa15801561178d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b19190614d8e565b1561184a5760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b60008681526002602090815260408083206001600160a01b038916845290915281209061187682612a0f565b60018301549091506118939089906001600160a01b031683613075565b1561189f575050611b29565b600060018260058111156118b5576118b5614bfb565b036118ce575060018201546001600160a01b0316611901565b60028260058111156118e2576118e2614bfb565b0361190157508154690100000000000000000090046001600160a01b03165b336001600160a01b038216146119595760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a206e6f7420796f7572207475726e00000000000000006044820152606401610656565b825460009061196c9060ff166001614fda565b90506119f781856002018a8154811061198757611987614fff565b9060005260206000200154866002018b60016119a39190614d76565b815481106119b3576119b3614fff565b90600052602060002001548a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b6000611a0285613b8f565b90506000611a10828b61502e565b8660040154611a1f9190614d76565b9050611a62868a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250879150613bbb9050565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416178655611a9686613be5565b6040805160ff851681524260208201526001600160a01b038d16918e917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611ae7866139d5565b611b22576040516001600160a01b038c16908d907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b5050505050505b505050505050565b6000600160ff83161015611b875760405162461bcd60e51b815260206004820152601760248201527f436f6c6f737365756d3a20696e76616c6964207475726e0000000000000000006044820152606401610656565b60016000611b95828561506b565b60ff168152602001908152602001600020549050919050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c4c5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810182905281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf09190614d8e565b15611d895760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2e9190614ccf565b6020810151909150611ea85760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a20746865206f75747075742068617320616c7265616460448201527f79206265656e2064656c657465640000000000000000000000000000000000006064820152608401610656565b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e6646723906064015b600060405180830381600087803b158015611f5357600080fd5b505af1158015611f67573d6000803e3d6000fd5b50505050505050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c081019190915260008381526002602081815260408084206001600160a01b03808816865290835293819020815160e081018352815460ff8116825267ffffffffffffffff6101008204168286015269010000000000000000009004861681840152600182015490951660608601529283018054825181850281018501909352808352608086019383018282801561205857602002820191906000526020600020905b815481526020019060010190808311612044575b5050505050815260200160038201548152602001600482015481525050905092915050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c681612a0f565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214c9190614d8e565b156121e55760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000861161225b5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722067656e6573697360448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b600086815260026020908152604080832033845290915290208054600160ff9091161061234857600061228d82612a0f565b905060038160058111156122a3576122a3614bfb565b1461233c5760405162461bcd60e51b815260206004820152604660248201527f436f6c6f737365756d3a20746865206368616c6c656e676520666f722067697660448201527f656e206f757470757420696e64657820697320616c726561647920696e20707260648201527f6f67726573730000000000000000000000000000000000000000000000000000608482015260a401610656565b6123468833612aec565b505b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190614ccf565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166124329190614d76565b10156124a65760405162461bcd60e51b815260206004820152603e60248201527f436f6c6f737365756d3a2063616e6e6f74206372656174652061206368616c6c60448201527f656e676520616674657220746865206372656174696f6e20706572696f6400006064820152608401610656565b602081015161251d5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722064656c6574656460448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b80516001600160a01b0316330361259c5760405162461bcd60e51b815260206004820152603860248201527f436f6c6f737365756d3a2074686520617373657274657220616e64206368616c60448201527f6c656e676572206d75737420626520646966666572656e7400000000000000006064820152608401610656565b86158015906125ab5750854015155b1561264d578686401461264d5760405162461bcd60e51b8152602060048201526044602482018190527f436f6c6f737365756d3a20626c6f636b206861736820646f6573206e6f74206d908201527f617463682074686520686173682061742074686520657870656374656420686560648201527f6967687400000000000000000000000000000000000000000000000000000000608482015260a401610656565b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761268960018c61508e565b6040518263ffffffff1660e01b81526004016126a791815260200190565b608060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190614ccf565b60208101519091506127565761275160018787600081811061270c5761270c614fff565b9050602002013584602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b61279e565b61279e6001826020015184602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128209190614fbd565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018b90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b5050505061293a838787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050606086015161291491507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff1661508e565b7f0000000000000000000000000000000000000000000000000000000000000000613bbb565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556129b283613be5565b815160405142815233916001600160a01b0316908b907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a4505050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612a2957506000919050565b8154600090612a3a9060ff16613c86565b8354909150610100900467ffffffffffffffff16421115612ac0578015612a645750600392915050565b8254612aa990612aa4907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16614d76565b421190565b15612ab75750600392915050565b50600492915050565b612ac9836139d5565b612ad65750600592915050565b80612ae2576002612ae5565b60015b9392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612b6c908301826146c0565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612bba91815260200190565b60405180910390a36040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c649190614d8e565b15612dea576040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e9190614ccf565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d929190614fbd565b81516040517f36b83469000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03858116602483015291821660448201529116906336b8346990606401611f39565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6c9190614fbd565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401600060405180830381600087803b158015612ed157600080fd5b505af1158015611b29573d6000803e3d6000fd5b60028151612ef391906150d4565b15612f665760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d6265720000000000006064820152608401610656565b600160005b8251811015612fdf57828181518110612f8657612f86614fff565b602002602001015160016000838152602001908152602001600020819055506001838281518110612fb957612fb9614fff565b6020026020010151612fcb919061508e565b612fd5908361502e565b9150600101612f6b565b507f00000000000000000000000000000000000000000000000000000000000000008114610c285760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74687300000000000000000000000000000000000000000000000000000000006064820152608401610656565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c9190614ccf565b6020015190508015613132576000915050612ae5565b336001600160a01b038516146131b05760405162461bcd60e51b815260206004820152602560248201527f436f6c6f737365756d3a2073656e646572206973206e6f742061206368616c6c60448201527f656e6765720000000000000000000000000000000000000000000000000000006064820152608401610656565b60038360058111156131c4576131c4614bfb565b03613239576040805162461bcd60e51b81526020600482015260248101919091527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c6564206966206368616c6c656e6765722074696d6564206f75746064820152608401610656565b6000858152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591906132b0908301826146c0565b50600060038201819055600490910155604051428152339086907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133799190614fbd565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101879052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50600198975050505050505050565b80516000906134685781516020808401516040808601516060808801516080808a0151855180890199909952888601969096529187019290925285015260a0808501929092528051808503909201825260c090930190925281519101206115ca565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e000000000000000000000000000000000000000000006064820152608401610656565b919050565b838560020187815481106134f1576134f1614fff565b90600052602060002001541461356f5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2074686520736f75726365207365676d656e74206d7560448201527f7374206265206d617463686564000000000000000000000000000000000000006064820152608401610656565b613578856139d5565b61361a57826002860161358c886001614d76565b8154811061359c5761359c614fff565b90600052602060002001540361361a5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a207468652064657374696e6174696f6e207365676d6560448201527f6e74206d757374206e6f74206265206d617463686564000000000000000000006064820152608401610656565b8060600135826080013514611b295760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b82602001358260e00135146137145760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520737461746520726f6f74206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b600061373061372284615166565b61372b84615292565b613c9d565b9050808560800135146137ab5760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a2074686520626c6f636b20686173682066726f6d207060448201527f75626c696320696e707574206d757374206265206d61746368656400000000006064820152608401610656565b5050505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312e64a729061386f907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615433565b602060405180830381865afa15801561388c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b09190614d8e565b611f675760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a20696e76616c6964204c32546f4c314d65737361676560448201527f50617373657220696e636c7573696f6e2070726f6f66000000000000000000006064820152608401610656565b600060607f0000000000000000000000000000000000000000000000000000000000000000613955610120850185614e92565b905010156139c2576139bf7f000000000000000000000000000000000000000000000000000000000000000061398f610120860186614e92565b6139ba91507f000000000000000000000000000000000000000000000000000000000000000061508e565b613d41565b90505b6115c6846139cf85615166565b83613dcd565b600060016139e283613b8f565b1192915050565b8051806139f586611b31565b14613a685760405162461bcd60e51b815260206004820152602260248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74680000000000000000000000000000000000000000000000000000000000006064820152608401610656565b81600081518110613a7b57613a7b614fff565b60200260200101518414613af75760405162461bcd60e51b815260206004820152602c60248201527f436f6c6f737365756d3a20746865206669727374207365676d656e74206d757360448201527f74206265206d61746368656400000000000000000000000000000000000000006064820152608401610656565b81613b0360018361508e565b81518110613b1357613b13614fff565b602002602001015183036137ab5760405162461bcd60e51b815260206004820152602f60248201527f436f6c6f737365756d3a20746865206c617374207365676d656e74206d75737460448201527f206e6f74206265206d61746368656400000000000000000000000000000000006064820152608401610656565b805460009060ff166001613ba282611b31565b613bac919061508e565b8360030154612ae5919061550e565b8251613bd090600286019060208601906146de565b50600484019190915560039092019190915550565b613bee816139d5565b613c5957613c1c7f000000000000000000000000000000000000000000000000000000000000000042614d76565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613c1c7f000000000000000000000000000000000000000000000000000000000000000042614d76565b50565b6000613c93600283615522565b60ff161592915050565b6040805160118082526102408201909252600091829190816020015b6060815260200190600190039081613cb9579050509050613cdb848483613e3f565b613d0a846101000151604051602001613cf691815260200190565b6040516020818303038152906040526140f2565b81601081518110613d1d57613d1d614fff565b6020026020010181905250613d3181614161565b8051906020012091505092915050565b606060008267ffffffffffffffff811115613d5e57613d5e614859565b604051908082528060200260200182016040528015613d87578160200160208202803683370190505b50905060005b83811015613dc55784828281518110613da857613da8614fff565b602090810291909101015280613dbd81615544565b915050613d8d565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001613e209c9b9a999897969594939291906155af565b6040516020818303038152906040528051906020012090509392505050565b613e598360200151604051602001613cf691815260200190565b81600081518110613e6c57613e6c614fff565b6020026020010181905250816000015181600181518110613e8f57613e8f614fff565b6020026020010181905250816020015181600281518110613eb257613eb2614fff565b6020026020010181905250613ed78360e00151604051602001613cf691815260200190565b81600381518110613eea57613eea614fff565b6020026020010181905250613f0f8360c00151604051602001613cf691815260200190565b81600481518110613f2257613f22614fff565b6020026020010181905250816040015181600581518110613f4557613f45614fff565b6020026020010181905250816060015181600681518110613f6857613f68614fff565b6020026020010181905250816080015181600781518110613f8b57613f8b614fff565b6020026020010181905250613fad836060015167ffffffffffffffff166141a5565b81600881518110613fc057613fc0614fff565b6020026020010181905250613fe2836080015167ffffffffffffffff166141a5565b81600981518110613ff557613ff5614fff565b60200260200101819052508160a0015181600a8151811061401857614018614fff565b602002602001018190525061403a836040015167ffffffffffffffff166141a5565b81600b8151811061404d5761404d614fff565b60200260200101819052508160c0015181600c8151811061407057614070614fff565b60200260200101819052508160e0015181600d8151811061409357614093614fff565b602002602001018190525081610100015181600e815181106140b7576140b7614fff565b60200260200101819052506140cf8360a001516141a5565b81600f815181106140e2576140e2614fff565b6020026020010181905250505050565b60608082516001148015614120575060808360008151811061411657614116614fff565b016020015160f81c105b1561412c5750816115ca565b614138835160806141b8565b8360405160200161414a929190615668565b604051602081830303815290604052905092915050565b6060600061416e836143ae565b905061417c815160c06141b8565b8160405160200161418e929190615668565b604051602081830303815290604052915050919050565b60606115ca6141b3836144e6565b6140f2565b606080603884101561423757604080516001808252818301909252906020820181803683370190505090506141ed8385614fda565b60f81b8160008151811061420357614203614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612ae5565b600060015b614246818761550e565b1561426c578161425581615544565b925061426590506101008261502e565b905061423c565b614277826001614d76565b67ffffffffffffffff81111561428f5761428f614859565b6040519080825280601f01601f1916602001820160405280156142b9576020820181803683370190505b5092506142c68583614fda565b6142d1906037614fda565b60f81b836000815181106142e7576142e7614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116143a55761010061432f828461508e565b61433b906101006157b7565b614345908861550e565b61434f91906150d4565b60f81b83828151811061436457614364614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061439d81615544565b91505061431b565b50509392505050565b606081516000036143cd57505060408051600081526020810190915290565b6000805b8351811015614414578381815181106143ec576143ec614fff565b602002602001015151826144009190614d76565b91508061440c81615544565b9150506143d1565b60008267ffffffffffffffff81111561442f5761442f614859565b6040519080825280601f01601f191660200182016040528015614459576020820181803683370190505b50600092509050602081015b85518310156144dd57600086848151811061448257614482614fff565b6020026020010151905060006020820190506144a083828451614645565b8785815181106144b2576144b2614fff565b602002602001015151836144c69190614d76565b9250505082806144d590615544565b935050614465565b50949350505050565b60606000826040516020016144fd91815260200190565b604051602081830303815290604052905060005b602081101561456c5781818151811061452c5761452c614fff565b01602001517fff000000000000000000000000000000000000000000000000000000000000001660000361456c578061456481615544565b915050614511565b600061457982602061508e565b67ffffffffffffffff81111561459157614591614859565b6040519080825280601f01601f1916602001820160405280156145bb576020820181803683370190505b50905060005b81518110156144dd5783836145d581615544565b9450815181106145e7576145e7614fff565b602001015160f81c60f81b82828151811061460457614604614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061463d81615544565b9150506145c1565b8282825b602081106146815781518352614660602084614d76565b925061466d602083614d76565b915061467a60208261508e565b9050614649565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b5080546000825590600052602060002090810190613c839190614729565b828054828255906000526020600020908101928215614719579160200282015b828111156147195782518255916020019190600101906146fe565b50614725929150614729565b5090565b5b80821115614725576000815560010161472a565b60006020828403121561475057600080fd5b5035919050565b6001600160a01b0381168114613c8357600080fd5b6000806040838503121561477f57600080fd5b82359150602083013561479181614757565b809150509250929050565b60005b838110156147b757818101518382015260200161479f565b838111156106695750506000910152565b600081518084526147e081602086016020860161479c565b601f01601f19169290920160200192915050565b602081526000612ae560208301846147c8565b600080600080600060a0868803121561481f57600080fd5b85359450602086013561483181614757565b9350604086013561484181614757565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff811182821017156148ac576148ac614859565b60405290565b604051610120810167ffffffffffffffff811182821017156148ac576148ac614859565b604051601f8201601f1916810167ffffffffffffffff811182821017156148ff576148ff614859565b604052919050565b600067ffffffffffffffff82111561492157614921614859565b5060051b60200190565b6000602080838503121561493e57600080fd5b823567ffffffffffffffff81111561495557600080fd5b8301601f8101851361496657600080fd5b803561497961497482614907565b6148d6565b81815260059190911b8201830190838101908783111561499857600080fd5b928401925b828410156149b65783358252928401929084019061499d565b979650505050505050565b60008083601f8401126149d357600080fd5b50813567ffffffffffffffff8111156149eb57600080fd5b6020830191508360208260051b8501011115614a0657600080fd5b9250929050565b600080600080600080600060a0888a031215614a2857600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115614a4e57600080fd5b908901906101e0828c031215614a6357600080fd5b90955060608901359080821115614a7957600080fd5b614a858b838c016149c1565b909650945060808a0135915080821115614a9e57600080fd5b50614aab8a828b016149c1565b989b979a50959850939692959293505050565b600080600080600060808688031215614ad657600080fd5b853594506020860135614ae881614757565b935060408601359250606086013567ffffffffffffffff811115614b0b57600080fd5b614b17888289016149c1565b969995985093965092949392505050565b600060208284031215614b3a57600080fd5b813560ff81168114612ae557600080fd5b60006020808352610100830160ff8551168285015267ffffffffffffffff8286015116604085015260408501516001600160a01b0380821660608701528060608801511660808701525050608085015160e060a0860152818151808452610120870191508483019350600092505b80831015614bd95783518252928401926001929092019190840190614bb9565b5060a087015160c087015260c087015160e08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614c65577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600060808688031215614c8357600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614b0b57600080fd5b80516fffffffffffffffffffffffffffffffff811681146134d657600080fd5b600060808284031215614ce157600080fd5b6040516080810181811067ffffffffffffffff82111715614d0457614d04614859565b6040528251614d1281614757565b815260208381015190820152614d2a60408401614caf565b6040820152614d3b60608401614caf565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614d8957614d89614d47565b500190565b600060208284031215614da057600080fd5b81518015158114612ae557600080fd5b600060a08284031215614dc257600080fd5b60405160a0810181811067ffffffffffffffff82111715614de557614de5614859565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112614e5457600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112614e5457600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614ec757600080fd5b83018035915067ffffffffffffffff821115614ee257600080fd5b6020019150600581901b3603821315614a0657600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614f2c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b606081526000614f5d606083018789614efa565b8281036020840152614f70818688614efa565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff83166020820152606060408201526000614fb460608301846147c8565b95945050505050565b600060208284031215614fcf57600080fd5b8151612ae581614757565b600060ff821660ff84168060ff03821115614ff757614ff7614d47565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561506657615066614d47565b500290565b600060ff821660ff84168082101561508557615085614d47565b90039392505050565b6000828210156150a0576150a0614d47565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826150e3576150e36150a5565b500690565b803567ffffffffffffffff811681146134d657600080fd5b600082601f83011261511157600080fd5b8135602061512161497483614907565b82815260059290921b8401810191818101908684111561514057600080fd5b8286015b8481101561515b5780358352918301918301615144565b509695505050505050565b6000610140823603121561517957600080fd5b615181614888565b823581526020830135602082015261519b604084016150e8565b60408201526151ac606084016150e8565b60608201526151bd608084016150e8565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff81111561520857600080fd5b61521436828701615100565b918301919091525092915050565b600082601f83011261523357600080fd5b813567ffffffffffffffff81111561524d5761524d614859565b6152606020601f19601f840116016148d6565b81815284602083860101111561527557600080fd5b816020850160208301376000918101602001919091529392505050565b600061012082360312156152a557600080fd5b6152ad6148b2565b823567ffffffffffffffff808211156152c557600080fd5b6152d136838701615222565b835260208501359150808211156152e757600080fd5b6152f336838701615222565b6020840152604085013591508082111561530c57600080fd5b61531836838701615222565b6040840152606085013591508082111561533157600080fd5b61533d36838701615222565b6060840152608085013591508082111561535657600080fd5b61536236838701615222565b608084015260a085013591508082111561537b57600080fd5b61538736838701615222565b60a084015260c08501359150808211156153a057600080fd5b6153ac36838701615222565b60c084015260e08501359150808211156153c557600080fd5b6153d136838701615222565b60e0840152610100915081850135818111156153ec57600080fd5b6153f836828801615222565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b8581526000602060808184015261544d60808401886147c8565b8381036040850152858152818101600587901b820183018860005b898110156154f557601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c36030181126154ab57600080fd5b8b01868101903567ffffffffffffffff8111156154c757600080fd5b8036038213156154d657600080fd5b6154e1858284615408565b958801959450505090850190600101615468565b5050809450505050508260608301529695505050505050565b60008261551d5761551d6150a5565b500490565b600060ff831680615535576155356150a5565b8060ff84160691505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361557557615575614d47565b5060010190565b60008151602080840160005b838110156155a457815187529582019590820190600101615588565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d883015261565661565060da84018661557c565b8461557c565b9e9d5050505050505050505050505050565b6000835161567a81846020880161479c565b83519083019061568e81836020880161479c565b01949350505050565b600181815b808511156156f057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d6576156d6614d47565b808516156156e357918102915b93841c939080029061569c565b509250929050565b600082615707575060016115ca565b81615714575060006115ca565b816001811461572a576002811461573457615750565b60019150506115ca565b60ff84111561574557615745614d47565b50506001821b6115ca565b5060208310610133831016604e8410600b8410161715615773575081810a6115ca565b61577d8383615697565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157af576157af614d47565b029392505050565b6000612ae583836156f856fea164736f6c634300080f000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c8063887c560f116100ee578063cfb4474d11610097578063e39a219c11610071578063e39a219c1461053f578063e58932b314610552578063e9371a2c14610572578063fc9d84df1461059257600080fd5b8063cfb4474d146104ca578063d2ee3075146104f1578063d5145ebc1461051857600080fd5b8063a41483e3116100c8578063a41483e314610491578063a6ade11f146104a4578063b8b1a27c146104b757600080fd5b8063887c560f146104305780638f3a6c88146104435780639ded39521461046a57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d057806362fc00db146103f75780636fe0e5591461040a57806379c2575a1461041d57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61021961020436600461473e565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c61023736600461476c565b6105a5565b005b6102aa61024c36600461476c565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ed565b61021961035b36600461473e565b61066f565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6103c36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed91906147f4565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c610405366004614807565b610764565b61023c61041836600461492b565b610ab2565b61023c61042b366004614a0d565b610c2c565b61021961043e36600461476c565b61159b565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c61049f36600461473e565b6115d0565b61023c6104b2366004614abe565b61170d565b61033f6104c5366004614b28565b611b31565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61023c61054d36600461473e565b611bae565b61056561056036600461476c565b611f70565b6040516101ed9190614b4b565b61058561058036600461476c565b61207d565b6040516101ed9190614c2a565b61023c6105a0366004614c6b565b6120a8565b60008281526002602090815260408083206001600160a01b03851684529091528120906105d182612a0f565b905060038160058111156105e7576105e7614bfb565b1461065f5760405162461bcd60e51b815260206004820152603c60248201527f436f6c6f737365756d3a2063616e206f6e6c792062652063616c6c656420696660448201527f20746865206368616c6c656e67657220697320696e2074696d6f75740000000060648201526084015b60405180910390fd5b6106698484612aec565b50505050565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190614ccf565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff1661075b9190614d76565b10159392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108025760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b816108755760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a2063616e6e6f7420726f6c6c6261636b206f7574707560448201527f7420746f207a65726f20686173680000000000000000000000000000000000006064820152608401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156108f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190614ccf565b60200151146109915760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a206f6e6c792063616e20726f6c6c6261636b2069662060448201527f746865206f757470757420686173206265656e2064656c6574656400000000006064820152608401610656565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fe664672300000000000000000000000000000000000000000000000000000000815260048101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b50505050836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610aa391815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610ad25750600054600160ff909116105b80610aec5750303b158015610aec575060005460ff166001145b610b5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610656565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bbc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bc582612ee5565b8015610c2857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810188905287907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd09190614d8e565b15610d695760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000888152600260209081526040808320338452909152812090610d8c82612a0f565b6001830154909150610da9908b906001600160a01b031683613075565b15610db5575050611591565b6005816005811115610dc957610dc9614bfb565b1480610de657506004816005811115610de457610de4614bfb565b145b610e585760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a20696d706f737369626c6520746f2070726f7665207460448201527f6865206661756c7420696e2063757272656e74207374617475730000000000006064820152608401610656565b6000610e71610e6c368b90038b018b614db0565b613406565b90506000610e8a610e6c368c90038c0160a08d01614db0565b9050610e9d8b8584848e60a081016134db565b610ec68a60a08101610eb3610140830183614e20565b610ec16101608f018f614e5e565b613697565b610ef8610ed76101c08c018c614e92565b8c61018001358d6101a001358e60a001604001358f60a001602001356137b2565b6000610f1560208c0135610f106101408e018e614e20565b613922565b60008181526003602052604090205490915060ff1615610fc35760405162461bcd60e51b815260206004820152604c60248201527f436f6c6f737365756d3a207075626c696320696e70757420746861742068617360448201527f20616c7265616479206265656e2076616c6964617465642063616e6e6f74206260648201527f65207573656420616761696e0000000000000000000000000000000000000000608482015260a401610656565b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634292dc3e90611030908d908d908d908d908890600401614f49565b602060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190614d8e565b6110bd5760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a20696e76616c69642070726f6f6600000000000000006044820152606401610656565b60405142815233908e907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018e90526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190614ccf565b905060006362fc00db60e01b8f338960000160099054906101000a90046001600160a01b03168560200151876040516024016112039594939291909485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926112d59291908690600401614f83565b600060405180830381600087803b1580156112ef57600080fd5b505af1158015611303573d6000803e3d6000fd5b50505050505060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008e81526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b0302191690556002820160006113df91906146c0565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018f905260248201523360448201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190614fbd565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018f90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b15801561157357600080fd5b505af1158015611587573d6000803e3d6000fd5b5050505050505050505b5050505050505050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c6816139d5565b9150505b92915050565b60008181526002602090815260408083203384529091528120906115f382612a0f565b9050600081600581111561160957611609614bfb565b0361167c5760405162461bcd60e51b815260206004820152602760248201527f436f6c6f737365756d3a20746865206368616c6c656e676520646f6573206e6f60448201527f74206578697374000000000000000000000000000000000000000000000000006064820152608401610656565b60018201546116969084906001600160a01b031683613075565b6117085760405162461bcd60e51b815260206004820152602860248201527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c65640000000000000000000000000000000000000000000000006064820152608401610656565b505050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa15801561178d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b19190614d8e565b1561184a5760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b60008681526002602090815260408083206001600160a01b038916845290915281209061187682612a0f565b60018301549091506118939089906001600160a01b031683613075565b1561189f575050611b29565b600060018260058111156118b5576118b5614bfb565b036118ce575060018201546001600160a01b0316611901565b60028260058111156118e2576118e2614bfb565b0361190157508154690100000000000000000090046001600160a01b03165b336001600160a01b038216146119595760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a206e6f7420796f7572207475726e00000000000000006044820152606401610656565b825460009061196c9060ff166001614fda565b90506119f781856002018a8154811061198757611987614fff565b9060005260206000200154866002018b60016119a39190614d76565b815481106119b3576119b3614fff565b90600052602060002001548a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b6000611a0285613b8f565b90506000611a10828b61502e565b8660040154611a1f9190614d76565b9050611a62868a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250879150613bbb9050565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416178655611a9686613be5565b6040805160ff851681524260208201526001600160a01b038d16918e917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611ae7866139d5565b611b22576040516001600160a01b038c16908d907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b5050505050505b505050505050565b6000600160ff83161015611b875760405162461bcd60e51b815260206004820152601760248201527f436f6c6f737365756d3a20696e76616c6964207475726e0000000000000000006044820152606401610656565b60016000611b95828561506b565b60ff168152602001908152602001600020549050919050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c4c5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810182905281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf09190614d8e565b15611d895760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2e9190614ccf565b6020810151909150611ea85760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a20746865206f75747075742068617320616c7265616460448201527f79206265656e2064656c657465640000000000000000000000000000000000006064820152608401610656565b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e6646723906064015b600060405180830381600087803b158015611f5357600080fd5b505af1158015611f67573d6000803e3d6000fd5b50505050505050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c081019190915260008381526002602081815260408084206001600160a01b03808816865290835293819020815160e081018352815460ff8116825267ffffffffffffffff6101008204168286015269010000000000000000009004861681840152600182015490951660608601529283018054825181850281018501909352808352608086019383018282801561205857602002820191906000526020600020905b815481526020019060010190808311612044575b5050505050815260200160038201548152602001600482015481525050905092915050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c681612a0f565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214c9190614d8e565b156121e55760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000861161225b5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722067656e6573697360448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b600086815260026020908152604080832033845290915290208054600160ff9091161061234857600061228d82612a0f565b905060038160058111156122a3576122a3614bfb565b1461233c5760405162461bcd60e51b815260206004820152604660248201527f436f6c6f737365756d3a20746865206368616c6c656e676520666f722067697660448201527f656e206f757470757420696e64657820697320616c726561647920696e20707260648201527f6f67726573730000000000000000000000000000000000000000000000000000608482015260a401610656565b6123468833612aec565b505b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190614ccf565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166124329190614d76565b10156124a65760405162461bcd60e51b815260206004820152603e60248201527f436f6c6f737365756d3a2063616e6e6f74206372656174652061206368616c6c60448201527f656e676520616674657220746865206372656174696f6e20706572696f6400006064820152608401610656565b602081015161251d5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722064656c6574656460448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b80516001600160a01b0316330361259c5760405162461bcd60e51b815260206004820152603860248201527f436f6c6f737365756d3a2074686520617373657274657220616e64206368616c60448201527f6c656e676572206d75737420626520646966666572656e7400000000000000006064820152608401610656565b86158015906125ab5750854015155b1561264d578686401461264d5760405162461bcd60e51b8152602060048201526044602482018190527f436f6c6f737365756d3a20626c6f636b206861736820646f6573206e6f74206d908201527f617463682074686520686173682061742074686520657870656374656420686560648201527f6967687400000000000000000000000000000000000000000000000000000000608482015260a401610656565b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761268960018c61508e565b6040518263ffffffff1660e01b81526004016126a791815260200190565b608060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190614ccf565b60208101519091506127565761275160018787600081811061270c5761270c614fff565b9050602002013584602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b61279e565b61279e6001826020015184602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128209190614fbd565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018b90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b5050505061293a838787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050606086015161291491507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff1661508e565b7f0000000000000000000000000000000000000000000000000000000000000000613bbb565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556129b283613be5565b815160405142815233916001600160a01b0316908b907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a4505050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612a2957506000919050565b8154600090612a3a9060ff16613c86565b8354909150610100900467ffffffffffffffff16421115612ac0578015612a645750600392915050565b8254612aa990612aa4907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16614d76565b421190565b15612ab75750600392915050565b50600492915050565b612ac9836139d5565b612ad65750600592915050565b80612ae2576002612ae5565b60015b9392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612b6c908301826146c0565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612bba91815260200190565b60405180910390a36040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c649190614d8e565b15612dea576040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e9190614ccf565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d929190614fbd565b81516040517f36b83469000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03858116602483015291821660448201529116906336b8346990606401611f39565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6c9190614fbd565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401600060405180830381600087803b158015612ed157600080fd5b505af1158015611b29573d6000803e3d6000fd5b60028151612ef391906150d4565b15612f665760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d6265720000000000006064820152608401610656565b600160005b8251811015612fdf57828181518110612f8657612f86614fff565b602002602001015160016000838152602001908152602001600020819055506001838281518110612fb957612fb9614fff565b6020026020010151612fcb919061508e565b612fd5908361502e565b9150600101612f6b565b507f00000000000000000000000000000000000000000000000000000000000000008114610c285760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74687300000000000000000000000000000000000000000000000000000000006064820152608401610656565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c9190614ccf565b6020015190508015613132576000915050612ae5565b336001600160a01b038516146131b05760405162461bcd60e51b815260206004820152602560248201527f436f6c6f737365756d3a2073656e646572206973206e6f742061206368616c6c60448201527f656e6765720000000000000000000000000000000000000000000000000000006064820152608401610656565b60038360058111156131c4576131c4614bfb565b03613239576040805162461bcd60e51b81526020600482015260248101919091527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c6564206966206368616c6c656e6765722074696d6564206f75746064820152608401610656565b6000858152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591906132b0908301826146c0565b50600060038201819055600490910155604051428152339086907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133799190614fbd565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101879052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50600198975050505050505050565b80516000906134685781516020808401516040808601516060808801516080808a0151855180890199909952888601969096529187019290925285015260a0808501929092528051808503909201825260c090930190925281519101206115ca565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e000000000000000000000000000000000000000000006064820152608401610656565b919050565b838560020187815481106134f1576134f1614fff565b90600052602060002001541461356f5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2074686520736f75726365207365676d656e74206d7560448201527f7374206265206d617463686564000000000000000000000000000000000000006064820152608401610656565b613578856139d5565b61361a57826002860161358c886001614d76565b8154811061359c5761359c614fff565b90600052602060002001540361361a5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a207468652064657374696e6174696f6e207365676d6560448201527f6e74206d757374206e6f74206265206d617463686564000000000000000000006064820152608401610656565b8060600135826080013514611b295760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b82602001358260e00135146137145760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520737461746520726f6f74206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b600061373061372284615166565b61372b84615292565b613c9d565b9050808560800135146137ab5760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a2074686520626c6f636b20686173682066726f6d207060448201527f75626c696320696e707574206d757374206265206d61746368656400000000006064820152608401610656565b5050505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312e64a729061386f907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615433565b602060405180830381865afa15801561388c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b09190614d8e565b611f675760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a20696e76616c6964204c32546f4c314d65737361676560448201527f50617373657220696e636c7573696f6e2070726f6f66000000000000000000006064820152608401610656565b600060607f0000000000000000000000000000000000000000000000000000000000000000613955610120850185614e92565b905010156139c2576139bf7f000000000000000000000000000000000000000000000000000000000000000061398f610120860186614e92565b6139ba91507f000000000000000000000000000000000000000000000000000000000000000061508e565b613d41565b90505b6115c6846139cf85615166565b83613dcd565b600060016139e283613b8f565b1192915050565b8051806139f586611b31565b14613a685760405162461bcd60e51b815260206004820152602260248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74680000000000000000000000000000000000000000000000000000000000006064820152608401610656565b81600081518110613a7b57613a7b614fff565b60200260200101518414613af75760405162461bcd60e51b815260206004820152602c60248201527f436f6c6f737365756d3a20746865206669727374207365676d656e74206d757360448201527f74206265206d61746368656400000000000000000000000000000000000000006064820152608401610656565b81613b0360018361508e565b81518110613b1357613b13614fff565b602002602001015183036137ab5760405162461bcd60e51b815260206004820152602f60248201527f436f6c6f737365756d3a20746865206c617374207365676d656e74206d75737460448201527f206e6f74206265206d61746368656400000000000000000000000000000000006064820152608401610656565b805460009060ff166001613ba282611b31565b613bac919061508e565b8360030154612ae5919061550e565b8251613bd090600286019060208601906146de565b50600484019190915560039092019190915550565b613bee816139d5565b613c5957613c1c7f000000000000000000000000000000000000000000000000000000000000000042614d76565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613c1c7f000000000000000000000000000000000000000000000000000000000000000042614d76565b50565b6000613c93600283615522565b60ff161592915050565b6040805160118082526102408201909252600091829190816020015b6060815260200190600190039081613cb9579050509050613cdb848483613e3f565b613d0a846101000151604051602001613cf691815260200190565b6040516020818303038152906040526140f2565b81601081518110613d1d57613d1d614fff565b6020026020010181905250613d3181614161565b8051906020012091505092915050565b606060008267ffffffffffffffff811115613d5e57613d5e614859565b604051908082528060200260200182016040528015613d87578160200160208202803683370190505b50905060005b83811015613dc55784828281518110613da857613da8614fff565b602090810291909101015280613dbd81615544565b915050613d8d565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001613e209c9b9a999897969594939291906155af565b6040516020818303038152906040528051906020012090509392505050565b613e598360200151604051602001613cf691815260200190565b81600081518110613e6c57613e6c614fff565b6020026020010181905250816000015181600181518110613e8f57613e8f614fff565b6020026020010181905250816020015181600281518110613eb257613eb2614fff565b6020026020010181905250613ed78360e00151604051602001613cf691815260200190565b81600381518110613eea57613eea614fff565b6020026020010181905250613f0f8360c00151604051602001613cf691815260200190565b81600481518110613f2257613f22614fff565b6020026020010181905250816040015181600581518110613f4557613f45614fff565b6020026020010181905250816060015181600681518110613f6857613f68614fff565b6020026020010181905250816080015181600781518110613f8b57613f8b614fff565b6020026020010181905250613fad836060015167ffffffffffffffff166141a5565b81600881518110613fc057613fc0614fff565b6020026020010181905250613fe2836080015167ffffffffffffffff166141a5565b81600981518110613ff557613ff5614fff565b60200260200101819052508160a0015181600a8151811061401857614018614fff565b602002602001018190525061403a836040015167ffffffffffffffff166141a5565b81600b8151811061404d5761404d614fff565b60200260200101819052508160c0015181600c8151811061407057614070614fff565b60200260200101819052508160e0015181600d8151811061409357614093614fff565b602002602001018190525081610100015181600e815181106140b7576140b7614fff565b60200260200101819052506140cf8360a001516141a5565b81600f815181106140e2576140e2614fff565b6020026020010181905250505050565b60608082516001148015614120575060808360008151811061411657614116614fff565b016020015160f81c105b1561412c5750816115ca565b614138835160806141b8565b8360405160200161414a929190615668565b604051602081830303815290604052905092915050565b6060600061416e836143ae565b905061417c815160c06141b8565b8160405160200161418e929190615668565b604051602081830303815290604052915050919050565b60606115ca6141b3836144e6565b6140f2565b606080603884101561423757604080516001808252818301909252906020820181803683370190505090506141ed8385614fda565b60f81b8160008151811061420357614203614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612ae5565b600060015b614246818761550e565b1561426c578161425581615544565b925061426590506101008261502e565b905061423c565b614277826001614d76565b67ffffffffffffffff81111561428f5761428f614859565b6040519080825280601f01601f1916602001820160405280156142b9576020820181803683370190505b5092506142c68583614fda565b6142d1906037614fda565b60f81b836000815181106142e7576142e7614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116143a55761010061432f828461508e565b61433b906101006157b7565b614345908861550e565b61434f91906150d4565b60f81b83828151811061436457614364614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061439d81615544565b91505061431b565b50509392505050565b606081516000036143cd57505060408051600081526020810190915290565b6000805b8351811015614414578381815181106143ec576143ec614fff565b602002602001015151826144009190614d76565b91508061440c81615544565b9150506143d1565b60008267ffffffffffffffff81111561442f5761442f614859565b6040519080825280601f01601f191660200182016040528015614459576020820181803683370190505b50600092509050602081015b85518310156144dd57600086848151811061448257614482614fff565b6020026020010151905060006020820190506144a083828451614645565b8785815181106144b2576144b2614fff565b602002602001015151836144c69190614d76565b9250505082806144d590615544565b935050614465565b50949350505050565b60606000826040516020016144fd91815260200190565b604051602081830303815290604052905060005b602081101561456c5781818151811061452c5761452c614fff565b01602001517fff000000000000000000000000000000000000000000000000000000000000001660000361456c578061456481615544565b915050614511565b600061457982602061508e565b67ffffffffffffffff81111561459157614591614859565b6040519080825280601f01601f1916602001820160405280156145bb576020820181803683370190505b50905060005b81518110156144dd5783836145d581615544565b9450815181106145e7576145e7614fff565b602001015160f81c60f81b82828151811061460457614604614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061463d81615544565b9150506145c1565b8282825b602081106146815781518352614660602084614d76565b925061466d602083614d76565b915061467a60208261508e565b9050614649565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b5080546000825590600052602060002090810190613c839190614729565b828054828255906000526020600020908101928215614719579160200282015b828111156147195782518255916020019190600101906146fe565b50614725929150614729565b5090565b5b80821115614725576000815560010161472a565b60006020828403121561475057600080fd5b5035919050565b6001600160a01b0381168114613c8357600080fd5b6000806040838503121561477f57600080fd5b82359150602083013561479181614757565b809150509250929050565b60005b838110156147b757818101518382015260200161479f565b838111156106695750506000910152565b600081518084526147e081602086016020860161479c565b601f01601f19169290920160200192915050565b602081526000612ae560208301846147c8565b600080600080600060a0868803121561481f57600080fd5b85359450602086013561483181614757565b9350604086013561484181614757565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff811182821017156148ac576148ac614859565b60405290565b604051610120810167ffffffffffffffff811182821017156148ac576148ac614859565b604051601f8201601f1916810167ffffffffffffffff811182821017156148ff576148ff614859565b604052919050565b600067ffffffffffffffff82111561492157614921614859565b5060051b60200190565b6000602080838503121561493e57600080fd5b823567ffffffffffffffff81111561495557600080fd5b8301601f8101851361496657600080fd5b803561497961497482614907565b6148d6565b81815260059190911b8201830190838101908783111561499857600080fd5b928401925b828410156149b65783358252928401929084019061499d565b979650505050505050565b60008083601f8401126149d357600080fd5b50813567ffffffffffffffff8111156149eb57600080fd5b6020830191508360208260051b8501011115614a0657600080fd5b9250929050565b600080600080600080600060a0888a031215614a2857600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115614a4e57600080fd5b908901906101e0828c031215614a6357600080fd5b90955060608901359080821115614a7957600080fd5b614a858b838c016149c1565b909650945060808a0135915080821115614a9e57600080fd5b50614aab8a828b016149c1565b989b979a50959850939692959293505050565b600080600080600060808688031215614ad657600080fd5b853594506020860135614ae881614757565b935060408601359250606086013567ffffffffffffffff811115614b0b57600080fd5b614b17888289016149c1565b969995985093965092949392505050565b600060208284031215614b3a57600080fd5b813560ff81168114612ae557600080fd5b60006020808352610100830160ff8551168285015267ffffffffffffffff8286015116604085015260408501516001600160a01b0380821660608701528060608801511660808701525050608085015160e060a0860152818151808452610120870191508483019350600092505b80831015614bd95783518252928401926001929092019190840190614bb9565b5060a087015160c087015260c087015160e08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614c65577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600060808688031215614c8357600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614b0b57600080fd5b80516fffffffffffffffffffffffffffffffff811681146134d657600080fd5b600060808284031215614ce157600080fd5b6040516080810181811067ffffffffffffffff82111715614d0457614d04614859565b6040528251614d1281614757565b815260208381015190820152614d2a60408401614caf565b6040820152614d3b60608401614caf565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614d8957614d89614d47565b500190565b600060208284031215614da057600080fd5b81518015158114612ae557600080fd5b600060a08284031215614dc257600080fd5b60405160a0810181811067ffffffffffffffff82111715614de557614de5614859565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112614e5457600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112614e5457600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614ec757600080fd5b83018035915067ffffffffffffffff821115614ee257600080fd5b6020019150600581901b3603821315614a0657600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614f2c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b606081526000614f5d606083018789614efa565b8281036020840152614f70818688614efa565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff83166020820152606060408201526000614fb460608301846147c8565b95945050505050565b600060208284031215614fcf57600080fd5b8151612ae581614757565b600060ff821660ff84168060ff03821115614ff757614ff7614d47565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561506657615066614d47565b500290565b600060ff821660ff84168082101561508557615085614d47565b90039392505050565b6000828210156150a0576150a0614d47565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826150e3576150e36150a5565b500690565b803567ffffffffffffffff811681146134d657600080fd5b600082601f83011261511157600080fd5b8135602061512161497483614907565b82815260059290921b8401810191818101908684111561514057600080fd5b8286015b8481101561515b5780358352918301918301615144565b509695505050505050565b6000610140823603121561517957600080fd5b615181614888565b823581526020830135602082015261519b604084016150e8565b60408201526151ac606084016150e8565b60608201526151bd608084016150e8565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff81111561520857600080fd5b61521436828701615100565b918301919091525092915050565b600082601f83011261523357600080fd5b813567ffffffffffffffff81111561524d5761524d614859565b6152606020601f19601f840116016148d6565b81815284602083860101111561527557600080fd5b816020850160208301376000918101602001919091529392505050565b600061012082360312156152a557600080fd5b6152ad6148b2565b823567ffffffffffffffff808211156152c557600080fd5b6152d136838701615222565b835260208501359150808211156152e757600080fd5b6152f336838701615222565b6020840152604085013591508082111561530c57600080fd5b61531836838701615222565b6040840152606085013591508082111561533157600080fd5b61533d36838701615222565b6060840152608085013591508082111561535657600080fd5b61536236838701615222565b608084015260a085013591508082111561537b57600080fd5b61538736838701615222565b60a084015260c08501359150808211156153a057600080fd5b6153ac36838701615222565b60c084015260e08501359150808211156153c557600080fd5b6153d136838701615222565b60e0840152610100915081850135818111156153ec57600080fd5b6153f836828801615222565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b8581526000602060808184015261544d60808401886147c8565b8381036040850152858152818101600587901b820183018860005b898110156154f557601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c36030181126154ab57600080fd5b8b01868101903567ffffffffffffffff8111156154c757600080fd5b8036038213156154d657600080fd5b6154e1858284615408565b958801959450505090850190600101615468565b5050809450505050508260608301529695505050505050565b60008261551d5761551d6150a5565b500490565b600060ff831680615535576155356150a5565b8060ff84160691505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361557557615575614d47565b5060010190565b60008151602080840160005b838110156155a457815187529582019590820190600101615588565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d883015261565661565060da84018661557c565b8461557c565b9e9d5050505050505050505050505050565b6000835161567a81846020880161479c565b83519083019061568e81836020880161479c565b01949350505050565b600181815b808511156156f057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d6576156d6614d47565b808516156156e357918102915b93841c939080029061569c565b509250929050565b600082615707575060016115ca565b81615714575060006115ca565b816001811461572a576002811461573457615750565b60019150506115ca565b60ff84111561574557615745614d47565b50506001821b6115ca565b5060208310610133831016604e8410600b8410161715615773575081810a6115ca565b61577d8383615697565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157af576157af614d47565b029392505050565b6000612ae583836156f856fea164736f6c634300080f000a", "devdoc": { "version": 1, "kind": "dev", @@ -1147,11 +1147,6 @@ "_proof": "Proof for public input validation.", "_zkproof": "Halo2 proofs composed of points and scalars. See https://zcash.github.io/halo2/design/implementation/proofs.html." } - }, - "version()": { - "returns": { - "_0": "Semver contract version as a string." - } } }, "events": { @@ -1253,6 +1248,9 @@ "challenges(uint256,address)": { "notice": "A mapping of the challenge." }, + "constructor": { + "notice": "Constructs the Colosseum contract." + }, "createChallenge(uint256,bytes32,uint256,bytes32[])": { "notice": "Creates a challenge against an invalid output." }, @@ -1287,7 +1285,7 @@ "notice": "A mapping indicating whether a public input is verified or not." }, "version()": { - "notice": "Returns the full semver contract version." + "notice": "Semantic version." } }, "events": { @@ -1317,7 +1315,7 @@ "storageLayout": { "storage": [ { - "astId": 73635, + "astId": 113183, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "_initialized", "offset": 0, @@ -1325,7 +1323,7 @@ "type": "t_uint8" }, { - "astId": 73638, + "astId": 113186, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "_initializing", "offset": 1, @@ -1333,7 +1331,7 @@ "type": "t_bool" }, { - "astId": 80, + "astId": 44278, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "segmentsLengths", "offset": 0, @@ -1341,15 +1339,15 @@ "type": "t_mapping(t_uint256,t_uint256)" }, { - "astId": 88, + "astId": 44286, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "challenges", "offset": 0, "slot": "2", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)17488_storage))" + "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)61832_storage))" }, { - "astId": 93, + "astId": 44291, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "verifiedPublicInputs", "offset": 0, @@ -1379,12 +1377,12 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_mapping(t_address,t_struct(Challenge)17488_storage)": { + "t_mapping(t_address,t_struct(Challenge)61832_storage)": { "encoding": "mapping", "key": "t_address", "label": "mapping(address => struct Types.Challenge)", "numberOfBytes": "32", - "value": "t_struct(Challenge)17488_storage" + "value": "t_struct(Challenge)61832_storage" }, "t_mapping(t_bytes32,t_bool)": { "encoding": "mapping", @@ -1393,12 +1391,12 @@ "numberOfBytes": "32", "value": "t_bool" }, - "t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)17488_storage))": { + "t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)61832_storage))": { "encoding": "mapping", "key": "t_uint256", "label": "mapping(uint256 => mapping(address => struct Types.Challenge))", "numberOfBytes": "32", - "value": "t_mapping(t_address,t_struct(Challenge)17488_storage)" + "value": "t_mapping(t_address,t_struct(Challenge)61832_storage)" }, "t_mapping(t_uint256,t_uint256)": { "encoding": "mapping", @@ -1407,13 +1405,13 @@ "numberOfBytes": "32", "value": "t_uint256" }, - "t_struct(Challenge)17488_storage": { + "t_struct(Challenge)61832_storage": { "encoding": "inplace", "label": "struct Types.Challenge", "numberOfBytes": "160", "members": [ { - "astId": 17474, + "astId": 61818, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "turn", "offset": 0, @@ -1421,7 +1419,7 @@ "type": "t_uint8" }, { - "astId": 17476, + "astId": 61820, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "timeoutAt", "offset": 1, @@ -1429,7 +1427,7 @@ "type": "t_uint64" }, { - "astId": 17478, + "astId": 61822, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "asserter", "offset": 9, @@ -1437,7 +1435,7 @@ "type": "t_address" }, { - "astId": 17480, + "astId": 61824, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "challenger", "offset": 0, @@ -1445,7 +1443,7 @@ "type": "t_address" }, { - "astId": 17483, + "astId": 61827, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "segments", "offset": 0, @@ -1453,7 +1451,7 @@ "type": "t_array(t_bytes32)dyn_storage" }, { - "astId": 17485, + "astId": 61829, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "segSize", "offset": 0, @@ -1461,7 +1459,7 @@ "type": "t_uint256" }, { - "astId": 17487, + "astId": 61831, "contract": "contracts/L1/Colosseum.sol:Colosseum", "label": "segStart", "offset": 0, diff --git a/packages/contracts/deployments/sepolia/ValidatorPool.json b/packages/contracts/deployments/sepolia/ValidatorPool.json index edf09f3d2..14d603f9d 100644 --- a/packages/contracts/deployments/sepolia/ValidatorPool.json +++ b/packages/contracts/deployments/sepolia/ValidatorPool.json @@ -1,5 +1,5 @@ { - "address": "0x7D2951c880ED07a3AFeAf3374b0E2b9FC5CFa044", + "address": "0xf16BcC71E8B31180C3345098Bb5Cd1EF7A933a76", "abi": [ { "inputs": [ @@ -564,34 +564,52 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "transactionHash": "0x719ccb2faff3678b0b492917912ecf20f5c78a1820813ca59ed3cad65b812bac", + "transactionHash": "0x71196d41e28ec8771aa620debf5c960bc62c67aaf7c43148d13d0f403bfd100c", "receipt": { "to": null, - "from": "0x4935E310f69695c9A6e96d3992028CAbF082f686", - "contractAddress": "0x7D2951c880ED07a3AFeAf3374b0E2b9FC5CFa044", - "transactionIndex": 68, - "gasUsed": "2349120", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000080000000000400000000000100000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x31c2c588787390dfc56f2ef6f01403b238fdf4690c581df9748723689c59eb34", - "transactionHash": "0x719ccb2faff3678b0b492917912ecf20f5c78a1820813ca59ed3cad65b812bac", + "from": "0x2A819b780B80B9C476A78738F6BC0Db8A1C1A2f5", + "contractAddress": "0xf16BcC71E8B31180C3345098Bb5Cd1EF7A933a76", + "transactionIndex": 25, + "gasUsed": "2281682", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000020000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x872e34a0341194a68cfee328d538233b13b7c97040ee3c857e51a75bb47cc923", + "transactionHash": "0x71196d41e28ec8771aa620debf5c960bc62c67aaf7c43148d13d0f403bfd100c", "logs": [ { - "transactionIndex": 68, - "blockNumber": 4599404, - "transactionHash": "0x719ccb2faff3678b0b492917912ecf20f5c78a1820813ca59ed3cad65b812bac", - "address": "0x7D2951c880ED07a3AFeAf3374b0E2b9FC5CFa044", + "transactionIndex": 25, + "blockNumber": 5605133, + "transactionHash": "0x71196d41e28ec8771aa620debf5c960bc62c67aaf7c43148d13d0f403bfd100c", + "address": "0xf16BcC71E8B31180C3345098Bb5Cd1EF7A933a76", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 158, - "blockHash": "0x31c2c588787390dfc56f2ef6f01403b238fdf4690c581df9748723689c59eb34" + "logIndex": 56, + "blockHash": "0x872e34a0341194a68cfee328d538233b13b7c97040ee3c857e51a75bb47cc923" } ], - "blockNumber": 4599404, - "cumulativeGasUsed": "10989872", + "blockNumber": 5605133, + "cumulativeGasUsed": "5271218", "status": 1, "byzantium": true }, @@ -604,17 +622,255 @@ 10, 300 ], - "numDeployments": 1, - "solcInputHash": "d02d4269fc9ef5feba5ad00bb01d7fb8", - "metadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"_l2OutputOracle\",\"type\":\"address\"},{\"internalType\":\"contract KromaPortal\",\"name\":\"_portal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_securityCouncil\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedValidator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredBondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxUnbond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_roundDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"BondIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"name\":\"Bonded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"PendingBondAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"PendingBondReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"Unbonded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_UNBOND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PORTAL\",\"outputs\":[{\"internalType\":\"contract KromaPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REQUIRED_BOND_AMOUNT\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROUND_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECURITY_COUNCIL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAX_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAX_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_VALIDATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_REWARD_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"addPendingBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"_expiresAt\",\"type\":\"uint128\"}],\"name\":\"createBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"getBond\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Bond\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"getPendingBond\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"increaseBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextValidator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"releasePendingBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unbond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@title ValidatorPool\",\"events\":{\"BondIncreased(uint256,address,uint128)\":{\"params\":{\"amount\":\"Amount of bond increased.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\"}},\"Bonded(address,uint256,uint128,uint128)\":{\"params\":{\"amount\":\"Amount of bonded.\",\"expiresAt\":\"The expiration timestamp of bond.\",\"outputIndex\":\"Index of the L2 checkpoint output index.\",\"submitter\":\"Address of submitter.\"}},\"PendingBondAdded(uint256,address,uint128)\":{\"params\":{\"amount\":\"Amount of bond added.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\"}},\"PendingBondReleased(uint256,address,address,uint128)\":{\"params\":{\"amount\":\"Amount of bond released.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"recipient\":\"Address to receive amount from a pending bond.\"}},\"Unbonded(uint256,address,uint128)\":{\"params\":{\"amount\":\"Amount of unbonded.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"recipient\":\"Address of the recipient.\"}}},\"kind\":\"dev\",\"methods\":{\"addPendingBond(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"balanceOf(address)\":{\"params\":{\"_addr\":\"Address of validator.\"},\"returns\":{\"_0\":\"Balance of given address.\"}},\"constructor\":{\"custom:semver\":\"1.0.1\",\"params\":{\"_l2OutputOracle\":\"Address of the L2OutputOracle.\",\"_maxUnbond\":\"The max number of unbonds when trying unbond.\",\"_portal\":\"Address of the KromaPortal.\",\"_requiredBondAmount\":\"The required bond amount.\",\"_roundDuration\":\"The duration of one submission round in seconds.\",\"_securityCouncil\":\"Address of the security council.\",\"_trustedValidator\":\"Address of the trusted validator.\"}},\"createBond(uint256,uint128)\":{\"params\":{\"_expiresAt\":\"The expiration timestamp of bond.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"getBond(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"The bond data.\"}},\"getPendingBond(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"Amount of the pending bond.\"}},\"increaseBond(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"isValidator(address)\":{\"params\":{\"_addr\":\"Address of validator.\"},\"returns\":{\"_0\":\"Whether the given address is an active validator.\"}},\"nextValidator()\":{\"returns\":{\"_0\":\"The address of the validator.\"}},\"releasePendingBond(uint256,address,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_recipient\":\"Address to receive amount from a pending bond.\"}},\"validatorCount()\":{\"returns\":{\"_0\":\"The number of validators.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}},\"withdraw(uint256)\":{\"params\":{\"_amount\":\"Amount to withdraw.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"BondIncreased(uint256,address,uint128)\":{\"notice\":\"Emitted when the bond is increased.\"},\"Bonded(address,uint256,uint128,uint128)\":{\"notice\":\"Emitted when a validator bonds.\"},\"PendingBondAdded(uint256,address,uint128)\":{\"notice\":\"Emitted when the pending bond is added.\"},\"PendingBondReleased(uint256,address,address,uint128)\":{\"notice\":\"Emitted when the pending bond is released(refunded).\"},\"Unbonded(uint256,address,uint128)\":{\"notice\":\"Emitted when a validator unbonds.\"}},\"kind\":\"user\",\"methods\":{\"L2_ORACLE()\":{\"notice\":\"The address of the L2OutputOracle contract. Can be updated via upgrade.\"},\"MAX_UNBOND()\":{\"notice\":\"The max number of unbonds when trying unbond.\"},\"PORTAL()\":{\"notice\":\"The address of the KromaPortal contract. Can be updated via upgrade.\"},\"REQUIRED_BOND_AMOUNT()\":{\"notice\":\"The required bond amount. Can be updated via upgrade.\"},\"ROUND_DURATION()\":{\"notice\":\"The duration of a submission round for one output (in seconds). Note that there are two submission rounds for an output: PRIORITY ROUND and PUBLIC ROUND.\"},\"SECURITY_COUNCIL()\":{\"notice\":\"The address of the SecurityCouncil contract. Can be updated via upgrade.\"},\"TAX_DENOMINATOR()\":{\"notice\":\"The denominator of the tax.\"},\"TAX_NUMERATOR()\":{\"notice\":\"The numerator of the tax.\"},\"TRUSTED_VALIDATOR()\":{\"notice\":\"The address of the trusted validator. Can be updated via upgrade.\"},\"VAULT_REWARD_GAS_LIMIT()\":{\"notice\":\"The gas limit to use when rewarding validator in the ValidatorRewardVault on L2. This value is measured through simulation.\"},\"addPendingBond(uint256,address)\":{\"notice\":\"Adds a pending bond to the challenge corresponding to the given output index and challenger address. The pending bond is added to the bond when the challenge is proven or challenger is timed out, or refunded when the challenge is canceled.\"},\"balanceOf(address)\":{\"notice\":\"Returns the balance of given address.\"},\"createBond(uint256,uint128)\":{\"notice\":\"Bond asset corresponding to the given output index. This function is called when submitting output.\"},\"deposit()\":{\"notice\":\"Deposit ETH to be used as bond.\"},\"getBond(uint256)\":{\"notice\":\"Returns the bond corresponding to the output index. Reverts if the bond does not exist.\"},\"getPendingBond(uint256,address)\":{\"notice\":\"Returns the pending bond corresponding to the output index and challenger address. Reverts if the pending bond does not exist.\"},\"increaseBond(uint256,address)\":{\"notice\":\"Increases the bond amount corresponding to the given output index by the pending bond amount. This is when taxes are charged, and note that taxes are a means of preventing collusive attacks by the asserter and challenger.\"},\"initialize()\":{\"notice\":\"Initializer.\"},\"isValidator(address)\":{\"notice\":\"Determines whether the given address is an active validator.\"},\"nextValidator()\":{\"notice\":\"Determines who can submit the L2 output next.\"},\"releasePendingBond(uint256,address,address)\":{\"notice\":\"Releases the corresponding pending bond to the given output index and challenger address if a challenge is canceled.\"},\"unbond()\":{\"notice\":\"Attempt to unbond. Reverts if unbond is not possible.\"},\"validatorCount()\":{\"notice\":\"Returns the number of validators.\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"},\"withdraw(uint256)\":{\"notice\":\"Withdraw a given amount.\"}},\"notice\":\"The ValidatorPool determines whether the validator is present and manages the validator's deposit.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L1/ValidatorPool.sol\":\"ValidatorPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":@rari-capital/=node_modules/@rari-capital/\",\":@rari-capital/solmate/=node_modules/@rari-capital/solmate/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"contracts/L1/IZKMerkleTrie.sol\":{\"keccak256\":\"0xc0db9a82935f3ae1e0137e8752be690244fdf939f6adc262b82a9daa76ef3c91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26b5651a98c1a679ba8c945ba595c94a9b8ed758a2e8bb2baaeb571967f0820f\",\"dweb:/ipfs/Qmc42qGNY69oMmSdT6CxCtYsjmHHUmBnnuqgZfh9QmYMAv\"]},\"contracts/L1/KromaPortal.sol\":{\"keccak256\":\"0x8fab0c5e78b2a4ab14c60adb81d91514b9ccfde2a03a97e811b6eb1080159dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e0ec326772604fcd2368e545303d953d6ca8424abc039cbdd76b7d01df1a803\",\"dweb:/ipfs/QmRip4Fy2XAb1Vj5qbvHQchnm1fcreFw3W7qUYxetavbbi\"]},\"contracts/L1/L2OutputOracle.sol\":{\"keccak256\":\"0xec67136475ca92153c017b8578930baea30554f4d712e6c985b053b0ba1e83e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227aa644f048042bc780a02002766ef086fc6ccd0c6c5e7f2d526e3c8cf64fe2\",\"dweb:/ipfs/QmS9DjRu46TuaeL6DFG3mekkGPn2PzjnNQ8JDj88SbtrXt\"]},\"contracts/L1/ResourceMetering.sol\":{\"keccak256\":\"0xbc18cbf0e4fa8c9a17e04be6bf8e59bf5db5e71622f15fc15eb359db598abc59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29aa63d99de92760ebf0adfed473d2c6d6a52e4727e29f6fbfedd35c6c2e7100\",\"dweb:/ipfs/QmSVRRqcfhgbMvPztPdNvEhc7nakz5qBdKLddpXNvMRWjL\"]},\"contracts/L1/SystemConfig.sol\":{\"keccak256\":\"0xda300bf45b16cc3de950e6474499994ad4a257b5d9374ad6ea9dc715945c5d2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94825dd9982ad502b2b7de48f57ce99c7be73758a42378666e8784464daae8d2\",\"dweb:/ipfs/QmPQuQwkiS9YhRHpzzunfahh6edgDsZmBUMYAuQe5SSqnp\"]},\"contracts/L1/ValidatorPool.sol\":{\"keccak256\":\"0xbc5abef04aee93f3b7901ed9847b3627793d72eb6110d6c3f9ee5780c8451143\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830cf5f34388b344c976614917961ab7455b258e861d85c82c9ec32e45c0aab5\",\"dweb:/ipfs/QmZP9QKA9uq4mVvmHeTWVzKtrEDBNJRRoXzr6f3YQfi7VK\"]},\"contracts/L1/ZKMerkleTrie.sol\":{\"keccak256\":\"0xdd53226500d7559f83c145e345d640fb3ebdc4790c1d19a0770966eb98b771b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d70f18e6a7eaf07923611903477922bd59415945bfffad062ac60792262c6b74\",\"dweb:/ipfs/QmUDxyM24Sx3zAZJaU7HqhiWdAYCW7QLaALGS6nv3xvCXE\"]},\"contracts/L1/ZKTrieHasher.sol\":{\"keccak256\":\"0x8376cd6c3222d753cc9df6b412e7d0eeb2704cc3a47c3d55886bb4eca18893a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3900f900582bcb5ff17d65887a38776412e27838b62ade1389d727f859cbaf0\",\"dweb:/ipfs/QmYL7V3Ta6cJiQTcziMYwdurcUKhwbqK7Az21H19Vs6W41\"]},\"contracts/L2/L2StandardBridge.sol\":{\"keccak256\":\"0xea1a2f638c816a77c315f3609f5a42109131136aee6690cef64321734e894924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c875dae37c72422554e3f67700ed99fd7bad4a562c45ae524defa19e0bbc975\",\"dweb:/ipfs/QmYmLNGr5KvAfCF3pr2cM7pffKuaVJbMgQFpN1Hw2DfHUL\"]},\"contracts/L2/ValidatorRewardVault.sol\":{\"keccak256\":\"0x8c85869604d07c0ff3af14bf331a92e42f4706fae8df6269ceb7c1db7807509a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7503d14f1becc6829a4c41bdbe3c4cf18a669f180782e4f2945ff8fe53bc62c\",\"dweb:/ipfs/QmSNo8kVzCr46jptrkZUwAZKuvVy1q1sAmNbhih5xdvXoS\"]},\"contracts/libraries/Arithmetic.sol\":{\"keccak256\":\"0x268a178c83f88adac015bb02ea58e40d63187830bcdd7063a945804607b55570\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb3fd08e062e074ba49f596a82417997ef46c29e7dd9cb53ddb3192ac4ce4e0d\",\"dweb:/ipfs/QmZMRCQocGuLEkZeKLXWbp6zran3kYXzJQr6fPZF2xRcbx\"]},\"contracts/libraries/Burn.sol\":{\"keccak256\":\"0x9af535d46ec803e48cf7978cf9af29f259b39f56f929574ca4fcb292e0397ed7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8aca0112f1d20d62d154fa3304d511d51a2a4b86c5a28c69c932263f6a90a11\",\"dweb:/ipfs/QmPhZDd9sLqcoauJ8DA7R5V2gD8qFXsn1gmg63skBV9ZVn\"]},\"contracts/libraries/Bytes.sol\":{\"keccak256\":\"0x6c1cfe3d09a093f5946a87a9a60e469d4510e0749e218c4247b214fc09900b33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1fe4dd501f443a4a253b3940f0931732fc5074b57c8c9a5ca33a76e09de74\",\"dweb:/ipfs/QmQca2QpGggadP85yJyWC1teJxPxmKiKwdnA75Rrr7jygz\"]},\"contracts/libraries/Bytes32.sol\":{\"keccak256\":\"0x049480281697fdb3e7cd108523813a5d5d3b25fdfbad5a5007d9b9590e64d956\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89eebd28a45c4987226a10f023ddf2413e58c7593fe6fcc71cebbf18cc915a2f\",\"dweb:/ipfs/QmX9FEyvhXsxnxc1wdPGjA4kNGQvM4MN99krqEF7o5JGqc\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x992c2b37ecaf845c4e068e8de2bd5124712ed9dda77ee561d05c94ce4d4914fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd6846a4c6615c997546ec8260c77cf2ba3bf0a30fd92d8f76ed1c4940eea90c\",\"dweb:/ipfs/QmR86PTdT25HTj78Ja58UUmgLvMYrNX71zauNz46DArwxz\"]},\"contracts/libraries/Encoding.sol\":{\"keccak256\":\"0xe16e48eabffd0396f87f236e464ba07db03a958692e0c9155ed5bff02729fa79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada78ee0fa9b1d0d8842882039b4c02f0eb74969542c9dce8d9bff6ef62bf8ab\",\"dweb:/ipfs/QmQYbW8Ut15iQDMr31VbZsCzWYWCmY2fGCBjMUoo7JTmzE\"]},\"contracts/libraries/Hashing.sol\":{\"keccak256\":\"0xac83ce19afd76ad298b2ae3dc44d49af8d5a21a8c1740ede65dec08849f0cb45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://27f1da66d4c8dfc13cc905e892423c8b7ccb8baae64f209e2de8ba5a2b2a6302\",\"dweb:/ipfs/QmXrtQFQUok97PSDRx7g8SPfZYyctaL66DYe7WuCAh5doc\"]},\"contracts/libraries/NodeReader.sol\":{\"keccak256\":\"0x3f2345546b715479dd41ea0f999c801c8aefc057b14f8c57ee35cce78e139b44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d15781b5c038b153f42237eddf2cd0d9e67536b8cd3a14e56297893b711e6af\",\"dweb:/ipfs/QmRroSVS6fRmk3bxkWuvNrEB8JqH2MCgmZQxJkhTFE3eds\"]},\"contracts/libraries/Predeploys.sol\":{\"keccak256\":\"0xfeeafa253dba978cab979afc2d7506eeb5aaf89f0256b048c972a84902b139ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96e108a95cb5b043f02f4d6bc50f5ac98bd75da4292c615784ba78fba25718a2\",\"dweb:/ipfs/QmXXNWwdyaNx9MXbQRHViAMmzN8mrd2Y3Xd3DBPE23Wz3J\"]},\"contracts/libraries/SafeCall.sol\":{\"keccak256\":\"0x9c9e20b64d509725e222e6973a9ce26ff68756098070a770e5e0c43d0f899a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9e198e00b17ac6bf2ad41f5a16242f458649eea089e591d88dbaba2a5d133b3\",\"dweb:/ipfs/QmeHvHgAGWjRseSQUrj5BrvHKHFjEg3buvkGkCLDd5aQMm\"]},\"contracts/libraries/Types.sol\":{\"keccak256\":\"0xe3440fb48334bd6ec8478c2dac2b583c6c425fc1457d5c3380e44a6fc7d477d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acec800b64f6213d500c22eb86560c40a7c9fff3f66ad397de17d9e85de209b\",\"dweb:/ipfs/Qmczy9W55zohWoTgg4dv8rCN3zxhw5i2MGbN8UkLmNbSDQ\"]},\"contracts/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"contracts/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0xa50cdacf266549170d36cc35000c075f177e426f4e1c26b4338b9b75d5656ef3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://073c44a92c7b6ddda3144412dbeee0e86435866fec2a05f6493c95d94dd09c35\",\"dweb:/ipfs/QmcM7hTxmdyUxHFYBCXvd9WFZdmNwpNemAvmspaEJu2DqM\"]},\"contracts/universal/FeeVault.sol\":{\"keccak256\":\"0xe2a556e32e16b1851029a67b8d3b07e93e4e7aba7b48783e7354708f818b404c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33eadadd3d2d2914506d3d8265c58d4cc15edf2b8ea722a102ff26b5a7bb72e3\",\"dweb:/ipfs/QmR2noab4xpBEDoFG1aqtXqZRVVYxfRrjbwbfQpyYTn3cX\"]},\"contracts/universal/IKromaMintableERC20.sol\":{\"keccak256\":\"0x1a95268117456ddb1e0a16eb2ba773b9540c7b8b9520e66d4d167ddc6ace6fcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f93d2e6f5121a3dfe272e399d6774e0584d59a20c4f63db78e5a0b644d92fa59\",\"dweb:/ipfs/QmbwM7kCpmwZs348jCeNwF86H8SDBURsGCGCUCyoSS1ffy\"]},\"contracts/universal/KromaMintableERC20.sol\":{\"keccak256\":\"0xb1b9bc1d6b081ee59abf7e9b91ea651a0aaf24606058b8c97eda55868572bd56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2133d9724ea4a3678b36ece210982b25999581952e13015f58753e7f2f865a2a\",\"dweb:/ipfs/QmVzbJ8zEfmTTjQ8LJLZUY7LiXAXjL8E98tEvyHmq6YWu9\"]},\"contracts/universal/Semver.sol\":{\"keccak256\":\"0xa816a3d96caaabc0260067ea24ea9effa940bd8ce44c8662444c5a992229d983\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ce8c2a6ca1eaa4d900d8398032399cdae8a03809aba47076dc8078111b31f16\",\"dweb:/ipfs/QmPTA6L8yyN7FJuBopeqHWdHdMmnoPwzSmyYF8FbP4ehcC\"]},\"contracts/universal/StandardBridge.sol\":{\"keccak256\":\"0x97b07e61f135b77d6b5a7f27174cee21bb6a958408a773929eeee18501387d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e75747e512e56f85205822d3d9972e9a9a8e7213eae18f3e958409bf72f60e28\",\"dweb:/ipfs/QmSeF6sWzS8pQCWPiTuDLUXSWFELpohbdtrcbjCLnF5hEG\"]},\"contracts/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed\",\"dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]}},\"version\":1}", - "bytecode": "0x6101c06040523480156200001257600080fd5b5060405162002cbb38038062002cbb833981016040819052620000359162000261565b60016080819052600060a05260c0526001600160a01b0380881660e05286811661010052858116610120528416610140526001600160801b038316610160526101808290526101a08190526200008a62000097565b50505050505050620002e8565b600054610100900460ff1615808015620000b85750600054600160ff909116105b80620000e85750620000d530620001c960201b620018551760201c565b158015620000e8575060005460ff166001145b620001515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000175576000805461ff0019166101001790555b6200017f620001d8565b8015620001c6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620002455760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000148565b60018055565b6001600160a01b0381168114620001c657600080fd5b600080600080600080600060e0888a0312156200027d57600080fd5b87516200028a816200024b565b60208901519097506200029d816200024b565b6040890151909650620002b0816200024b565b6060890151909550620002c3816200024b565b809450506080880151925060a0880151915060c0880151905092959891949750929550565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516128c4620003f7600039600081816103660152610a1301526000818161043b0152611d530152600081816104b401528181610ce001528181610d610152818161127d015281816112b5015281816119590152611b570152600081816102db0152610a610152600081816102720152818161176b0152611ba401526000818161021c01526122810152600081816101ac01528181610656015281816108dd0152818161096b01528181610b280152818161108b015281816112020152818161147a01528181611e1d0152611fd901526000610adc01526000610ab301526000610a8a01526128c46000f3fe6080604052600436106101955760003560e01c806370a08231116100e1578063ab91f1901161008a578063d38dc7ee11610064578063d38dc7ee146104de578063d8fe7642146104fe578063dd215c5d1461054e578063facd743b1461056e57600080fd5b8063ab91f19014610472578063b7d636a5146104a2578063d0e30db0146104d657600080fd5b80638f09ade4116100bb5780638f09ade414610409578063946765fd14610429578063a51c9ace1461045d57600080fd5b806370a08231146103885780638129fc1c146103be57806382dae3aa146103d357600080fd5b80633a549046116101435780635a5447421161011d5780635a5447421461031f5780635df6a6bc1461033f5780636641ea081461035457600080fd5b80633a549046146102b45780633ee4d4a3146102c957806354fd4d50146102fd57600080fd5b80632e1a7d4d116101745780632e1a7d4d1461023e578063360864171461026057806336b834691461029457600080fd5b80621c2ff61461019a5780630f43a677146101eb5780630ff754ea1461020a575b600080fd5b3480156101a657600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101f757600080fd5b506036545b6040519081526020016101e2565b34801561021657600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b34801561024a57600080fd5b5061025e6102593660046123de565b61059e565b005b34801561026c57600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102a057600080fd5b5061025e6102af36600461240c565b610654565b3480156102c057600080fd5b506101ce6108c5565b3480156102d557600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b34801561030957600080fd5b50610312610a83565b6040516101e291906124c4565b34801561032b57600080fd5b5061025e61033a3660046124d7565b610b26565b34801561034b57600080fd5b5061025e610dcf565b34801561036057600080fd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039457600080fd5b506101fc6103a3366004612507565b6001600160a01b031660009081526033602052604090205490565b3480156103ca57600080fd5b5061025e610e4e565b3480156103df57600080fd5b506103e8601481565b6040516fffffffffffffffffffffffffffffffff90911681526020016101e2565b34801561041557600080fd5b506103e86104243660046124d7565b610fc5565b34801561043557600080fd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561046957600080fd5b506103e8606481565b34801561047e57600080fd5b50610489620186a081565b60405167ffffffffffffffff90911681526020016101e2565b3480156104ae57600080fd5b506103e87f000000000000000000000000000000000000000000000000000000000000000081565b61025e611074565b3480156104ea57600080fd5b5061025e6104f9366004612542565b611080565b34801561050a57600080fd5b5061051e6105193660046123de565b611359565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101e2565b34801561055a57600080fd5b5061025e6105693660046124d7565b611478565b34801561057a57600080fd5b5061058e610589366004612507565b6117de565b60405190151581526020016101e2565b6105a6611864565b6105b033826118bd565b60006105cd335a8460405180602001604052806000815250611b0f565b9050806106475760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f656400000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5061065160018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d69190612567565b6001600160a01b0316336001600160a01b03161461075c5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161063e565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806108045760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161063e565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610868826fffffffffffffffffffffffffffffffff8316611b2f565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610a5e5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612584565b905060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d1de856c61099b8460016125cc565b6040518263ffffffff1660e01b81526004016109b991815260200190565b602060405180830381865afa1580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa9190612584565b9050804210610a4b576000610a0f82426125e4565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610a49576001600160a01b03935050505090565b505b50506038546001600160a01b0316919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b6060610aae7f0000000000000000000000000000000000000000000000000000000000000000611c63565b610ad77f0000000000000000000000000000000000000000000000000000000000000000611c63565b610b007f0000000000000000000000000000000000000000000000000000000000000000611c63565b604051602001610b12939291906125fb565b604051602081830303815290604052905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190612567565b6001600160a01b0316336001600160a01b031614610c2e5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161063e565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610cda5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161063e565b610d16827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166118bd565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610dd9611d21565b9050806106515760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161063e565b600054610100900460ff1615808015610e6e5750600054600160ff909116105b80610e885750303b158015610e88575060005460ff166001145b610efa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161063e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f60611f3f565b801561065157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff168061106d5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161063e565b9392505050565b61107e3334611b2f565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461111e5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161063e565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156111c75760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161063e565b6111cf611d21565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112759190612567565b90506112b3817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166118bd565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a3611353611fbc565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906113c35750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b6114355760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161063e565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190612567565b6001600160a01b0316336001600160a01b0316146115805760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161063e565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16101561162c5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161063e565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806116d45760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161063e565b600060646116e3601484612671565b6116ed91906126d8565b905060006116fb8284612707565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b60365460009081036117f257506000919050565b6001600160a01b03821661180857506000919050565b6001600160a01b038216600081815260376020526040902054603680549192918390811061183857611838612738565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b6002600154036118b65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161063e565b6002600155565b6001600160a01b0382166000908152603360205260409020548181101561194b5760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161063e565b61195582826125e4565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110801561199c575061199c836117de565b15611aef576036546000906119b3906001906125e4565b90508015611a6b576001600160a01b03841660009081526037602052604081205460368054919291849081106119eb576119eb612738565b600091825260209091200154603680546001600160a01b039092169250829184908110611a1a57611a1a612738565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611a9557611a95612767565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611b539083906125cc565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611b9d5750611b9b836117de565b155b15611aef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611aef57603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60606000611c708361218a565b600101905060008167ffffffffffffffff811115611c9057611c90612796565b6040519080825280601f01601f191660200182016040528015611cba576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611cc457509392505050565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f0000000000000000000000000000000000000000000000000000000000000000811015611f1c57600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611dd857506000846fffffffffffffffffffffffffffffffff16115b15611f1c5760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9091906127c5565b9150611eb28260000151856fffffffffffffffffffffffffffffffff16611b2f565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a3611f108261226d565b60019485019401611d51565b8015611f3357505050603591909155506001919050565b60009550505050505090565b600054610100900460ff16611b295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161063e565b6036548015801590611fd057506000603554115b1561215f5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557600160355461201591906125e4565b6040518263ffffffff1660e01b815260040161203391815260200190565b608060405180830381865afa158015612050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207491906127c5565b9050600082826020015143414460014361208e91906125e4565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6120ff9190612868565b90506036818154811061211457612114612738565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506106519050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106121d3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106121ff576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061221d57662386f26fc10000830492506010015b6305f5e1008310612235576305f5e100830492506008015b612710831061224957612710830492506004015b6064831061225b576064830492506002015b600a8310612267576001015b92915050565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612317926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526123a993929160040161287c565b600060405180830381600087803b1580156123c357600080fd5b505af11580156123d7573d6000803e3d6000fd5b5050505050565b6000602082840312156123f057600080fd5b5035919050565b6001600160a01b038116811461065157600080fd5b60008060006060848603121561242157600080fd5b833592506020840135612433816123f7565b91506040840135612443816123f7565b809150509250925092565b60005b83811015612469578181015183820152602001612451565b838111156113535750506000910152565b6000815180845261249281602086016020860161244e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061106d602083018461247a565b600080604083850312156124ea57600080fd5b8235915060208301356124fc816123f7565b809150509250929050565b60006020828403121561251957600080fd5b813561106d816123f7565b6fffffffffffffffffffffffffffffffff8116811461065157600080fd5b6000806040838503121561255557600080fd5b8235915060208301356124fc81612524565b60006020828403121561257957600080fd5b815161106d816123f7565b60006020828403121561259657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156125df576125df61259d565b500190565b6000828210156125f6576125f661259d565b500390565b6000845161260d81846020890161244e565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612649816001850160208a0161244e565b6001920191820152835161266481600284016020880161244e565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff808316818516818304811182151516156126a0576126a061259d565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806126fb576126fb6126a9565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127305761273061259d565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000608082840312156127d757600080fd5b6040516080810181811067ffffffffffffffff82111715612821577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825161282f816123f7565b815260208381015190820152604083015161284981612524565b6040820152606083015161285c81612524565b60608201529392505050565b600082612877576128776126a9565b500690565b6001600160a01b038416815267ffffffffffffffff831660208201526060604082015260006128ae606083018461247a565b9594505050505056fea164736f6c634300080f000a", - "deployedBytecode": "0x6080604052600436106101955760003560e01c806370a08231116100e1578063ab91f1901161008a578063d38dc7ee11610064578063d38dc7ee146104de578063d8fe7642146104fe578063dd215c5d1461054e578063facd743b1461056e57600080fd5b8063ab91f19014610472578063b7d636a5146104a2578063d0e30db0146104d657600080fd5b80638f09ade4116100bb5780638f09ade414610409578063946765fd14610429578063a51c9ace1461045d57600080fd5b806370a08231146103885780638129fc1c146103be57806382dae3aa146103d357600080fd5b80633a549046116101435780635a5447421161011d5780635a5447421461031f5780635df6a6bc1461033f5780636641ea081461035457600080fd5b80633a549046146102b45780633ee4d4a3146102c957806354fd4d50146102fd57600080fd5b80632e1a7d4d116101745780632e1a7d4d1461023e578063360864171461026057806336b834691461029457600080fd5b80621c2ff61461019a5780630f43a677146101eb5780630ff754ea1461020a575b600080fd5b3480156101a657600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101f757600080fd5b506036545b6040519081526020016101e2565b34801561021657600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b34801561024a57600080fd5b5061025e6102593660046123de565b61059e565b005b34801561026c57600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102a057600080fd5b5061025e6102af36600461240c565b610654565b3480156102c057600080fd5b506101ce6108c5565b3480156102d557600080fd5b506101ce7f000000000000000000000000000000000000000000000000000000000000000081565b34801561030957600080fd5b50610312610a83565b6040516101e291906124c4565b34801561032b57600080fd5b5061025e61033a3660046124d7565b610b26565b34801561034b57600080fd5b5061025e610dcf565b34801561036057600080fd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039457600080fd5b506101fc6103a3366004612507565b6001600160a01b031660009081526033602052604090205490565b3480156103ca57600080fd5b5061025e610e4e565b3480156103df57600080fd5b506103e8601481565b6040516fffffffffffffffffffffffffffffffff90911681526020016101e2565b34801561041557600080fd5b506103e86104243660046124d7565b610fc5565b34801561043557600080fd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561046957600080fd5b506103e8606481565b34801561047e57600080fd5b50610489620186a081565b60405167ffffffffffffffff90911681526020016101e2565b3480156104ae57600080fd5b506103e87f000000000000000000000000000000000000000000000000000000000000000081565b61025e611074565b3480156104ea57600080fd5b5061025e6104f9366004612542565b611080565b34801561050a57600080fd5b5061051e6105193660046123de565b611359565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101e2565b34801561055a57600080fd5b5061025e6105693660046124d7565b611478565b34801561057a57600080fd5b5061058e610589366004612507565b6117de565b60405190151581526020016101e2565b6105a6611864565b6105b033826118bd565b60006105cd335a8460405180602001604052806000815250611b0f565b9050806106475760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f656400000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5061065160018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d69190612567565b6001600160a01b0316336001600160a01b03161461075c5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161063e565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806108045760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161063e565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610868826fffffffffffffffffffffffffffffffff8316611b2f565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610a5e5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612584565b905060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d1de856c61099b8460016125cc565b6040518263ffffffff1660e01b81526004016109b991815260200190565b602060405180830381865afa1580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa9190612584565b9050804210610a4b576000610a0f82426125e4565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610a49576001600160a01b03935050505090565b505b50506038546001600160a01b0316919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b6060610aae7f0000000000000000000000000000000000000000000000000000000000000000611c63565b610ad77f0000000000000000000000000000000000000000000000000000000000000000611c63565b610b007f0000000000000000000000000000000000000000000000000000000000000000611c63565b604051602001610b12939291906125fb565b604051602081830303815290604052905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190612567565b6001600160a01b0316336001600160a01b031614610c2e5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161063e565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610cda5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161063e565b610d16827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166118bd565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610dd9611d21565b9050806106515760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161063e565b600054610100900460ff1615808015610e6e5750600054600160ff909116105b80610e885750303b158015610e88575060005460ff166001145b610efa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161063e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f60611f3f565b801561065157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff168061106d5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161063e565b9392505050565b61107e3334611b2f565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461111e5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161063e565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156111c75760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161063e565b6111cf611d21565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112759190612567565b90506112b3817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166118bd565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a3611353611fbc565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906113c35750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b6114355760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161063e565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190612567565b6001600160a01b0316336001600160a01b0316146115805760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161063e565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16101561162c5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161063e565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806116d45760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161063e565b600060646116e3601484612671565b6116ed91906126d8565b905060006116fb8284612707565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b60365460009081036117f257506000919050565b6001600160a01b03821661180857506000919050565b6001600160a01b038216600081815260376020526040902054603680549192918390811061183857611838612738565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b6002600154036118b65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161063e565b6002600155565b6001600160a01b0382166000908152603360205260409020548181101561194b5760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161063e565b61195582826125e4565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110801561199c575061199c836117de565b15611aef576036546000906119b3906001906125e4565b90508015611a6b576001600160a01b03841660009081526037602052604081205460368054919291849081106119eb576119eb612738565b600091825260209091200154603680546001600160a01b039092169250829184908110611a1a57611a1a612738565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611a9557611a95612767565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611b539083906125cc565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611b9d5750611b9b836117de565b155b15611aef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611aef57603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60606000611c708361218a565b600101905060008167ffffffffffffffff811115611c9057611c90612796565b6040519080825280601f01601f191660200182016040528015611cba576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611cc457509392505050565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f0000000000000000000000000000000000000000000000000000000000000000811015611f1c57600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611dd857506000846fffffffffffffffffffffffffffffffff16115b15611f1c5760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9091906127c5565b9150611eb28260000151856fffffffffffffffffffffffffffffffff16611b2f565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a3611f108261226d565b60019485019401611d51565b8015611f3357505050603591909155506001919050565b60009550505050505090565b600054610100900460ff16611b295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161063e565b6036548015801590611fd057506000603554115b1561215f5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557600160355461201591906125e4565b6040518263ffffffff1660e01b815260040161203391815260200190565b608060405180830381865afa158015612050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207491906127c5565b9050600082826020015143414460014361208e91906125e4565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6120ff9190612868565b90506036818154811061211457612114612738565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506106519050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106121d3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106121ff576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061221d57662386f26fc10000830492506010015b6305f5e1008310612235576305f5e100830492506008015b612710831061224957612710830492506004015b6064831061225b576064830492506002015b600a8310612267576001015b92915050565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612317926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526123a993929160040161287c565b600060405180830381600087803b1580156123c357600080fd5b505af11580156123d7573d6000803e3d6000fd5b5050505050565b6000602082840312156123f057600080fd5b5035919050565b6001600160a01b038116811461065157600080fd5b60008060006060848603121561242157600080fd5b833592506020840135612433816123f7565b91506040840135612443816123f7565b809150509250925092565b60005b83811015612469578181015183820152602001612451565b838111156113535750506000910152565b6000815180845261249281602086016020860161244e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061106d602083018461247a565b600080604083850312156124ea57600080fd5b8235915060208301356124fc816123f7565b809150509250929050565b60006020828403121561251957600080fd5b813561106d816123f7565b6fffffffffffffffffffffffffffffffff8116811461065157600080fd5b6000806040838503121561255557600080fd5b8235915060208301356124fc81612524565b60006020828403121561257957600080fd5b815161106d816123f7565b60006020828403121561259657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156125df576125df61259d565b500190565b6000828210156125f6576125f661259d565b500390565b6000845161260d81846020890161244e565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612649816001850160208a0161244e565b6001920191820152835161266481600284016020880161244e565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff808316818516818304811182151516156126a0576126a061259d565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806126fb576126fb6126a9565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127305761273061259d565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000608082840312156127d757600080fd5b6040516080810181811067ffffffffffffffff82111715612821577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825161282f816123f7565b815260208381015190820152604083015161284981612524565b6040820152606083015161285c81612524565b60608201529392505050565b600082612877576128776126a9565b500690565b6001600160a01b038416815267ffffffffffffffff831660208201526060604082015260006128ae606083018461247a565b9594505050505056fea164736f6c634300080f000a", - "devdoc": {}, - "userdoc": {}, + "numDeployments": 2, + "solcInputHash": "2bfb5c7b0997e32e15308fc369203bdc", + "metadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"_l2OutputOracle\",\"type\":\"address\"},{\"internalType\":\"contract KromaPortal\",\"name\":\"_portal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_securityCouncil\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedValidator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredBondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxUnbond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_roundDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"BondIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"name\":\"Bonded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"PendingBondAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"PendingBondReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"Unbonded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_UNBOND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PORTAL\",\"outputs\":[{\"internalType\":\"contract KromaPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REQUIRED_BOND_AMOUNT\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROUND_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECURITY_COUNCIL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAX_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAX_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_VALIDATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_REWARD_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"addPendingBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"_expiresAt\",\"type\":\"uint128\"}],\"name\":\"createBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"getBond\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Bond\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"getPendingBond\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"}],\"name\":\"increaseBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextValidator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"releasePendingBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unbond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@title ValidatorPool\",\"events\":{\"BondIncreased(uint256,address,uint128)\":{\"params\":{\"amount\":\"Amount of bond increased.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\"}},\"Bonded(address,uint256,uint128,uint128)\":{\"params\":{\"amount\":\"Amount of bonded.\",\"expiresAt\":\"The expiration timestamp of bond.\",\"outputIndex\":\"Index of the L2 checkpoint output index.\",\"submitter\":\"Address of submitter.\"}},\"PendingBondAdded(uint256,address,uint128)\":{\"params\":{\"amount\":\"Amount of bond added.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\"}},\"PendingBondReleased(uint256,address,address,uint128)\":{\"params\":{\"amount\":\"Amount of bond released.\",\"challenger\":\"Address of the challenger.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"recipient\":\"Address to receive amount from a pending bond.\"}},\"Unbonded(uint256,address,uint128)\":{\"params\":{\"amount\":\"Amount of unbonded.\",\"outputIndex\":\"Index of the L2 checkpoint output.\",\"recipient\":\"Address of the recipient.\"}}},\"kind\":\"dev\",\"methods\":{\"addPendingBond(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"balanceOf(address)\":{\"params\":{\"_addr\":\"Address of validator.\"},\"returns\":{\"_0\":\"Balance of given address.\"}},\"constructor\":{\"params\":{\"_l2OutputOracle\":\"Address of the L2OutputOracle.\",\"_maxUnbond\":\"The max number of unbonds when trying unbond.\",\"_portal\":\"Address of the KromaPortal.\",\"_requiredBondAmount\":\"The required bond amount.\",\"_roundDuration\":\"The duration of one submission round in seconds.\",\"_securityCouncil\":\"Address of the security council.\",\"_trustedValidator\":\"Address of the trusted validator.\"}},\"createBond(uint256,uint128)\":{\"params\":{\"_expiresAt\":\"The expiration timestamp of bond.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"getBond(uint256)\":{\"params\":{\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"The bond data.\"}},\"getPendingBond(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"},\"returns\":{\"_0\":\"Amount of the pending bond.\"}},\"increaseBond(uint256,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\"}},\"isValidator(address)\":{\"params\":{\"_addr\":\"Address of validator.\"},\"returns\":{\"_0\":\"Whether the given address is an active validator.\"}},\"nextValidator()\":{\"returns\":{\"_0\":\"The address of the validator.\"}},\"releasePendingBond(uint256,address,address)\":{\"params\":{\"_challenger\":\"Address of the challenger.\",\"_outputIndex\":\"Index of the L2 checkpoint output.\",\"_recipient\":\"Address to receive amount from a pending bond.\"}},\"validatorCount()\":{\"returns\":{\"_0\":\"The number of validators.\"}},\"withdraw(uint256)\":{\"params\":{\"_amount\":\"Amount to withdraw.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"_amount\":\"Amount to withdraw.\",\"_to\":\"Address to withdraw asset to.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"1.0.1\"}},\"version\":1},\"userdoc\":{\"events\":{\"BondIncreased(uint256,address,uint128)\":{\"notice\":\"Emitted when the bond is increased.\"},\"Bonded(address,uint256,uint128,uint128)\":{\"notice\":\"Emitted when a validator bonds.\"},\"PendingBondAdded(uint256,address,uint128)\":{\"notice\":\"Emitted when the pending bond is added.\"},\"PendingBondReleased(uint256,address,address,uint128)\":{\"notice\":\"Emitted when the pending bond is released(refunded).\"},\"Unbonded(uint256,address,uint128)\":{\"notice\":\"Emitted when a validator unbonds.\"}},\"kind\":\"user\",\"methods\":{\"L2_ORACLE()\":{\"notice\":\"The address of the L2OutputOracle contract. Can be updated via upgrade.\"},\"MAX_UNBOND()\":{\"notice\":\"The max number of unbonds when trying unbond.\"},\"PORTAL()\":{\"notice\":\"The address of the KromaPortal contract. Can be updated via upgrade.\"},\"REQUIRED_BOND_AMOUNT()\":{\"notice\":\"The required bond amount. Can be updated via upgrade.\"},\"ROUND_DURATION()\":{\"notice\":\"The duration of a submission round for one output (in seconds). Note that there are two submission rounds for an output: PRIORITY ROUND and PUBLIC ROUND.\"},\"SECURITY_COUNCIL()\":{\"notice\":\"The address of the SecurityCouncil contract. Can be updated via upgrade.\"},\"TAX_DENOMINATOR()\":{\"notice\":\"The denominator of the tax.\"},\"TAX_NUMERATOR()\":{\"notice\":\"The numerator of the tax.\"},\"TRUSTED_VALIDATOR()\":{\"notice\":\"The address of the trusted validator. Can be updated via upgrade.\"},\"VAULT_REWARD_GAS_LIMIT()\":{\"notice\":\"The gas limit to use when rewarding validator in the ValidatorRewardVault on L2. This value is measured through simulation.\"},\"addPendingBond(uint256,address)\":{\"notice\":\"Adds a pending bond to the challenge corresponding to the given output index and challenger address. The pending bond is added to the bond when the challenge is proven or challenger is timed out, or refunded when the challenge is canceled.\"},\"balanceOf(address)\":{\"notice\":\"Returns the balance of given address.\"},\"constructor\":{\"notice\":\"Constructs the ValidatorPool contract.\"},\"createBond(uint256,uint128)\":{\"notice\":\"Bond asset corresponding to the given output index. This function is called when submitting output.\"},\"deposit()\":{\"notice\":\"Deposit ETH to be used as bond.\"},\"getBond(uint256)\":{\"notice\":\"Returns the bond corresponding to the output index. Reverts if the bond does not exist.\"},\"getPendingBond(uint256,address)\":{\"notice\":\"Returns the pending bond corresponding to the output index and challenger address. Reverts if the pending bond does not exist.\"},\"increaseBond(uint256,address)\":{\"notice\":\"Increases the bond amount corresponding to the given output index by the pending bond amount. This is when taxes are charged, and note that taxes are a means of preventing collusive attacks by the asserter and challenger.\"},\"initialize()\":{\"notice\":\"Initializer.\"},\"isValidator(address)\":{\"notice\":\"Determines whether the given address is an active validator.\"},\"nextValidator()\":{\"notice\":\"Determines who can submit the L2 output next.\"},\"releasePendingBond(uint256,address,address)\":{\"notice\":\"Releases the corresponding pending bond to the given output index and challenger address if a challenge is canceled.\"},\"unbond()\":{\"notice\":\"Attempt to unbond. Reverts if unbond is not possible.\"},\"validatorCount()\":{\"notice\":\"Returns the number of validators.\"},\"version()\":{\"notice\":\"Semantic version.\"},\"withdraw(uint256)\":{\"notice\":\"Withdraw a given amount.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Withdraw a given amount.\"}},\"notice\":\"The ValidatorPool determines whether the validator is present and manages the validator's deposit.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L1/ValidatorPool.sol\":\"ValidatorPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":@rari-capital/solmate/=node_modules/@rari-capital/solmate/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/L1/IZKMerkleTrie.sol\":{\"keccak256\":\"0xc0db9a82935f3ae1e0137e8752be690244fdf939f6adc262b82a9daa76ef3c91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26b5651a98c1a679ba8c945ba595c94a9b8ed758a2e8bb2baaeb571967f0820f\",\"dweb:/ipfs/Qmc42qGNY69oMmSdT6CxCtYsjmHHUmBnnuqgZfh9QmYMAv\"]},\"contracts/L1/KromaPortal.sol\":{\"keccak256\":\"0x83129322b378176f0135b825b471363c214961990ab1b6ef9e0140f800ee2d4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ce79f809b7334293fae5b17cc8fea4ddd027d95ceb2010648ff19faa02ff2e6\",\"dweb:/ipfs/QmZUBW5E4dpuSCBDZRBAaU7UJLPhhz64oZBppFA9YBTXRE\"]},\"contracts/L1/L2OutputOracle.sol\":{\"keccak256\":\"0xd554f906cf8b9e009a783d57e1f800b166a73991bda164731d3972ad06a2eb59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4abb17261b44a0aa2304daf8fdc93b9d23e2a54b06f0de4d4e6bfa3d6b8ad2b2\",\"dweb:/ipfs/QmZUXgTSrcNfu23V7G3Zq4jVFHQUi762zw5GXnFDZFHDxY\"]},\"contracts/L1/ResourceMetering.sol\":{\"keccak256\":\"0xbc18cbf0e4fa8c9a17e04be6bf8e59bf5db5e71622f15fc15eb359db598abc59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29aa63d99de92760ebf0adfed473d2c6d6a52e4727e29f6fbfedd35c6c2e7100\",\"dweb:/ipfs/QmSVRRqcfhgbMvPztPdNvEhc7nakz5qBdKLddpXNvMRWjL\"]},\"contracts/L1/SystemConfig.sol\":{\"keccak256\":\"0xbc8487f1e9b96364a01bad8c5eb0e0d89cfe258e7b895ea73202bc8accc987cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf50a6c5b2baa5057d6a620c8c8bf12b2319903435eb98a0933ea4a3b04b2bed\",\"dweb:/ipfs/QmTPSHVNEazbNC1apc2faqFELDzRFdfefYPNAuWtX4FrZj\"]},\"contracts/L1/ValidatorPool.sol\":{\"keccak256\":\"0x9e014d2da1c64d16b379d8c3e5d4977484536b954d960ab8b89f377b5b44da79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cda04cf05ea44da5c7e9e94aae905ea5a4c1fb391bcd18e789546225529b70ff\",\"dweb:/ipfs/QmbggkN6YFZAEaBpvoQgEdVtsy1uFM1jJPHSwr1MF5jJAF\"]},\"contracts/L1/ZKMerkleTrie.sol\":{\"keccak256\":\"0xdd53226500d7559f83c145e345d640fb3ebdc4790c1d19a0770966eb98b771b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d70f18e6a7eaf07923611903477922bd59415945bfffad062ac60792262c6b74\",\"dweb:/ipfs/QmUDxyM24Sx3zAZJaU7HqhiWdAYCW7QLaALGS6nv3xvCXE\"]},\"contracts/L1/ZKTrieHasher.sol\":{\"keccak256\":\"0x8376cd6c3222d753cc9df6b412e7d0eeb2704cc3a47c3d55886bb4eca18893a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3900f900582bcb5ff17d65887a38776412e27838b62ade1389d727f859cbaf0\",\"dweb:/ipfs/QmYL7V3Ta6cJiQTcziMYwdurcUKhwbqK7Az21H19Vs6W41\"]},\"contracts/L2/L2StandardBridge.sol\":{\"keccak256\":\"0xe3ddda01f4ac1361aa47034ddf4a5b1edf18dd7fc620e850be0c52d438fd98e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a968bb7673855ac0c6fb7982e13e6a9c803f4cad3bf603daaf76f368d82d1c5\",\"dweb:/ipfs/QmTW3SK6D9pwj1QR8jKhWQawYto448pme5PP8u8Z2EW6qq\"]},\"contracts/L2/ValidatorRewardVault.sol\":{\"keccak256\":\"0x31cdaec7c22f4a7ca697b6b854f76832a2b71e5dfdad5fadb64942ce25355fca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c15c50493b0a9aa3f471aa56bc376e2882be135a7fc4cf3058f6ac1fe871f2\",\"dweb:/ipfs/QmcR1NoZSaj4GAUfbycy2MsSkCjaVjZbPL9QayvN5mA2o8\"]},\"contracts/libraries/Arithmetic.sol\":{\"keccak256\":\"0x268a178c83f88adac015bb02ea58e40d63187830bcdd7063a945804607b55570\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb3fd08e062e074ba49f596a82417997ef46c29e7dd9cb53ddb3192ac4ce4e0d\",\"dweb:/ipfs/QmZMRCQocGuLEkZeKLXWbp6zran3kYXzJQr6fPZF2xRcbx\"]},\"contracts/libraries/Burn.sol\":{\"keccak256\":\"0x9af535d46ec803e48cf7978cf9af29f259b39f56f929574ca4fcb292e0397ed7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8aca0112f1d20d62d154fa3304d511d51a2a4b86c5a28c69c932263f6a90a11\",\"dweb:/ipfs/QmPhZDd9sLqcoauJ8DA7R5V2gD8qFXsn1gmg63skBV9ZVn\"]},\"contracts/libraries/Bytes.sol\":{\"keccak256\":\"0x6c1cfe3d09a093f5946a87a9a60e469d4510e0749e218c4247b214fc09900b33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1fe4dd501f443a4a253b3940f0931732fc5074b57c8c9a5ca33a76e09de74\",\"dweb:/ipfs/QmQca2QpGggadP85yJyWC1teJxPxmKiKwdnA75Rrr7jygz\"]},\"contracts/libraries/Bytes32.sol\":{\"keccak256\":\"0x049480281697fdb3e7cd108523813a5d5d3b25fdfbad5a5007d9b9590e64d956\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89eebd28a45c4987226a10f023ddf2413e58c7593fe6fcc71cebbf18cc915a2f\",\"dweb:/ipfs/QmX9FEyvhXsxnxc1wdPGjA4kNGQvM4MN99krqEF7o5JGqc\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x992c2b37ecaf845c4e068e8de2bd5124712ed9dda77ee561d05c94ce4d4914fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd6846a4c6615c997546ec8260c77cf2ba3bf0a30fd92d8f76ed1c4940eea90c\",\"dweb:/ipfs/QmR86PTdT25HTj78Ja58UUmgLvMYrNX71zauNz46DArwxz\"]},\"contracts/libraries/Encoding.sol\":{\"keccak256\":\"0xe16e48eabffd0396f87f236e464ba07db03a958692e0c9155ed5bff02729fa79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada78ee0fa9b1d0d8842882039b4c02f0eb74969542c9dce8d9bff6ef62bf8ab\",\"dweb:/ipfs/QmQYbW8Ut15iQDMr31VbZsCzWYWCmY2fGCBjMUoo7JTmzE\"]},\"contracts/libraries/Hashing.sol\":{\"keccak256\":\"0x546a95ba970b8220268b74a310e659fbead98e13dacdc553f23e11ac9a1dc94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ba62679040a3a3af68ad3683765d1b31eac5929bbfd28ad462ac00f2fd6f1c3\",\"dweb:/ipfs/QmbibaWwK6E2EMZzcuvKEXm46W5rs9J2H6kfbiBCPYuo6o\"]},\"contracts/libraries/NodeReader.sol\":{\"keccak256\":\"0x3f2345546b715479dd41ea0f999c801c8aefc057b14f8c57ee35cce78e139b44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d15781b5c038b153f42237eddf2cd0d9e67536b8cd3a14e56297893b711e6af\",\"dweb:/ipfs/QmRroSVS6fRmk3bxkWuvNrEB8JqH2MCgmZQxJkhTFE3eds\"]},\"contracts/libraries/Predeploys.sol\":{\"keccak256\":\"0xfeeafa253dba978cab979afc2d7506eeb5aaf89f0256b048c972a84902b139ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96e108a95cb5b043f02f4d6bc50f5ac98bd75da4292c615784ba78fba25718a2\",\"dweb:/ipfs/QmXXNWwdyaNx9MXbQRHViAMmzN8mrd2Y3Xd3DBPE23Wz3J\"]},\"contracts/libraries/SafeCall.sol\":{\"keccak256\":\"0x9c9e20b64d509725e222e6973a9ce26ff68756098070a770e5e0c43d0f899a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9e198e00b17ac6bf2ad41f5a16242f458649eea089e591d88dbaba2a5d133b3\",\"dweb:/ipfs/QmeHvHgAGWjRseSQUrj5BrvHKHFjEg3buvkGkCLDd5aQMm\"]},\"contracts/libraries/Types.sol\":{\"keccak256\":\"0xe3440fb48334bd6ec8478c2dac2b583c6c425fc1457d5c3380e44a6fc7d477d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acec800b64f6213d500c22eb86560c40a7c9fff3f66ad397de17d9e85de209b\",\"dweb:/ipfs/Qmczy9W55zohWoTgg4dv8rCN3zxhw5i2MGbN8UkLmNbSDQ\"]},\"contracts/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x5aa9d21c5b41c9786f23153f819d561ae809a1d55c7b0d423dfeafdfbacedc78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://921c44e6a0982b9a4011900fda1bda2c06b7a85894967de98b407a83fe9f90c0\",\"dweb:/ipfs/QmSsHLKDUQ82kpKdqB6VntVGKuPDb4W9VdotsubuqWBzio\"]},\"contracts/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0xa50cdacf266549170d36cc35000c075f177e426f4e1c26b4338b9b75d5656ef3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://073c44a92c7b6ddda3144412dbeee0e86435866fec2a05f6493c95d94dd09c35\",\"dweb:/ipfs/QmcM7hTxmdyUxHFYBCXvd9WFZdmNwpNemAvmspaEJu2DqM\"]},\"contracts/universal/FeeVault.sol\":{\"keccak256\":\"0x7fba013982f8380fd8ca97f54a63cbccf6f166a9503892e10a48f1eb1cfb01b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9add1aa8c613f73c1564e40d3d40196e1eca381ca28696ecf1712ba888da6fa\",\"dweb:/ipfs/Qmebc6v7ff4sWxTR1i93WXQRcXwsmDzH8S4wxv1bqVZEiW\"]},\"contracts/universal/IKromaMintableERC20.sol\":{\"keccak256\":\"0x1a95268117456ddb1e0a16eb2ba773b9540c7b8b9520e66d4d167ddc6ace6fcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f93d2e6f5121a3dfe272e399d6774e0584d59a20c4f63db78e5a0b644d92fa59\",\"dweb:/ipfs/QmbwM7kCpmwZs348jCeNwF86H8SDBURsGCGCUCyoSS1ffy\"]},\"contracts/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"contracts/universal/KromaMintableERC20.sol\":{\"keccak256\":\"0x30dccac5fe2d7c75bbe1411004ad03c40afe6dce8c7d22a89abb783f74bd2674\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de3f8062e170498d71069529cb83681b0acaeb41643892c092111b07df2895f6\",\"dweb:/ipfs/QmNsZa5vHYQ8eG3dQ7PjkfweXzxKc6nbDj9P455Mp1Waxx\"]},\"contracts/universal/StandardBridge.sol\":{\"keccak256\":\"0x97b07e61f135b77d6b5a7f27174cee21bb6a958408a773929eeee18501387d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e75747e512e56f85205822d3d9972e9a9a8e7213eae18f3e958409bf72f60e28\",\"dweb:/ipfs/QmSeF6sWzS8pQCWPiTuDLUXSWFELpohbdtrcbjCLnF5hEG\"]},\"contracts/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed\",\"dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]}},\"version\":1}", + "bytecode": "0x6101606040523480156200001257600080fd5b5060405162002b4d38038062002b4d83398101604081905262000035916200024f565b6001600160a01b0380881660805286811660a05285811660c052841660e0526001600160801b038316610100526101208290526101408190526200007862000085565b50505050505050620002d6565b600054610100900460ff1615808015620000a65750600054600160ff909116105b80620000d65750620000c330620001b760201b6200193f1760201c565b158015620000d6575060005460ff166001145b6200013f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000163576000805461ff0019166101001790555b6200016d620001c6565b8015620001b4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620002335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000136565b60018055565b6001600160a01b0381168114620001b457600080fd5b600080600080600080600060e0888a0312156200026b57600080fd5b8751620002788162000239565b60208901519097506200028b8162000239565b60408901519096506200029e8162000239565b6060890151909550620002b18162000239565b809450506080880151925060a0880151915060c0880151905092959891949750929550565b60805160a05160c05160e051610100516101205161014051612789620003c4600039600081816103c50152610ba001526000818161049a0152611d7f01526000818161051301528181610dca01528181610e4b015281816113670152818161139f01528181611a430152611c410152600081816103060152610bee01526000818161029d015281816118550152611c8e01526000818161022701526121ca0152600081816101b7015281816107e301528181610a6a01528181610af801528181610c1201528181611175015281816112ec0152818161156401528181611e49015261200501526127896000f3fe6080604052600436106101a05760003560e01c806370a08231116100e1578063ab91f1901161008a578063d38dc7ee11610064578063d38dc7ee1461053d578063d8fe76421461055d578063dd215c5d146105ad578063facd743b146105cd57600080fd5b8063ab91f190146104d1578063b7d636a514610501578063d0e30db01461053557600080fd5b80638f09ade4116100bb5780638f09ade414610468578063946765fd14610488578063a51c9ace146104bc57600080fd5b806370a08231146103e75780638129fc1c1461041d57806382dae3aa1461043257600080fd5b806336b834691161014e57806354fd4d501161012857806354fd4d50146103285780635a5447421461037e5780635df6a6bc1461039e5780636641ea08146103b357600080fd5b806336b83469146102bf5780633a549046146102df5780633ee4d4a3146102f457600080fd5b8063205c28781161017f578063205c2878146102495780632e1a7d4d1461026b578063360864171461028b57600080fd5b80621c2ff6146101a55780630f43a677146101f65780630ff754ea14610215575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020257600080fd5b506036545b6040519081526020016101ed565b34801561022157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561025557600080fd5b5061026961026436600461233c565b6105fd565b005b34801561027757600080fd5b50610269610286366004612368565b610730565b34801561029757600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cb57600080fd5b506102696102da366004612381565b6107e1565b3480156102eb57600080fd5b506101d9610a52565b34801561030057600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561033457600080fd5b506103716040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516101ed919061242e565b34801561038a57600080fd5b50610269610399366004612441565b610c10565b3480156103aa57600080fd5b50610269610eb9565b3480156103bf57600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f357600080fd5b50610207610402366004612471565b6001600160a01b031660009081526033602052604090205490565b34801561042957600080fd5b50610269610f38565b34801561043e57600080fd5b50610447601481565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ed565b34801561047457600080fd5b50610447610483366004612441565b6110af565b34801561049457600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000081565b3480156104c857600080fd5b50610447606481565b3480156104dd57600080fd5b506104e8620186a081565b60405167ffffffffffffffff90911681526020016101ed565b34801561050d57600080fd5b506104477f000000000000000000000000000000000000000000000000000000000000000081565b61026961115e565b34801561054957600080fd5b506102696105583660046124ac565b61116a565b34801561056957600080fd5b5061057d610578366004612368565b611443565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ed565b3480156105b957600080fd5b506102696105c8366004612441565b611562565b3480156105d957600080fd5b506105ed6105e8366004612471565b6118c8565b60405190151581526020016101ed565b61060561194e565b6001600160a01b0382166106865760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61069033826119a7565b60006106ad835a8460405180602001604052806000815250611bf9565b9050806107225760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b5061072c60018055565b5050565b61073861194e565b61074233826119a7565b600061075f335a8460405180602001604052806000815250611bf9565b9050806107d45760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b506107de60018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086391906124d1565b6001600160a01b0316336001600160a01b0316146108e95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806109915760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690556109f5826fffffffffffffffffffffffffffffffff8316611c19565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610beb5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aea91906124ee565b905060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d1de856c610b28846001612536565b6040518263ffffffff1660e01b8152600401610b4691815260200190565b602060405180830381865afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8791906124ee565b9050804210610bd8576000610b9c824261254e565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610bd6576001600160a01b03935050505090565b505b50506038546001600160a01b0316919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906124d1565b6001600160a01b0316336001600160a01b031614610d185760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dc45760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b610e00827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166119a7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ec3611d4d565b9050806107de5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161067d565b600054610100900460ff1615808015610f585750600054600160ff909116105b80610f725750303b158015610f72575060005460ff166001145b610fe45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161067d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561104257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61104a611f6b565b80156107de57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111575760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b9392505050565b6111683334611c19565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112085760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161067d565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156112b15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161067d565b6112b9611d4d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561133b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135f91906124d1565b905061139d817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166119a7565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361143d611fe8565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906114ad5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61151f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161067d565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e491906124d1565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156117165760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806117be5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b600060646117cd601484612565565b6117d791906125cc565b905060006117e582846125fb565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b60365460009081036118dc57506000919050565b6001600160a01b0382166118f257506000919050565b6001600160a01b03821660008181526037602052604090205460368054919291839081106119225761192261262c565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b6002600154036119a05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161067d565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611a355760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161067d565b611a3f828261254e565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1681108015611a865750611a86836118c8565b15611bd957603654600090611a9d9060019061254e565b90508015611b55576001600160a01b0384166000908152603760205260408120546036805491929184908110611ad557611ad561262c565b600091825260209091200154603680546001600160a01b039092169250829184908110611b0457611b0461262c565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611b7f57611b7f61265b565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611c3d908390612536565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611c875750611c85836118c8565b155b15611bd9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611bd957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f0000000000000000000000000000000000000000000000000000000000000000811015611f4857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611e0457506000846fffffffffffffffffffffffffffffffff16115b15611f485760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061268a565b9150611ede8260000151856fffffffffffffffffffffffffffffffff16611c19565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a3611f3c826121b6565b60019485019401611d7d565b8015611f5f57505050603591909155506001919050565b60009550505050505090565b600054610100900460ff16611c135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161067d565b6036548015801590611ffc57506000603554115b1561218b5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae5576001603554612041919061254e565b6040518263ffffffff1660e01b815260040161205f91815260200190565b608060405180830381865afa15801561207c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a0919061268a565b905060008282602001514341446001436120ba919061254e565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c61212b919061272d565b9050603681815481106121405761214061262c565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506107de9050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612260926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526122f2939291600401612741565b600060405180830381600087803b15801561230c57600080fd5b505af1158015612320573d6000803e3d6000fd5b5050505050565b6001600160a01b03811681146107de57600080fd5b6000806040838503121561234f57600080fd5b823561235a81612327565b946020939093013593505050565b60006020828403121561237a57600080fd5b5035919050565b60008060006060848603121561239657600080fd5b8335925060208401356123a881612327565b915060408401356123b881612327565b809150509250925092565b6000815180845260005b818110156123e9576020818501810151868301820152016123cd565b818111156123fb576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061115760208301846123c3565b6000806040838503121561245457600080fd5b82359150602083013561246681612327565b809150509250929050565b60006020828403121561248357600080fd5b813561115781612327565b6fffffffffffffffffffffffffffffffff811681146107de57600080fd5b600080604083850312156124bf57600080fd5b8235915060208301356124668161248e565b6000602082840312156124e357600080fd5b815161115781612327565b60006020828403121561250057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561254957612549612507565b500190565b60008282101561256057612560612507565b500390565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561259457612594612507565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806125ef576125ef61259d565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561262457612624612507565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561269c57600080fd5b6040516080810181811067ffffffffffffffff821117156126e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516126f481612327565b815260208381015190820152604083015161270e8161248e565b604082015260608301516127218161248e565b60608201529392505050565b60008261273c5761273c61259d565b500690565b6001600160a01b038416815267ffffffffffffffff8316602082015260606040820152600061277360608301846123c3565b9594505050505056fea164736f6c634300080f000a", + "deployedBytecode": "0x6080604052600436106101a05760003560e01c806370a08231116100e1578063ab91f1901161008a578063d38dc7ee11610064578063d38dc7ee1461053d578063d8fe76421461055d578063dd215c5d146105ad578063facd743b146105cd57600080fd5b8063ab91f190146104d1578063b7d636a514610501578063d0e30db01461053557600080fd5b80638f09ade4116100bb5780638f09ade414610468578063946765fd14610488578063a51c9ace146104bc57600080fd5b806370a08231146103e75780638129fc1c1461041d57806382dae3aa1461043257600080fd5b806336b834691161014e57806354fd4d501161012857806354fd4d50146103285780635a5447421461037e5780635df6a6bc1461039e5780636641ea08146103b357600080fd5b806336b83469146102bf5780633a549046146102df5780633ee4d4a3146102f457600080fd5b8063205c28781161017f578063205c2878146102495780632e1a7d4d1461026b578063360864171461028b57600080fd5b80621c2ff6146101a55780630f43a677146101f65780630ff754ea14610215575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020257600080fd5b506036545b6040519081526020016101ed565b34801561022157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561025557600080fd5b5061026961026436600461233c565b6105fd565b005b34801561027757600080fd5b50610269610286366004612368565b610730565b34801561029757600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cb57600080fd5b506102696102da366004612381565b6107e1565b3480156102eb57600080fd5b506101d9610a52565b34801561030057600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561033457600080fd5b506103716040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516101ed919061242e565b34801561038a57600080fd5b50610269610399366004612441565b610c10565b3480156103aa57600080fd5b50610269610eb9565b3480156103bf57600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f357600080fd5b50610207610402366004612471565b6001600160a01b031660009081526033602052604090205490565b34801561042957600080fd5b50610269610f38565b34801561043e57600080fd5b50610447601481565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ed565b34801561047457600080fd5b50610447610483366004612441565b6110af565b34801561049457600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000081565b3480156104c857600080fd5b50610447606481565b3480156104dd57600080fd5b506104e8620186a081565b60405167ffffffffffffffff90911681526020016101ed565b34801561050d57600080fd5b506104477f000000000000000000000000000000000000000000000000000000000000000081565b61026961115e565b34801561054957600080fd5b506102696105583660046124ac565b61116a565b34801561056957600080fd5b5061057d610578366004612368565b611443565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ed565b3480156105b957600080fd5b506102696105c8366004612441565b611562565b3480156105d957600080fd5b506105ed6105e8366004612471565b6118c8565b60405190151581526020016101ed565b61060561194e565b6001600160a01b0382166106865760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61069033826119a7565b60006106ad835a8460405180602001604052806000815250611bf9565b9050806107225760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b5061072c60018055565b5050565b61073861194e565b61074233826119a7565b600061075f335a8460405180602001604052806000815250611bf9565b9050806107d45760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b506107de60018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086391906124d1565b6001600160a01b0316336001600160a01b0316146108e95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806109915760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690556109f5826fffffffffffffffffffffffffffffffff8316611c19565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610beb5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aea91906124ee565b905060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d1de856c610b28846001612536565b6040518263ffffffff1660e01b8152600401610b4691815260200190565b602060405180830381865afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8791906124ee565b9050804210610bd8576000610b9c824261254e565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610bd6576001600160a01b03935050505090565b505b50506038546001600160a01b0316919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906124d1565b6001600160a01b0316336001600160a01b031614610d185760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dc45760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b610e00827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166119a7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ec3611d4d565b9050806107de5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161067d565b600054610100900460ff1615808015610f585750600054600160ff909116105b80610f725750303b158015610f72575060005460ff166001145b610fe45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161067d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561104257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61104a611f6b565b80156107de57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111575760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b9392505050565b6111683334611c19565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112085760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161067d565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156112b15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161067d565b6112b9611d4d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561133b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135f91906124d1565b905061139d817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff166119a7565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361143d611fe8565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906114ad5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61151f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161067d565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e491906124d1565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156117165760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806117be5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b600060646117cd601484612565565b6117d791906125cc565b905060006117e582846125fb565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b60365460009081036118dc57506000919050565b6001600160a01b0382166118f257506000919050565b6001600160a01b03821660008181526037602052604090205460368054919291839081106119225761192261262c565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b6002600154036119a05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161067d565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611a355760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161067d565b611a3f828261254e565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1681108015611a865750611a86836118c8565b15611bd957603654600090611a9d9060019061254e565b90508015611b55576001600160a01b0384166000908152603760205260408120546036805491929184908110611ad557611ad561262c565b600091825260209091200154603680546001600160a01b039092169250829184908110611b0457611b0461262c565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611b7f57611b7f61265b565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611c3d908390612536565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611c875750611c85836118c8565b155b15611bd9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611bd957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f0000000000000000000000000000000000000000000000000000000000000000811015611f4857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611e0457506000846fffffffffffffffffffffffffffffffff16115b15611f485760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061268a565b9150611ede8260000151856fffffffffffffffffffffffffffffffff16611c19565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a3611f3c826121b6565b60019485019401611d7d565b8015611f5f57505050603591909155506001919050565b60009550505050505090565b600054610100900460ff16611c135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161067d565b6036548015801590611ffc57506000603554115b1561218b5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae5576001603554612041919061254e565b6040518263ffffffff1660e01b815260040161205f91815260200190565b608060405180830381865afa15801561207c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a0919061268a565b905060008282602001514341446001436120ba919061254e565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c61212b919061272d565b9050603681815481106121405761214061262c565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506107de9050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612260926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526122f2939291600401612741565b600060405180830381600087803b15801561230c57600080fd5b505af1158015612320573d6000803e3d6000fd5b5050505050565b6001600160a01b03811681146107de57600080fd5b6000806040838503121561234f57600080fd5b823561235a81612327565b946020939093013593505050565b60006020828403121561237a57600080fd5b5035919050565b60008060006060848603121561239657600080fd5b8335925060208401356123a881612327565b915060408401356123b881612327565b809150509250925092565b6000815180845260005b818110156123e9576020818501810151868301820152016123cd565b818111156123fb576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061115760208301846123c3565b6000806040838503121561245457600080fd5b82359150602083013561246681612327565b809150509250929050565b60006020828403121561248357600080fd5b813561115781612327565b6fffffffffffffffffffffffffffffffff811681146107de57600080fd5b600080604083850312156124bf57600080fd5b8235915060208301356124668161248e565b6000602082840312156124e357600080fd5b815161115781612327565b60006020828403121561250057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561254957612549612507565b500190565b60008282101561256057612560612507565b500390565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561259457612594612507565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806125ef576125ef61259d565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561262457612624612507565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561269c57600080fd5b6040516080810181811067ffffffffffffffff821117156126e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516126f481612327565b815260208381015190820152604083015161270e8161248e565b604082015260608301516127218161248e565b60608201529392505050565b60008261273c5761273c61259d565b500690565b6001600160a01b038416815267ffffffffffffffff8316602082015260606040820152600061277360608301846123c3565b9594505050505056fea164736f6c634300080f000a", + "devdoc": { + "version": 1, + "kind": "dev", + "methods": { + "addPendingBond(uint256,address)": { + "params": { + "_challenger": "Address of the challenger.", + "_outputIndex": "Index of the L2 checkpoint output." + } + }, + "balanceOf(address)": { + "params": { + "_addr": "Address of validator." + }, + "returns": { + "_0": "Balance of given address." + } + }, + "constructor": { + "params": { + "_l2OutputOracle": "Address of the L2OutputOracle.", + "_maxUnbond": "The max number of unbonds when trying unbond.", + "_portal": "Address of the KromaPortal.", + "_requiredBondAmount": "The required bond amount.", + "_roundDuration": "The duration of one submission round in seconds.", + "_securityCouncil": "Address of the security council.", + "_trustedValidator": "Address of the trusted validator." + } + }, + "createBond(uint256,uint128)": { + "params": { + "_expiresAt": "The expiration timestamp of bond.", + "_outputIndex": "Index of the L2 checkpoint output." + } + }, + "getBond(uint256)": { + "params": { + "_outputIndex": "Index of the L2 checkpoint output." + }, + "returns": { + "_0": "The bond data." + } + }, + "getPendingBond(uint256,address)": { + "params": { + "_challenger": "Address of the challenger.", + "_outputIndex": "Index of the L2 checkpoint output." + }, + "returns": { + "_0": "Amount of the pending bond." + } + }, + "increaseBond(uint256,address)": { + "params": { + "_challenger": "Address of the challenger.", + "_outputIndex": "Index of the L2 checkpoint output." + } + }, + "isValidator(address)": { + "params": { + "_addr": "Address of validator." + }, + "returns": { + "_0": "Whether the given address is an active validator." + } + }, + "nextValidator()": { + "returns": { + "_0": "The address of the validator." + } + }, + "releasePendingBond(uint256,address,address)": { + "params": { + "_challenger": "Address of the challenger.", + "_outputIndex": "Index of the L2 checkpoint output.", + "_recipient": "Address to receive amount from a pending bond." + } + }, + "validatorCount()": { + "returns": { + "_0": "The number of validators." + } + }, + "withdraw(uint256)": { + "params": { + "_amount": "Amount to withdraw." + } + }, + "withdrawTo(address,uint256)": { + "params": { + "_amount": "Amount to withdraw.", + "_to": "Address to withdraw asset to." + } + } + }, + "events": { + "BondIncreased(uint256,address,uint128)": { + "params": { + "amount": "Amount of bond increased.", + "challenger": "Address of the challenger.", + "outputIndex": "Index of the L2 checkpoint output." + } + }, + "Bonded(address,uint256,uint128,uint128)": { + "params": { + "amount": "Amount of bonded.", + "expiresAt": "The expiration timestamp of bond.", + "outputIndex": "Index of the L2 checkpoint output index.", + "submitter": "Address of submitter." + } + }, + "PendingBondAdded(uint256,address,uint128)": { + "params": { + "amount": "Amount of bond added.", + "challenger": "Address of the challenger.", + "outputIndex": "Index of the L2 checkpoint output." + } + }, + "PendingBondReleased(uint256,address,address,uint128)": { + "params": { + "amount": "Amount of bond released.", + "challenger": "Address of the challenger.", + "outputIndex": "Index of the L2 checkpoint output.", + "recipient": "Address to receive amount from a pending bond." + } + }, + "Unbonded(uint256,address,uint128)": { + "params": { + "amount": "Amount of unbonded.", + "outputIndex": "Index of the L2 checkpoint output.", + "recipient": "Address of the recipient." + } + } + } + }, + "userdoc": { + "version": 1, + "kind": "user", + "methods": { + "L2_ORACLE()": { + "notice": "The address of the L2OutputOracle contract. Can be updated via upgrade." + }, + "MAX_UNBOND()": { + "notice": "The max number of unbonds when trying unbond." + }, + "PORTAL()": { + "notice": "The address of the KromaPortal contract. Can be updated via upgrade." + }, + "REQUIRED_BOND_AMOUNT()": { + "notice": "The required bond amount. Can be updated via upgrade." + }, + "ROUND_DURATION()": { + "notice": "The duration of a submission round for one output (in seconds). Note that there are two submission rounds for an output: PRIORITY ROUND and PUBLIC ROUND." + }, + "SECURITY_COUNCIL()": { + "notice": "The address of the SecurityCouncil contract. Can be updated via upgrade." + }, + "TAX_DENOMINATOR()": { + "notice": "The denominator of the tax." + }, + "TAX_NUMERATOR()": { + "notice": "The numerator of the tax." + }, + "TRUSTED_VALIDATOR()": { + "notice": "The address of the trusted validator. Can be updated via upgrade." + }, + "VAULT_REWARD_GAS_LIMIT()": { + "notice": "The gas limit to use when rewarding validator in the ValidatorRewardVault on L2. This value is measured through simulation." + }, + "addPendingBond(uint256,address)": { + "notice": "Adds a pending bond to the challenge corresponding to the given output index and challenger address. The pending bond is added to the bond when the challenge is proven or challenger is timed out, or refunded when the challenge is canceled." + }, + "balanceOf(address)": { + "notice": "Returns the balance of given address." + }, + "constructor": { + "notice": "Constructs the ValidatorPool contract." + }, + "createBond(uint256,uint128)": { + "notice": "Bond asset corresponding to the given output index. This function is called when submitting output." + }, + "deposit()": { + "notice": "Deposit ETH to be used as bond." + }, + "getBond(uint256)": { + "notice": "Returns the bond corresponding to the output index. Reverts if the bond does not exist." + }, + "getPendingBond(uint256,address)": { + "notice": "Returns the pending bond corresponding to the output index and challenger address. Reverts if the pending bond does not exist." + }, + "increaseBond(uint256,address)": { + "notice": "Increases the bond amount corresponding to the given output index by the pending bond amount. This is when taxes are charged, and note that taxes are a means of preventing collusive attacks by the asserter and challenger." + }, + "initialize()": { + "notice": "Initializer." + }, + "isValidator(address)": { + "notice": "Determines whether the given address is an active validator." + }, + "nextValidator()": { + "notice": "Determines who can submit the L2 output next." + }, + "releasePendingBond(uint256,address,address)": { + "notice": "Releases the corresponding pending bond to the given output index and challenger address if a challenge is canceled." + }, + "unbond()": { + "notice": "Attempt to unbond. Reverts if unbond is not possible." + }, + "validatorCount()": { + "notice": "Returns the number of validators." + }, + "version()": { + "notice": "Semantic version." + }, + "withdraw(uint256)": { + "notice": "Withdraw a given amount." + }, + "withdrawTo(address,uint256)": { + "notice": "Withdraw a given amount." + } + }, + "events": { + "BondIncreased(uint256,address,uint128)": { + "notice": "Emitted when the bond is increased." + }, + "Bonded(address,uint256,uint128,uint128)": { + "notice": "Emitted when a validator bonds." + }, + "PendingBondAdded(uint256,address,uint128)": { + "notice": "Emitted when the pending bond is added." + }, + "PendingBondReleased(uint256,address,address,uint128)": { + "notice": "Emitted when the pending bond is released(refunded)." + }, + "Unbonded(uint256,address,uint128)": { + "notice": "Emitted when a validator unbonds." + } + }, + "notice": "The ValidatorPool determines whether the validator is present and manages the validator's deposit." + }, "storageLayout": { "storage": [ { - "astId": 22476, + "astId": 109216, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "_initialized", "offset": 0, @@ -622,7 +878,7 @@ "type": "t_uint8" }, { - "astId": 22479, + "astId": 109219, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "_initializing", "offset": 1, @@ -630,7 +886,7 @@ "type": "t_bool" }, { - "astId": 22779, + "astId": 109519, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "_status", "offset": 0, @@ -638,7 +894,7 @@ "type": "t_uint256" }, { - "astId": 22848, + "astId": 109588, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "__gap", "offset": 0, @@ -646,7 +902,7 @@ "type": "t_array(t_uint256)49_storage" }, { - "astId": 4177, + "astId": 48749, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "balances", "offset": 0, @@ -654,15 +910,15 @@ "type": "t_mapping(t_address,t_uint256)" }, { - "astId": 4183, + "astId": 48755, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "bonds", "offset": 0, "slot": "52", - "type": "t_mapping(t_uint256,t_struct(Bond)14916_storage)" + "type": "t_mapping(t_uint256,t_struct(Bond)61837_storage)" }, { - "astId": 4186, + "astId": 48758, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "nextUnbondOutputIndex", "offset": 0, @@ -670,7 +926,7 @@ "type": "t_uint256" }, { - "astId": 4190, + "astId": 48762, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "validators", "offset": 0, @@ -678,7 +934,7 @@ "type": "t_array(t_address)dyn_storage" }, { - "astId": 4195, + "astId": 48767, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "validatorIndexes", "offset": 0, @@ -686,7 +942,7 @@ "type": "t_mapping(t_address,t_uint256)" }, { - "astId": 4198, + "astId": 48770, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "nextPriorityValidator", "offset": 0, @@ -694,7 +950,7 @@ "type": "t_address" }, { - "astId": 4205, + "astId": 48777, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "pendingBonds", "offset": 0, @@ -746,20 +1002,20 @@ "numberOfBytes": "32", "value": "t_mapping(t_address,t_uint128)" }, - "t_mapping(t_uint256,t_struct(Bond)14916_storage)": { + "t_mapping(t_uint256,t_struct(Bond)61837_storage)": { "encoding": "mapping", "key": "t_uint256", "label": "mapping(uint256 => struct Types.Bond)", "numberOfBytes": "32", - "value": "t_struct(Bond)14916_storage" + "value": "t_struct(Bond)61837_storage" }, - "t_struct(Bond)14916_storage": { + "t_struct(Bond)61837_storage": { "encoding": "inplace", "label": "struct Types.Bond", "numberOfBytes": "32", "members": [ { - "astId": 14913, + "astId": 61834, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "amount", "offset": 0, @@ -767,7 +1023,7 @@ "type": "t_uint128" }, { - "astId": 14915, + "astId": 61836, "contract": "contracts/L1/ValidatorPool.sol:ValidatorPool", "label": "expiresAt", "offset": 16,